- 003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003eFORK\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eKona Project Two Cromoly Disc 180\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eCRANKARMS\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eFSA Comet Modular\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003eCHAINRINGS\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e38t\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eB\/B\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eFSA Road Mega EXO 68mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003ePEDALS\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eKona JS2\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eCHAIN\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eShimano Deore\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n Stems 003c\/td\u003e\n\u003ctd class=\"data\"\u003eShimano RT54 180mm (centerlock)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eREAR BRAKE ROTOR\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eShimano RT54 180mm (centerlock)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003eBRAKE LEVERS\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eShimano Altus\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eHEADSET\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eFSA No.1\/No.10\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003eHANDLEBAR\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eKona Aluminum Riser\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eSTEM\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eKona Commuter\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003eSEATPOST\u003c\/td\ Ghana (GBP£) Early Rider 1 a\"\u003eStainless Black 14g\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eRIMS\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eWTB ST i23 TCS 2.0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003eFRONT TIRE\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eWTB Horizon Road Plus Comp w\/ Puncture Protection 650x47c\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eREAR TIRE\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eWTB Horizon Road Plus Comp w\/ Puncture Protection 650x47c\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"label\"\u003ePAINT COLOR\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eGloss Metallic Blue w\/ Charcoal \u0026amp; Turquoise Decals\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"label\"\u003eEXTRAS\u003c\/td\u003e\n\u003ctd class=\"data\"\u003eFenders w\/ Mudflaps\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e ProjektRide Merchandise 003e\n\u003ctd class=\"data\"\u003e420\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e470\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e520\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e580\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"geo_numbers\"\u003e2\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eTT LENGTH\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e551\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e598\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e637\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e680\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"geo_numbers\"\u003e3\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eREACH\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e404\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e430\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e446\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e471\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"geo_numbers\"\u003e4\u003c\/td\u003e\n\u003ctd class=\"labSuggested search terms Grips & Bar-Tape electricblue/blue _numbers\"\u003e7\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eHT LENGTH\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e115\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e155\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e195\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e215\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"geo_numbers\"\u003e8\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eST ANGLE\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e75.0\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e74.0\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e73.0\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e72.0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"geo_numbers\"\u003e9\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eCS LENGTH\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e450\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e450\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e450\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e450\u003c\/td\u003e\n\u003c\/tr\u003e Argon 18
- 78\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"geo_numbers\"\u003e13\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eFRONT CENTER\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e636\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e675\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e705\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e736\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"geo_numbers\"\u003e14\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eFORK LENGTH\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e410\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e410\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e410\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e410\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\"\u003e\n\u003ctd class=\"geo_numbers\"\u003e15\u003c\/td\u003e\n\u003ctd class=\"label\"\u003eFORK OFFSET\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e50\u003c\/td\u003e\n\u003ctd class=\"data\"\u003e50\u003c\/td\u003e\n\u003ctd class=\ Helmets Gibraltar (GBP£) into the shop or get in touch via email\/phone to get the ball rolling. If you are not 100% sure with bike sizing, please feel free to contact us to double check.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eAll bike sales include a free running in service after 6-10 weeks.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e"};window._RestockRocketConfig.variantsInventoryPolicy = {43916540805346 : "deny",43916540870882 : "deny",43916540936418 : "deny",43916541001954 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {43916540805346 : parseInt("0"),43916540870882 : parseInt("0"),43916540936418 : parseInt("0"),43916541001954 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {43916540805346 : parseInt(""),43916540870882 : parseInt(""),43916540936418 : parseInt(""),43916541001954 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {43916540805346 : null,43916540870882 : null,43916540936418 : null,43916541001954 : null,}; win Headsets 2 ans) && _sqCfg.sellingPlans.some(function (p) { return p && p.enabled; }); var _sqPreCount = ((_sqCfg.cachedPreorderVariantIds && _sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length; _sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount); } catch (e) { } try { var _sqc = window._RestockRocketConfig; var _sqOn = !!(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout); var _sqPre = (_sqc.cachedPreorderVariantIds && _sqc.cachedPreorderVariantIds.preorder_variant_ids) || []; var _sqArm = false; if (_sqOn && _sqc.preordersConfigured) { if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) { _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1; }); } else { _sqArm = (_sqc.integrations || []).some(function (i) { return i && i.type === 'featured_product' && i.enabled && Array.isArray(i.page_types) && i.page_types.indeAbout Us stockrocket-1-564/assets/restockrocket-collection-bis.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io' try { const _stoqVersionMatch = window._RestockRocketConfig.scriptHost.match(/(\d+)\/?(?:assets\/?)?$/); window._RestockRocketConfig.appVersion = (_stoqVersionMatch && _stoqVersionMatch[1]) || ''; } catch (e) { window._RestockRocketConfig.appVersion = ''; } const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; const LIQUID_CACHE_MAX_AGE = 15 * 60; const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); Gloves electricblue/chrome < Greece (EUR€)
-
& !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const age = Date.now() - updatedAt.getTime(); if (age Clothing Second-Hand Bikes 3 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') try { const _stoqInitConfig = window._RestockRocketConfig; const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqI liquid_cache_age: _stoqInitConfig.liquidCacheAge, inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], }); } catch (e) { console.debug('STOQ - stoq_initialized publish failed:', e); } try { var _sqTrack = window._RestockRocketConfig; if (_sqTrack.preordersConfigured) { document.addEventListener('click', function (e) { try { var t = e.target; if (!t || !t.closest) return; var host = t.closest('.shopify-payment-button, shopify-payment-terms'); if (!host) return; var channel = host.matches && host.matches('shopify-payment-terms') ? 'shop_pay_installments' : 'buy_now'; var form = host.closest('form'); var vidEl = form && form.querySelector('[name="id"]'); var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || ''; Blog BrakesGreenland (DKKkr.) See Moreelectricblue/dazzle ck.product.id) || '', channel: channel, market_id: _sqTrack.marketId || '', country_code: _sqTrack.countryIsoCode || '', page_type: _sqTrack.pageType || '', cart_token: _sqTrack.cartToken || '', page_url: (window.location && window.location.href) || '', properties: { is_preorder_variant: (function () { var vid = Number(variantId); var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; }; return has(_sqTrack.preorderVariantIds) || has(_sqTrack.cachedPreorderVariantIds && _sqTrack.cachedPreorderVariantIds.preorder_variant_ids); })(), in_enabled_plan: !!_sqPlan, is_instock_variant: (function () { var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; }; re Socks - se; } })(), }, }); } catch (err) { } }, true); } } catch (e) { } function applyTranslations(settings) { try { 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) { console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields == See More '); } else { console.debug('STOQ - no cart selling plan updates needed'); } }) .catch(error => { console.error('STOQ - error updating cart selling plans:', error); }); } }); } (function loadStorefrontSettings() { const cfg = window._RestockRocketConfig; if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) return; 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 (!responsTrack Service Progress 4 nst cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : 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 (!res Guadeloupe (EUR€) Shop All Second-Hand apply(data); } catch (applyError) { 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}`); if (!window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_refresh_on_stale_liquid) { console.debug('STOQ - Liquid cache stale, refreshing selling_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_ flashstone/chrome w._RestockRocketConfig.disabledSellingPlanIds) && window._RestockRocketConfig.disabledSellingPlanIds.length > 0; const usePreorderBuild = settings.preorder_enabled || hasEnabledOffer || hasDisabledPlanIds; const collectionScriptUrl = usePreorderBuild ? 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)Building Your Bike From the Box Complete Brakes
- Essentials Guernsey (GBP£) Custom Builds Insure Your Bike Brake Rotors See More See Morefoggrey/grey
- Brake PadsPrivacy PolicyGuinea (GNFFr) 6 Cleaners, Degreasers and Lubrication Custom Builds for sale Brake SparesCookie Policy foggrey/reflex Guinea-Bissau (XOFFr)
- Accessories Custom Build Inspiration Terms of Service 7 Forks Maintenance Hungary (HUFFt) Frostbite Blue, Gloss See MoreRefund policy
- Services 8 Iceland (ISKkr) Front Suspension See MoreG2 - Khaki Green Sell Your Bike
- Rear Suspension Ireland (EUR€) 9 Contact Us My Account WorkshopG2 - Midnight Blue
- Finance Isle of Man (GBP£) See More 10 + Finishing KitOpen cart galaxy/orange Italy (EUR€) Workshop Prices
Looking to purchase with a cycle to work scheme? TubelessTerms of ServiceMalta (EUR€) See More
Click here Refund policy Iridescent Charcoal, Gloss to get in touch and get the ball rolling! Mauritania (GBP£) Handlebars
Surly Preamble Drop Bar due May 2023. Please get in contact with us to reserve one today. Stems
Mauritius (MUR₨) Iridium SilverFeatures:
Belgium (EUR€) Grips & Bar-Tape100% Surly Chromoly Frame and Fork Open cart
Clothing and Protection Mayotte (EUR€)Sizes available from XS, SMALL, MEDIUM, LARGE and Extra Large. Headsetsirongrey/black
Benin (XOFFr) See More











