Ascension Island (SHP£) Czechia (CZKKč)
Header Image
Austria (EUR€) Denmark (DKKkr.)
Egypt (EGPج.م)
  • Equatorial Guinea (XAFCFA)
  • Eritrea (GBP£)
Estonia (EUR€)
Eswatini (GBP£) Iceland (ISKkr) Terms of ServiceMoldova (MDLL)

Service Isle of Man (GBP£)

Montenegro (EUR€)
Servicing Italy (EUR€)
Morocco (MADد.م.)
Jersey (GBP£)
Mozambique (GBP£)
Workshop Prices
Kenya (KESKSh)
Cycle to Work Namibia (GBP£) Close Delivery & Returns Kosovo (EUR€)
Netherlands (EUR€) Information Newington Road Lesotho (GBP£) Edinburgh Nigeria (NGN₦) EH9 1QN [email protected] Libya (GBP£) Norway (GBP£)
await import("//projektride.co.uk/cdn/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js");
Portugal (EUR€)
GBP£
Réunion (EUR€) Åland Islands (EUR€)
Romania (RONLei) Tristan da Cunha (GBP£) Rwanda (RWFFRw) Algeria (DZDد.ج) Andorra (EUR€) Malta (EUR€) Türkiye (GBP£) São Tomé & Príncipe (STDDb) Mauritania (GBP£) Senegal (XOFFr) Uganda (UGXUSh) Armenia (AMDդր.) Ascension Island (SHP£) ":2048},{"alt":null,"id":71714650915199,"position":2,"preview_image":{"aspect_ratio":1.5,"height":1365,"width":2048,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Nitrogen-NIT.M.384B-Logo.jpg?v=1783525108"},"aspect_ratio":1.5,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Nitrogen-NIT.M.384B-Logo.jpg?v=1783525108","width":2048},{"alt":null,"id":71714650947967,"position":3,"preview_image":{"aspect_ratio":1.2,"height":1706,"width":2048,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/NIT.M.384B.2D.1-front.jpg?v=1783525108"},"aspect_ratio":1.2,"height":1706,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/NIT.M.384B.2D.1-front.jpg?v=1783525108","width":2048},{"alt":null,"id":71714650980735,"position":4,"preview_image":{"aspect_ratio":1.501,"height":1364,"width":2048,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Nitrogen-NIT.M.384A.2D.1_profil_ae2769c8-52c1-4515-9850-c44e5979cf72.png?v=1783525109"},"aspect_ratio":1.501,"height":1364,"media_type":"image","s 03eThis version is supplied in the Shimano Ultegra Di2 configuration and is available in Cosmic Teal, Harvest Moon.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eNitrogen carbon road platform\u003c\/li\u003e\n\u003cli\u003eIntegrated cable routing\u003c\/li\u003e\n\u003cli\u003eModern aero road geometry\u003c\/li\u003e\n\u003cli\u003eHydraulic disc brake setup on complete bike models\u003c\/li\u003e\n\u003cli\u003eAvailable colours: Cosmic Teal, Harvest Moon\u003c\/li\u003e\n\u003cli\u003eAvailable sizes: XXS 44-46, XS 47-50, S 51-53, M 54-56, L 57-59, XL 60-62\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eKey specification\u003c\/h3\u003e\u003ctable\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eFrame\u003c\/th\u003e\n\u003ctd\u003eNitrogen carbon aero frame\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFork\u003c\/th\u003e\n\u003ctd\u003eNitrogen carbon aero fork\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eGroupset\u003c\/th\u003e\n\u003ctd\u003eShimano Ultegra Mayotte (EUR€) "deny",57933599605119 : "deny",57933599637887 : "deny",57933599670655 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {57933599310207 : parseInt("0"),57933599342975 : parseInt("2"),57933599375743 : parseInt("0"),57933599408511 : parseInt("0"),57933599441279 : parseInt("0"),57933599474047 : parseInt("0"),57933599506815 : parseInt("0"),57933599539583 : parseInt("1"),57933599572351 : parseInt("0"),57933599605119 : parseInt("0"),57933599637887 : parseInt("0"),57933599670655 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {57933599310207 : parseInt(""),57933599342975 : parseInt(""),57933599375743 : parseInt(""),57933599408511 : parseInt(""),57933599441279 : parseInt(""),57933599474047 : parseInt(""),57933599506815 : parseInt(""),57933599539583 : parseInt(""),57933599572351 : parseInt(""),57933599605119 : parseInt(""),57933599637887 : parseInt(""),57933599670655 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {57933599310207 : nuSeychelles (GBP£) United Kingdom (GBP£) ckRocketConfig.variantsShippingText = {57933599310207 : "",57933599342975 : "",57933599375743 : "",57933599408511 : "",57933599441279 : "",57933599474047 : "",57933599506815 : "",57933599539583 : "",57933599572351 : "",57933599605119 : "",57933599637887 : "",57933599670655 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {57933599310207 : null,57933599342975 : null,57933599375743 : null,57933599408511 : null,57933599441279 : null,57933599474047 : null,57933599506815 : null,57933599539583 : null,57933599572351 : null,57933599605119 : null,57933599637887 : null,57933599670655 : null,}; window._RestockRocketConfig.selected_variant_id = 57933599342975; window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available; try { var _sqCfg = window._RestockRocketConfig; var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) && _sq Moldova (MDLL) 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 Sierra Leone (SLLLe) United States (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; } 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 & Belarus (GBP£) < nitConfig.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.href, page_type: _stoqInitConfig.pageType || '', shop_domain: _stoqInitConfig.shop || '', market_id: _stoqInitConfig.marketId || '', country_code: _stoqInitConfig.countryIsoCode || '', detected_variant_ids: _stoqDetectedVariantIds, selected_variant_id: _stoqSelectedVariantId || '', page_load_seq: _stoqPageSeq, liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0, app_version: _stoqInitConfig.appVersion || '', Belgium (EUR€) (function(key) { const value = translatedFields[key]; if (value !== null && value !== undefined && value !== '') { settings[key] = value; } }); } else { console.debug('STOQ - No translated fields found for locale:', normalizedLocale); } delete settings.translations; return settings; } catch (e) { console.debug('STOQ - error applying translations:', e); return settings; } } function setupCartSellingPlanUpdater(settings) { 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 ?v=1783525128"},"aspect_ratio":1.501,"height":1364,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Sum-377B-Cockpit_1.jpg?v=1783525128","width":2048},{"alt":null,"id":71714657796479,"position":4,"preview_image":{"aspect_ratio":1.501,"height":1364,"width":2048,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Sum-377B-Logo_1.jpg?v=1783525128"},"aspect_ratio":1.501,"height":1364,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Sum-377B-Logo_1.jpg?v=1783525128","width":2048},{"alt":null,"id":71714657829247,"position":5,"preview_image":{"aspect_ratio":1.501,"height":1364,"width":2048,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SUM.377A.2D1_Side_03e23126-e045-4cde-9d8f-abeccfcb49e6.png?v=1783525129"},"aspect_ratio":1.501,"height":1364,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SUM.377A.2D1_Side_03e23126-e045-4cde-9d8f-abeccfcb49e6.png?v=1783525129","width":2048}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003ch2\u003eArgo tatus); } 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.storefrontSettings = JSON.parse(value); console.debug('STOQ - stored live settings from Storefront API on config.storefrontSettings'); }) .catch(function(e) { console.debug('STOQ - Storefront settings fetch failed (non-fatal):', e && e.message); }); } if (typeof window.requestIdleCallback === 'function') { window.requestIdleCallback(run, { timeout: 5000 }); } else { setTimeout(run, 0); } })(); const cachedSettings = window._RestockRocketConfig.cachedSett
u003ctable\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eFrame\u003c\/th\u003e\n\u003ctd\u003eSUM carbon frame\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFork\u003c\/th\u003e\n\u003ctd\u003eSUM specific carbon fork\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eGroupset\u003c\/th\u003e\n\u003ctd\u003eShimano Ultegra Di2 R8150\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eWheelset\u003c\/th\u003e\n\u003ctd\u003eScope R4\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eTyres\u003c\/th\u003e\n\u003ctd\u003eVittoria Corsa N.EXT TLR 28mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBrakes\u003c\/th\u003e\n\u003ctd\u003eShimano Ultegra hydraulic disc brakes\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCockpit\u003c\/th\u003e\n\u003ctd\u003eIntegrated aero road cockpit components\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCable routing\u003c\/th\u003e\n\u003ctd\u003eIntegra Montenegro (EUR€) ot 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); } }) .catch(function(e) { console.error(e) }) } function fetchEmbedConfig(endpoint, apply) { return fetch( `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`, { headers: { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' } } ) .then(function(response) { if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`); return response.json(); }) .then(function(data) { try { apply(data); } catch (applyError) {
Slovenia (EUR€) : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {57933609304447 : parseInt(""),57933609337215 : parseInt(""),57933609369983 : parseInt(""),57933609402751 : parseInt(""),57933609435519 : parseInt(""),57933609468287 : parseInt(""),57933609501055 : parseInt(""),57933609533823 : parseInt(""),57933609566591 : parseInt(""),57933609599359 : parseInt(""),57933609632127 : parseInt(""),57933609664895 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {57933609304447 : null,57933609337215 : null,57933609369983 : null,57933609402751 : null,57933609435519 : null,57933609468287 : null,57933609501055 : null,57933609533823 : null,57933609566591 : null,57933609599359 : null,57933609632127 : null,57933609664895 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {57933609304447 : parseInt(""),57933609337215 : parseInt(""),57933609369983 : parseInt(""),57933609402751 : parseInt(""),57933609435519 : parseInt(""),57933609468287 : parseInt(""),57933609501Western Sahara (MADد.م.) Config('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) { setupCartSellingPlanUpdater(settings); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans) && window._RestockRocketConfig.sellingPlans.some(function(plan) { return plan && plan.enabled; }); const hasDisabledPlanIds = Array.isArray(window._RestockRocketConfig.disabledSellingPlanIds) && w
et-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a0141e-6f2a-7bbb-b429-5a0e333a31f5/restockrocket-1-564/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/01a0141e-6f2a-7bbb-b429-5a0e333a31f5/restockrocket-1-564/assets/restockrocket-product-bis.js' window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/extensions/01a0141e-6f2a-7bbb-b429-5a0e333a31f5/restockrocket-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\/?)?$/); wind html.stoq-buy-now-pending .shopify-payment-button{pointer-events:none!important}
< Morocco (MADد.م.)
Somalia (GBP£) & !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 Bosnia & Herzegovina (BAMКМ) 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 Botswana (BWPP) Cyprus (EUR€) United Kingdom (GBP£) Czechia (CZKKč) United States (GBP£) Denmark (DKKkr.)
Vatican City (EUR€)
#productTemplate--template--26482384994687__main { --PT: 60px; --PB: 30px; }
Slovakia (EUR€)
Slovenia (EUR€)
St. Helena (SHP£)