- Colour Côte d’Ivoire (XOFFr)
- Croatia (EUR€) ashgreen/chrome
- Cyprus (EUR€)
- Show moreCzechia (CZKKč) Show less
- Denmark (DKKkr.) Djibouti (DJFFdj)
- Size Egypt (EGPج.م)
- 42 cm Equatorial Guinea (XAFCFA)
- 46 cmEritrea (GBP£)
- Estonia (EUR€) 50 cm Eswatini (GBP£)
- 54 cmEthiopia (ETBBr)
7
8
| Iceland (ISKkr) | Quantity |
|---|---|
| Decrease Quantity | Isle of Man (GBP£) |
| Italy (EUR€) | |
| Kenya (KESKSh) | |
| Kosovo (EUR€) | Sold Out - Notify Me When It’s Available |
| Liberia (GBP£) | |
|---|---|
| Liechtenstein (CHFCHF) |
| Specification | Madagascar (GBP£) | Frame
|---|---|
| Malawi (MWKMK) | Fork |
| Malta (EUR€) | Headset
| Mayotte (EUR€) | Handlebar|
| Moldova (MDLL) | Grips |
| Montenegro (EUR€) | Shifters|
| Morocco (MADد.م.) | Brakes |
| Namibia (GBP£) | Crankset|
| Netherlands (EUR€) | Crankset chainring sizes |
| Nigeria (NGN₦) | Cassette
| Poland (PLNzł) | Belt|
| Portugal (EUR€) | Rims |
| Romania (RONLei) | Front hub|
| Rwanda (RWFFRw) | Rear hub |
| Senegal (XOFFr) | Pedals |
|---|---|
| Seychelles (GBP£) | Saddle|
| Sierra Leone (SLLLe) | #relatedProducts--template--26482384994687__related { --PT: 60px; --PB: 60px; } #relatedProducts--template--26482384994687__related .tabs__nav { --text-size: calc(var(--adjust-heading) * 1.35); } @media screen and (max-width: 767px) { #relatedProducts--template--26482384994687__related .grid--mobile, #relatedProducts--template--26482384994687__related .carousel--mobile { grid-template-columns: repeat(1, minmax(0, 1fr)); } } | Seatpost
| Somalia (GBP£) | Recently viewed | Front light
|---|---|
| South Sudan (GBP£) | Rear light|
| Spain (EUR€) | Kickstand |
| Sudan (GBP£) | Mudguard|
| Svalbard & Jan Mayen (GBP£) | #SiteFooter { --PT: 100px; --PB: 10px; --bg-lighten-darken-shimmer-bg: #0d0d0d; --bg-lighten-darken-shimmer-effect: #121212; --text: #ffffff; --text-alpha-15: rgba(255, 255, 255, 0.15); --text-alpha-50: rgba(255, 255, 255, 0.6); --text-alpha-85: rgba(255, 255, 255, 0.85);--border: #ffffff;} #SiteFooter .footer-bottom { --grid-columns: 3; }Bell |
| Switzerland (CHFCHF) Buy, sell and ride in confidence on ProjektRide’s premium bikes | Carrier|
| Tanzania (TZSSh) | About Us | Engine
| Tristan da Cunha (GBP£) Blog | Battery|
| Building Your Bike From the Box | Charger
ication","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":".product-grid-item__info","show_button_on_page":false,"insert_button_after_selector_search":".grid","show_button_on_search":false,"app_proxy_path_prefix":"\/apps\/restockrocket-production","collection_link_selector":".product-grid-item__title","index_link_selector":".product-grid-item__title","page_link_selector":".product-grid-item__title","search_link_selector":".product-grid-item__title","collection_check_link_visibility":true,"collection_buttons_container":".grid","index_buttons_container":".carousel.grid--mobile .flickity-viewport","page_buttons_container":".grid","search_buttons_container":".gr
-
r":"#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":"Estimated to ship within 2 months","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"
cachedDate > maxDate));
if (useCached) {
if (Array.isArray(cachedData.plans)) {
window._RestockRocketConfig.sellingPlans = cachedData.plans;
window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || [];
console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')');
}
} else {
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"Book a Service140s: [{ id: 57747183567231, title: "Step-over \/ indigoblue\/blue \/ L", available: false, sku: "101300L", price: 409900 }, { id: 57747183599999, title: "Step-over \/ indigoblue\/blue \/ M", available: false, sku: "101300M", price: 409900 } ] };window._RestockRocketConfig.variantsInventoryPolicy = {57747183567231 : "deny",57747183599999 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {57747183567231 : 0,57747183599999 : 0,}; window._RestockRocketConfig.variantsPreorderCount = {57747183567231 : parseInt(null),57747183599999 : parseInt(null),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {57747183567231 : null,57747183599999 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {57747183567231 : parseInt(null),57747183599999 : parseInt(null),}; window._RestockRocketConfig.variantsPreorderMaxCountForMark.body.appendChild(plainScriptElement); }; restockRocketScriptElement.src = scriptUrl; document.body.appendChild(restockRocketScriptElement); } createRestockRocketContainer() console.debug('STOQ - extension activated') try { const _stoqInitConfig = window._RestockRocketConfig; const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.product.variants)) ? _stoqInitConfig.product.variants.map(function(v) { return v.id }) : []; const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id; var _stoqPageSeq = 0; try { _stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1; window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq)); } catch (e) { } Shopify?.analytics?.publish?.('stoq_initialized', { cart_token: _stoqInitConfig.cartToken || '', page_url: window.location.origin + window.location.pathname, page_type: _stoqInitConfig.pageType || '', Delivery & Returns<
ellingPlans.some(function (p) { return p && p.enabled; }); var _sqPreCount = _sqCfg.inlinePreorderIdsDropped ? _sqCfg.cachedPreorderVariantIdsCount : ((_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 === false); var _sqPre = (_sqc.cachedPreorderVariantIds && _sqc.cachedPreorderVariantIds.preorder_variant_ids) || []; var _sqAlways = []; var _sqAlwaysPlanIds = []; var _sqGateAlloc = (_sqc.readFlags && _sqc.readFlags.enable_storefront_plan_offers === true && _sqc.variantSellingPlanIds) || null; (Array.isArray(_sqc.sellingPlans) ? _sqc.sellingPlans : []).forEach(function (p) { if (!(p && p.enabled && p.inventory_provider === 'always')) return; _sqAlways = _sqAlways.concat(p.variant_ids || ntsInventoryPolicy || {})[v.id] === 'continue' && (_sqc.variantsInventoryQuantity || {})[v.id] Workshop Prices = 0); }); } else { _sqArm = (_sqc.integrations || []).some(function (i) { return i && i.type === 'featured_product' && i.enabled && Array.isArray(i.page_types) && i.page_types.indexOf(_sqc.pageType) !== -1; }); } } if (_sqArm && document.documentElement) { _sqc.acceleratedGateArmed = true; document.documentElement.classList.add('stoq-buy-now-pending'); setTimeout(function () { document.documentElement.classList.remove('stoq-buy-now-pending'); }, 6000); } } catch (e) { } window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/01a1b3f4-12aa-7f20-af90-2397b6140bd7/restockrocket-1-636/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a1b3f4-12aa-7f20-af90-2397b6140bd7/restockrocket-1-636/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptUrlCollectionFull = 'https://cdn.shopify.com/extensi Max. rider weight (kg)tch (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'); window._RestockRocketConfig.isLiquidCacheFresh = true; window._RestockRocketConfig.liquidCacheAge = null; } else { const now = Math.floor(Date.now() / 1000); const liquidCacheAge = now - liquidRenderedAt; window._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge); if (liquidCacheAge 0) { console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else if (liquidCacheAge Cycle to Work
110= 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; } if (settings.multi_language_enabled) { if (!settings.translations) { console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } if (window._RestockRocketConfig.normalizedLocale &
-
.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 || '';
var _sqVidNum = Number(variantId);
var _sqPlan = null;
var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : [];
var _sqMktId = Number(_sqTrack.marketId);
var _sqOffersOn = !!(_sqTrack.readFlags && _sqTrack.readFlags.enable_storefront_plan_offers === true);
var _sqAlloc = _sqOffersOn
? ((_sqTrack.offerAllocations && _sqTrack.offerAllocations[_sqVidNum]) ||
(_sqTrack.variantSellingPlanIds && _sqTrack.variantSellingPlanIds[_sqVidNum]))
: null;
var _sqPlanIds = function (pl)
1.50m - 1.61mlassList.contains('stoq-buy-now-pending')), blocked: (function () { try { var rr = window._RestockRocket; return !!(rr && typeof rr.willBlockAcceleratedClick === 'function' && rr.willBlockAcceleratedClick(e)); } catch (err) { return false; } })(), }, }); } 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 || {})); Mon - Fri: 08:30 - 17:30 93339,94799,93483,93520artForms|setupAddToCartForm|teardownAddToCartForm|addDiscountedPrice|removeDiscountedPrice)\b/.test(settings.js_config || ''); const preorderCollectionScriptUrl = preorderUiOnPage ? window._RestockRocketConfig.scriptUrlCollectionFull : window._RestockRocketConfig.scriptUrlCollection; const collectionScriptUrl = usePreorderBuild ? preorderCollectionScriptUrl : window._RestockRocketConfig.scriptUrlCollectionBis; const productScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlProduct : window._RestockRocketConfig.scriptUrlProductBis; 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(hijackIntegraEH9 1QN'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); }); } }); } function storefrontGraphql(query, variables) { const cfg = window._RestockRocketConfig; if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) { return Promise.reject(new Error('Storefront API unavailable')); } return fetch( `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'applSat: 9:00 - 16:00
field.value; if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); } return JSON.parse(value); }); } function fetchStorefrontSettings() { const query = 'query StoqSettings($namespace: String!) { shop { settings: metafield(namespace: $namespace, key: "settings") { value } translations: metafield(namespace: $namespace, key: "settings_translations") { value } } }'; return storefrontGraphql(query, { namespace: window._RestockRocketConfig.metafieldNamespace }) .then(function(data) { const settings = JSON.parse(data.shop.settings.value); if (!settings.updated_at) { throw new Error('settings metafield is not a settings payload'); } if (settings.single_locale_translations_inline) { settings.translations = data.shop.translations && JSON.parse(data.shop.translations.value); } if (settings.multi_language_enabled && !settings.translations) { throw new Error('settings metafield carries no translations'); } returnSun: Closed
se(function(_, reject) { setTimeout(function() { reject(new Error('timed out')); }, 1500); }) ]).catch(function(error) { console.debug('STOQ - Storefront settings read failed, using setting.json:', error.message); }) : Promise.resolve(); storefrontRead .then(function(settings) { return settings || 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(settings) { initializeScripts(settings); }) .catch(function(error) { if (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else { console.error('STOQ - failed to load settings:', error); 0131 374 5324
Accessoriessource.apply); }; const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true; if (!flagOn || source.embedOnly === true) { return viaEmbed(); } return fetchStorefrontShopMetafield(source.metafieldKey) .then(function(value) { if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); } source.apply(value); console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API'); }) .catch(function(error) { console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message); return viaEmbed(); }); } function refreshIntegrations() { const cfg = window._RestockRocketConfig; return refreshShopConfig({ endpoint: 'integrations', metafieldKey: 'integrations', flag: 'enable_storefront_integrations_read', isValid: function(value) { return Array.isArray(value); }, apply: function(datNewington Road
Home
Surly
Handlebars
Forks
Tubeless
Gears & Drivetrain
Helmets











