4847,56518717440383,56518717473151,56518717538687,56518717571455,56518717604223,56518717636991,56518717669759,56518717833599,56518717866367,56518717931903,56518717964671,56518717997439,56518718030207,56518718062975,56518718095743,56518718128511,56518718161279,56518718194047,56518790545791,56518790578559,56518790611327,56518790644095,56518790676863,56518805651839,56518805684607,56518805717375,56518805750143,56518805782911,56561153933695,56766086054271,56766086185343,56766086250879,56766086381951,56766086447487,56766086513023,56766086840703,56766183342463,56766183375231,56766183407999,56766183440767,56766183473535,56766183506303,56766183539071,56766183571839,56766183637375,56766183670143,56766183768447,56766183801215,56766183833983,56766183932287,56766183965055,56766183997823,56766184030591,56766184096127,56766184128895,57284689789311,57284689822079,57284689854847,57284689887615,57284689920383,57284689953151,57284689985919,57284690018687,57284690051455,57284690084223,57284690116991,57284690149759,57284690182527South Sudan (GBP£)
96171321727,57596171354495,57596171387263,57596171420031,57596171452799,57596175384959,57596175417727,57596175450495,57596175483263,57596176138623,57596176171391,57596176204159,57596176236927,57596176269695,57596176302463,57596176335231,57596176367999,57596176662911,57596176695679,57596176728447,57596176761215,57596176793983,57596176859519,57596176925055,57596177056127,57596177088895,57596177121663,57596177252735,57596177285503,57596177351039,57596177383807,57596177416575,57596177449343,57596177514879,57596177547647,57596177613183,57596177645951,57596177809791,57596177842559,57596177875327,57596177908095,57602995126655,57602995159423,57602995192191,57602995224959,57602995257727,57602995290495,57602995323263,57602995356031,57602995388799,57602995421567,57602995454335,57602995487103,57602995519871,57602995552639,57602995585407,57602995618175,57602995650943,57602995683711,57602995716479,57602995749247,57602995782015,57602995814783,57602995847551,57602995880319,57602995913087,57602995945855,57602995978623,5760299
487,57603001713023,57603001745791,57603001778559,57603001844095,57603001876863,57603001942399,57603002007935,57603002040703,57603002073471,57603002106239,57603002204543,57603002237311,57603002270079,57603002302847,57603002335615,57603002368383,57603002466687,57603002499455,57603002532223,57603003089279,57603003122047,57603003154815,57603003187583,57603003220351,57603003253119,57603003285887,57603003318655,57603003351423,57603003384191,57933586399615,57933586432383,57933588693375,57933588726143,57933589676415,57933589873023,57933591314815,57933592297855,57933592330623,57933592396159,57933592461695,57933592494463,57933592527231,57933592559999,57933592592767,57933592658303,57933592691071,57933592789375,57933593444735,57933593674111,57933594001791,57933594034559,57933594067327,57933594263935,57933594362239,57933594395007,57933595017599,57933595967871,57933598228863,57933598425471,57933599342975,57933599539583,57933600096639,57933600293247,57933601603967,57933601636735,57933601669503,57933602193791,57933602226559, Switzerland (CHFCHF) ant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-07-09T23:00:55Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_enabled":true,"preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_d
lse,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discountSpain (EUR€) Header Image clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];(function() { const cachedData = {"plans":[{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_enabled":true,"preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_descrip
vider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_descriptio Tanzania (TZSSh) se complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}],"disabled_plan_ids":[713813721471,713176482175,714631872895],"cached_at":"2026-04-09T09:16:46Z"}; if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) { // Find the maximum updated_at from all items in old array const oldPlans = window._RestockRocketConfig.sellingPlans; const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0 ? oldPlans.reduce(function(max, plan) { // Parse dates for proper comparison (handles mixed ISO formats) if (plan.updated_at) { const planDate = new Date(pla
'[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')'); } } else { // When using old format (stale cache), don't trust disabled_plan_ids window._RestockRocketConfig.disabledSellingPlanIds = []; console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')'); } } })();window._RestockRocketConfig.enabledNotifyMeVariantIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_confSt. Helena (SHP£)
geared drivetrains. They feature stop screws that thread in from the rear to further secure the wheel and to position the rear wheel for optimal shifting, plus a forward-mounted stop screw on the drive side to keep the wheel from slipping forward under the force of your gargantuan legs. The rear dropouts are spaced 135mm instead of 132.5mm like the Cross-Check simply because there are far more options for disc hubs in this spacing.\u003c\/p\u003e\n\u003cp\u003eStraggler shares all of the Cross-Check's braze-ons for fenders, racks and bottle cages. The Straggler's geometry is slightly different, with angles and tube lengths very close but not identical to the Cross-Check, but like the Cross-Check it's ready to take you just about anywhere. It's a day tripper and a weekender. It's a \"rough road\" road bike. It's a cyclocross bike with no pretense about racing. It's a utilitarian townie. It's a light-duty touring bike. It's an all-weather commuter. And when you get tired of one set up, you can swap parts around anyway? The easy answer is to say that we added disc brakes to a Cross-Check and this is close to accurate. People have asked us to make a disc version of our highly versatile Cross-Check for a long time now and almost everything about the two are very similar. Straggler is slightly different, though.\u003c\/p\u003e\n\u003cp\u003eThe most obvious difference of course is that the Straggler has disc caliper mounts instead of rim brake studs. It'll accept rotors up to 160mm. The rear dropouts are unique, too. They're a partially closed horizontal design that accommodates singlespeed or geared drivetrains. They feature stop screws that thread in from the rear to further secure the wheel and to position the rear wheel for optimal shifting, plus a forward-mounted stop screw on the drive side to keep the wheel from slipping forward under the force of your gargantuan legs. The rear dropouts are spaced 135mm instead of 132.5mm like the Cross-Check simply because there are far more options for disc hubs in this spacin
03e\u003cspan class=\"ui-list-info\"\u003eFrame 100% Surly proprietary 4130 CroMoly tubing\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eFork\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003e4130 CroMoly, disc only\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eHeadset\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eDia Compe\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eHandlebar\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eGenetic Flare Road Bar\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eStem\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eGenetic SLR\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eBar Tape\u003c\/span\u003e\u003c Tristan da Cunha (GBP£) nfo\"\u003eSRAM X1 11s\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eCrankset\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eSRAM Rival 1x 42T\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eCassette\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eSRAM 11 Speed\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eBottom Bracket\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eSRAM GXP\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eBrakes\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eTRP Spyre\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli class=\"ui-list_item\"\u003e\n\u003cspan class=\"ui-list-title\"\u003eWheels\u003c\/span\u003e\u003cspan class=\"ui-list-info\"\u003eHalo Vapour\u003c\/span\u003e\n\u003c\/li\u
l,56279203774847 : null,56279203807615 : null,56279203840383 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {56279203742079 : parseInt(""),56279203774847 : parseInt(""),56279203807615 : parseInt(""),56279203840383 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {56279203742079 : null,56279203774847 : null,56279203807615 : null,56279203840383 : null,}; window._RestockRocketConfig.variantsShippingText = {56279203742079 : "",56279203774847 : "",56279203807615 : "",56279203840383 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {56279203742079 : null,56279203774847 : null,56279203807615 : null,56279203840383 : null,}; window._RestockRocketConfig.selected_variant_id = 56279203742079; window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;// STOQ-1595/1612 shared signal, Svalbard & Jan Mayen (GBP£) = LIQUID_CACHE_MAX_AGE) { console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`); window._RestockRocketConfig.isLiquidCacheFresh = false; } } function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Check if translations are enabled but missing from cache // This handles the backfill period where DB has translations but metafield doesn't if (settings.multi_language_enabled) { if (!settings.translations) { // Translations enabled but no Switzerland (CHFCHF)
age = Date.now() - updatedAt.getTime(); if (age
SETTINGS_CACHE_DURATION) { console.debug('STOQ - settings changed recently, skipping cache'); return null; } return settings; } catch (error) { console.debug('STOQ - Error checking settings cache:', error); return null; } } function createRestockRocketContainer() { const restockRocketContainer = document.createElement('div'); restockRocketContainer.id = 'restock-rocket'; document.body.appendChild(restockRocketContainer); } function createRestockRocketScript(scriptUrl) { const restockRocketScriptElement = document.createElement('script'); restockRocketScriptElement.setAttribute('defer', 'defer'); restockRocketScriptElement.src = scriptUrl; document.body.appendChild(restockRocketScriptElement); } createRestockRocketContainer() console.debug('STOQ - extension activated') // Fire stoq_initialized once per page load so the funnel pipeline has a definitive // "our code ran on this page" signal independent of any cusUganda (UGXUSh)
ctedVariantId || '', liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0, app_version: _stoqInitConfig.appVersion || '', liquid_cache_age: _stoqInitConfig.liquidCacheAge, // Selected variant's stock posture as our app saw it at render — explains // whether we *should* have treated it as a preorder candidate. inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], }); } catch (e) { console.debug('STOQ - stoq_initialized publish failed:', e); } // STOQ-1595: publish stoq_accelerated_checkout_clicked for every accelerated-checkout // click (Buy Now / dynamic checkout / Shop Pay installments) on ALL surfaces, before our // bundle loads, via one delegated capture-phase listener (catches late-rendered buttons). // Only on shops with preorders configured (shared `preordersConfigured` signal from the // derivati
st('form'); var vidEl = form && form.querySelector('[name="id"]'); var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || ''; // The enabled STOQ selling plan the clicked variant belongs to (if any), found once and // reused for in_enabled_plan / enrolled_plan_id / enrolled_plan_provider below. var _sqVidNum = Number(variantId); var _sqPlan = null; // Array.isArray guard (not `|| []`) so a truthy non-array sellingPlans can't throw and // silently drop the whole publish. var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; _sqPlans.forEach(function (pl) { if (!_sqPlan && pl && pl.enabled && Array.isArray(pl.variant_ids) && pl.variant_ids.indexOf(_sqVidNum) !== -1) { _sqPlan = pl; } }); Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', { variant_id: variantId, product_id: (_sqTr Tanzania (TZSSh)
cceleratedGateArmed, gate_active_at_click: !!(document.documentElement && document.documentElement.classList.contains('stoq-buy-now-pending')), }, }); } catch (err) { /* never break checkout */ } }, true); } } catch (e) { /* fail open */ } function applyTranslations(settings) { try { // Skip translation logic entirely if multi-language is not enabled if (!settings || !settings.multi_language_enabled) { return settings; } if (!settings.translations) { console.debug('STOQ - No translations found, skipping translation'); return settings; } const normalizedLocale = window._RestockRocketConfig.normalizedLocale; const translations = settings.translations; if (!normalizedLocale) { // No matching locale has translations; drop payload to save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})Ukraine (UAH₴)
tion setupCartSellingPlanUpdater(settings) { // Setup listener regardless - updateCartSellingPlans has its own guards // This ensures cleanup happens even when preorders are disabled globally // Listen for stoq:inventory-data-loaded event dispatched by api.js window.addEventListener('stoq:inventory-data-loaded', function(event) { console.debug('STOQ - Inventory data loaded, updating cart selling plans'); if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => { if (hasUpdates) { console.debug('STOQ - cart selling plans updated successfully'); } else { console.debug('STOQ - no cart selling plan updates needed'); } }) .catch(error => { console.error('STOQ - error updating cart selling plans:', error); }); } }); } // ---- Live settings via the Storefront API (ad < "settings") { value } } }'; fetch( `https://${cfg.shop}/api/2025-07/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken, }, body: JSON.stringify({ query: query, variables: { namespace: cfg.metafieldNamespace } }), } ) .then(function(response) { if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } return response.json(); }) .then(function(body) { if (body && body.errors && body.errors.length) { throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', ')); } const value = body && body.data && body.data.shop && body.data.shop.metafield && body.data.shop.metafield.value; if (!value) { throw new Error('Storefront API returned no settings metafield value'); } cfg.sto

an_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_enabled":true,"preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_descript ion_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text","countdown_timer_text_color":"#000000"," countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];(function() { const cachedData = {"plans":[{"shopify_selling_plan_
group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_enabled":true,"preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show _shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"marke
ts_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text" ,"countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}],"disabled_plan_ids":[7138137214
71,713176482175,714631872895],"cached_at":"2026-04-09T09:16:46Z"}; if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) { // Find the maximum updated_at from all items in old array const oldPlans = window._RestockRocketConfig.sellingPlans; const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0 ? oldPlans.reduce(function(max, plan) { // Parse dates for proper comparison (handles mixed ISO formats) if (plan.updated_at) { const planDate = new Date(plan.updated_at); const maxDate = max ? new Date(max) : null; return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max; } return max; }, '') : null; // Use cached if old array is empty/has no timestamps, or cached is newer // Parse dates for comparison to handle format differences (+00:00 vs .000Z) const ca chedDate = new Date(cachedData.cached_at); const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : null; const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate)); if (useCached) { if (Array.isArray(cachedData.plans)) { window._RestockRocketConfig.sellingPlans = cachedData.plans; // Only use disabled_plan_ids when using cached plans window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || []; console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')'); } } else { // When using old format (stale cache), don't trust disabled_plan_ids window._RestockRocketConfig.disabledSellingPlanIds = []; console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')'); } } })();window._RestockRocketConfig.enabledNotifyMeVari
antIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfig.product = {"id":15289117835647,"title":"Kinesis 4S 2x10 Tiagra","handle":"kinesis-4s-1","description":"\u003cp\u003eIntroducing the brand-new Kinesis 4S Tiagra, a modern aluminium road bike designed for those who seek a balance between speed and adventur e. We've taken our acclaimed Kinesis R1 and worked hard to improve every detail to improve every ride.\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eThe 4S Tiagra is built around the same proven frame and fork as our highly praised, group test-winning R1 bike which Cycling Plus magazine proclaimed had \"Understated class and excellent ride quality\" and BikeRadar.com said had “instant zing when pressing the pedals\". The lightweight double-butted 6061 Alloy tube blend provides a responsive ride feel, and the impeccable weld quality and attention to detail ensure high standards. Additionally, the internal down tube cable routing keeps the bike clean and easy to service. It features a Shimano 2x10 drivetrain, offering a wide gear range suitable for diverse terrains. The 4S Tiagra also comes ready to ride with mudguards fitted, making it suitable for all seasons.\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eThe custom full UD carbon fork reduces road buzz and offers precise handling, whia positive rise, and all 3x10mm spacers under the stem).\u003c\/li\u003e\n\u003cli\u003eSeatpost needs fitting (saddle attached to post).\u003c\/li\u003e\n\u003cli\u003eThe pedal washers are tied to the crank arms.\u003c\/li\u003e\n\u003cli\u003eThe Kinesis 4S bike has been checked prior to packing, however before your first ride the bike must have a PDI (Pre Delivery Inspection) by an authorised Kinesis Dealer.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAlso the 4S bike comes with some spares and manuals in a separate box, in the bike box:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFront rotor lockring (as mentioned above).\u003c\/li\u003e\n\u003cli\u003eWheel reflectors.\u003c\/li\u003e\n\u003cli\u003eFrame reflectors.\u003c\/li\u003e\n\u003cli\u003eQuick Release axle manuals.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ctable class=\"upgtbl\"\u003e\n\u003ctbody\u003e\n\u 003ctr class=\"upgtbltrtle upgtblstle\"\u003e\n\u003ctd\u003eFrame Size Seat Tube\u003c\/td\u003e\n\u003ctd\u003eS* (51)\u003c\/td\u003e\n\u003ctd\u003eM (54)\u003c\/td\u003e\n\u003ctd\u003eL (57)\u003c\/td\u003e\n\u003ctd\u003eXL (60)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd colspan=\"8\"\u003e \u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eSeat Tube Length C-T\u003c\/td\u003e\n\u003ctd\u003e490\u003c\/td\u003e\n\u003ctd\u003e540\u003c\/td\u003e\n\u003ctd\u003e570\u003c\/td\u003e\n\u003ctd\u003e600\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eTop Tube Length Effective\u003c\/td\u003e\n\u003ctd\u003e532\u003c\/td\u003e\n\u003ctd\u003e545\u003c\/td\u003e\n\u003ctd\u003e561\u003c\/td\u003e\n\u003ctd\u003e580\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eHead Length\u003c\/td\u003e\n\u003ctd\u003e130\u003c\/td\u003e\n\u003ctd\u003e1
46\u003c\/td\u003e\n\u003ctd\u003e172\u003c\/td\u003e\n\u003ctd\u003e204\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eHead Tube Angle\u003c\/td\u003e\n\u003ctd\u003e71\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eSeat Tube Angle\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eBottom Bracket Drop\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eChain Stay Length\u003c\/td\u003e\n\u003ctd\u003e420\u003c\/td\u003e\n\u003ctd\u003e420\u003c\/td\u003e\n \u003ctd\u003e420\u003c\/td\u003e\n\u003ctd\u003e420\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eFront Centre\u003c\/td\u003e\n\u003ctd\u003e590.7\u003c\/td\u003e\n\u003ctd\u003e595\u003c\/td\u003e\n\u003ctd\u003e611.8\u003c\/td\u003e\n\u003ctd\u003e631.8\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eWheelbase\u003c\/td\u003e\n\u003ctd\u003e1001\u003c\/td\u003e\n\u003ctd\u003e1005\u003c\/td\u003e\n\u003ctd\u003e1022\u003c\/td\u003e\n\u003ctd\u003e1042\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eStack\u003c\/td\u003e\n\u003ctd\u003e538\u003c\/td\u003e\n\u003ctd\u003e557\u003c\/td\u003e\n\u003ctd\u003e582\u003c\/td\u003e\n\u003ctd\u003e612\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eReach\u003c\/td\u003e\n\u003ctd\u003e378\u003c\/td\u003e\n\u003ctd\u003e385\u003c\/td\u003e\n\u003ctd\u003e394\u003c\/td\u003e

-butted 6061 Alloy tube blend provides a responsive ride feel, and the impeccable weld quality and attention to detail ensure high standards. Additionally, the internal down tube cable routing keeps the bike clean and easy to service. It features a Shimano 2x10 drivetrain, offering a wide gear range suitable for diverse terrains. The 4S Tiagra also comes ready to ride with mudguards fitted, making it suitable for all seasons.\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eThe custom full UD carbon fork reduces road buzz and offers precise handling, while the Kinesis Rider Fit Geometry ensures comfortable all-day rides. With four sizes to choose from, finding the perfect bike fit is made simple. Get ready to experience the perfect blend of performance and adventure with the Kinesis 4S Tiagra.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFrame\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e— Lightweight double butted 6061 All oy tube blend that delivers a light and responsive ride feel.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFork\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e— Custom full 'UD carbon' fork keeps weight low and takes out road buzz whilst feeling direct and accurate at all times.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGroupset\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e— Full Tiagra 4700 20-speed groupset.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrakes\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e— Hydraulic Shimano Tiagra disc brakes are brilliantly reliable and handle the stopping duties with minimum effort.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTyres\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e— Maxxis Pursuer in 32c, hitting the sweet spot for grip, cornering and low rolling resistance.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cst

rong\u003eAdditional Info:\u003c\/strong\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf ordered online, the 4S bike will be delivered 95% built.\u003c\/li\u003e\n\u003cli\u003eThe rotor will need fitting to front wheel (rotor is boxed between the front wheel and frame, and the lockring is in the spares\/manuals box).\u003c\/li\u003e\n\u003cli\u003eThe front wheel needs fitting.\u003c\/li\u003e\n\u003cli\u003eYou’ll need to align the front brake\u003c\/li\u003e\n\u003cli\u003eHandlebars need fitting to the stem (the stem comes fitted with a positive rise, and all 3x10mm spacers under the stem).\u003c\/li\u003e\n\u003cli\u003eSeatpost needs fitting (saddle attached to post).\u003c\/li\u003e\n\u003cli\u003eThe pedal washers are tied to the crank arms.\u003c\/li\u003e\n\u003cli\u003eThe Kinesis 4S bike has been checked prior to packing, however before your first ride the bike must have a PDI (Pre Delivery Inspection) by an authorised Kinesis Dealer.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003 cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAlso the 4S bike comes with some spares and manuals in a separate box, in the bike box:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFront rotor lockring (as mentioned above).\u003c\/li\u003e\n\u003cli\u003eWheel reflectors.\u003c\/li\u003e\n\u003cli\u003eFrame reflectors.\u003c\/li\u003e\n\u003cli\u003eQuick Release axle manuals.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ctable class=\"upgtbl\"\u003e\n\u003ctbody\u003e\n\u003ctr class=\"upgtbltrtle upgtblstle\"\u003e\n\u003ctd\u003eFrame Size Seat Tube\u003c\/td\u003e\n\u003ctd\u003eS* (51)\u003c\/td\u003e\n\u003ctd\u003eM (54)\u003c\/td\u003e\n\u003ctd\u003eL (57)\u003c\/td\u003e\n\u003ctd\u003eXL (60)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd colspan=\"8\"\u003e \u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eSeat Tube Length C-T\u003c\/td\
u003e\n\u003ctd\u003e490\u003c\/td\u003e\n\u003ctd\u003e540\u003c\/td\u003e\n\u003ctd\u003e570\u003c\/td\u003e\n\u003ctd\u003e600\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eTop Tube Length Effective\u003c\/td\u003e\n\u003ctd\u003e532\u003c\/td\u003e\n\u003ctd\u003e545\u003c\/td\u003e\n\u003ctd\u003e561\u003c\/td\u003e\n\u003ctd\u003e580\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eHead Length\u003c\/td\u003e\n\u003ctd\u003e130\u003c\/td\u003e\n\u003ctd\u003e146\u003c\/td\u003e\n\u003ctd\u003e172\u003c\/td\u003e\n\u003ctd\u003e204\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eHead Tube Angle\u003c\/td\u003e\n\u003ctd\u003e71\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eSeat Tube Angle\u003c\/td\u003e\n\u003 ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eBottom Bracket Drop\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eChain Stay Length\u003c\/td\u003e\n\u003ctd\u003e420\u003c\/td\u003e\n\u003ctd\u003e420\u003c\/td\u003e\n\u003ctd\u003e420\u003c\/td\u003e\n\u003ctd\u003e420\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eFront Centre\u003c\/td\u003e\n\u003ctd\u003e590.7\u003c\/td\u003e\n\u003ctd\u003e595\u003c\/td\u003e\n\u003ctd\u003e611.8\u003c\/td\u003e\n\u003ctd\u003e631.8\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eWheelbase\u003c\/td\u003e\n\u003ctd\u003e1001\u003c
\/td\u003e\n\u003ctd\u003e1005\u003c\/td\u003e\n\u003ctd\u003e1022\u003c\/td\u003e\n\u003ctd\u003e1042\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eStack\u003c\/td\u003e\n\u003ctd\u003e538\u003c\/td\u003e\n\u003ctd\u003e557\u003c\/td\u003e\n\u003ctd\u003e582\u003c\/td\u003e\n\u003ctd\u003e612\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eReach\u003c\/td\u003e\n\u003ctd\u003e378\u003c\/td\u003e\n\u003ctd\u003e385\u003c\/td\u003e\n\u003ctd\u003e394\u003c\/td\u003e\n\u003ctd\u003e404\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"upgtblstle\"\u003eFork Axle to Crown\u003c\/td\u003e\n\u003ctd\u003e378\u003c\/td\u003e\n\u003ctd\u003e378\u003c\/td\u003e\n\u003ctd\u003e378\u003c\/td\u003e\n\u003ctd\u003e378\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"upgtbltrhl\"\u003e\n\u003ctd class=\"upgtblstle\"\u003eFork Rake\u003c\/td\u003e\n\u003ctd\u003e45\u003c\/td\u003e\n\u003ctd\u003e45\u003c\ Home/td\u003e\n\u003ctd\u003e45\u003c\/td\u003e\n\u003ctd\u003e45\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd colspan=\"8\"\u003e \u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {56063296373119 : "deny",56063296405887 : "deny",56063296438655 : "deny",56063296471423 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {56063296373119 : parseInt("8"),56063296405887 : parseInt("8"),56063296438655 : parseInt("8"),56063296471423 : parseInt("8"),}; window._RestockRocketConfig.variantsPreorderCount = {56063296373119 : parseInt(""),56063296405887 : parseInt(""),56063296438655 : parseInt(""),56063296471423 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {56063296373119 : null,56063296405887 : null,56063296438655 : null,56063296471423 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {56063296373119 : parseInt(""),56063296405887 : parseInt(""




e // critical init flow and never competes with it for a connection — the call // is a live, uncached Storefront round-trip and can be slow (multi-second // TTFB observed). Nothing on the critical path waits for it. function run() { const query = 'query StoqSettings($namespace: String!) { shop { metafield(namespace: $namespace, key: "settings") { value } } }'; fetch( `https://${cfg.shop}/api/2025-07/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken, }, body: JSON.stringify({ query: query, variables: { namespace: cfg.metafieldNamespace } }), } ) .then(function(response) { if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } return response.json(); }) .then(function(body) { if (body && body.errors && body.errors.length) { Error) { // Apply failures are programming bugs (e.g. response shape changed // server-side and the assignment threw). Surface them as console.error // so they're visible in browser logs, then re-throw to fall through // to the same Liquid-cached fallback as a fetch failure. console.error('STOQ - apply failed for ' + endpoint + ':', applyError); throw applyError; } }) .catch(function(error) { console.debug(`STOQ - using cached ${endpoint}:`, error.message); }); } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); // Stale-Liquid resilience (default-on, per-shop opt-out via the // `disable_refresh_on_stale_liquid` Toggle, surfaced as the negative // `disable_refresh_on_stale_liquid` flag in settings.json so that // `undefined` -- in CDN-cached ? window._RestockRocketConfig.scriptUrlCollection : window._RestockRocketConfig.scriptUrlCollectionBis; const productScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlProduct : window._RestockRocketConfig.scriptUrlProductBis; const pageType = window._RestockRocketConfig.pageType; const collectionPageTypes = ['collection', 'index', 'search', 'page']; if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) { createRestockRocketScript(collectionScriptUrl); } else if(pageType === 'product') { createRestockRocketScript(productScriptUrl); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(usePreorderBuild) { // cart/article/blog/list-collections: full build so the cart sweep runs. createRestockRocketScript(window._RestockRocketConfig.scriptUrlCo
dSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializeScripts(validCachedSettings); } else { console.debug('STOQ - fetching fresh settings'); const headers = { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' }; if (window.Shopify?.theme?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; } fetch( `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, { headers } ) .then(function(response) { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(function(settielling_plans + integrations'); Promise.race([ Promise.all([ fetchEmbedConfig('selling_plans', function(data) { if (data && Array.isArray(data.plans)) { window._RestockRocketConfig.sellingPlans = data.plans; window._RestockRocketConfig.disabledSellingPlanIds = data.disabled_plan_ids || []; } }), fetchEmbedConfig('integrations', function(data) { if (Array.isArray(data)) { window._RestockRocketConfig.integrations = data; } }) ]), new Promise(function(resolve) { setTimeout(resolve, 1000); }) ]).then(function() { loadScripts(settings); }); return; } loadScripts(settings); } function loadScripts(settings) { // Setup cart selling plan updater BEFORE loading any scripts to avoid race conditions setupCartSellingPlanUpdater(settings); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.inte
7
Cockpit
8 9 Decrease Quantity Increase Quantity
Ball head Cube Integrated, Top 1 1/8", Bottom 1 1/2"
Send Newmen Advanced 318.0, Carbon, 740mm10 +
Stem Newmen Evolution SL 318.4, 31.8mmQuantity
Handlebar tape/Grips Acid React Pro
Wheels
Add to Cart £2,500.00
Wheels Newmen Evolution XA25, 28/28 Spokes, 15x110mm / 12x148mm, Tubeless Ready
Front tire Schwalbe Racing Ray, Super Race, Addix Speed, Kevlar, 2.25£2,500.00
Rear tire Schwalbe Racing Ralph, Super Race, Addix Speed, Kevlar, 2.25
 
Other parts
  window.appBlockPlacements ||= []; if (window.klarnaAppBlocksManager) { window.klarnaAppBlocksManager.push({ productVariants: [{"id":45661795647714,"title":"Medium - 46","option1":"Medium - 46","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"BOMBTRACK BEYOND+ Complete Bike - Medium - 46","public_title":"Medium - 46","options":["Medium - 46"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661795680482,"title":"Large - 51","option1":"Large - 51","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"BOMBTRACK BEYOND+ Complete Bike - Large - 51","public_title":"Large - 51","options":["Large - 51"],"price":275000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661809443042,"title":"Extra Large - 56","option1":"Extra Large - 56","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"BOMBTRACK BEYOND+ Complete Bike - Extra Large - 56","public_title":"Extra Large - 56","options":["Extra Large - 56"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}], templateName: 'product', dataKey: 'top-strip-promotion-badge', storefrontCurrency: 'GBP', storefrontCountry: 'GB', storefrontLanguage: 'en', shopLocale: 'en', shopDomain: 'projektride.co.uk', variantPrice: '250000', cartPrice: '0', selector: 'shopify-osm-AZVZWMXA0Y041VmdBL__klarna_on_site_messaging_app_block_8gNReH', topPadding: '0', bottomPadding: '30', }); } else { window.appBlockPlacements.push({ productVariants: [{"id":45661795647714,"title":"Medium - 46","option1":"Medium - 46","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"BOMBTRACK BEYOND+ Complete Bike - Medium - 46","public_title":"Medium - 46","options":["Medium - 46"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661795680482,"title":"Large - 51","option1":"Large - 51","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"BOMBTRACK BEYOND+ Complete Bike - Large - 51","public_title":"Large - 51","options":["Large - 51"],"price":275000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661809443042,"title":"Extra Large - 56","option1":"Extra Large - 56","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"BOMBTRACK BEYOND+ Complete Bike - Extra Large - 56","public_title":"Extra Large - 56","options":["Extra Large - 56"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}], templateName: 'product', shopLocale: 'en', dataKey: 'top-strip-promotion-badge', storefrontCurrency: 'GBP', storefrontCountry: 'GB', storefrontLanguage: 'en', shopDomain: 'projektride.co.uk', variantPrice: '250000 ', cartPrice: '0', selector: 'shopify-osm-AZVZWMXA0Y041VmdBL__klarna_on_site_messaging_app_block_8gNReH', topPadding: '0', bottomPadding: '30', }); } Click here to get in touch and get the ball rolling!
Saddle Natural Fit Venec Lite WS
Seatpost Newmen Advanced Custom, Carbon, 27.2mm
Seatpost clampCube Varioclose, 31.8mm
PedalsLooking to purchase with a cycle to work scheme? Supplied without pedals / Supplied without pedals

Frequently Asked Questions

  • Please get in touch with a member of the team either by phone ( 01313745324 ) or email ( [email protected] ) where on of the team will be more than happy to help.

    ProjektRide Bike Shop Edinburgh

  • If the item is showing in stock, we aim to post the product within 24 hours. Please allow 5 working days to receive the item.

    Postage is free on orders over £50. Orders under £50, our postage charge is £3.99.

    We also have a physical store, if you are local please pop in -

    ProjektRide Bike Shop Edinburgh

    82 Newington Road, EH91QN, Edinburgh.

Handlebar