Header Image

Recently viewed Rwanda (RWFFRw) Sudan (GBP£) "2026-06-13T11:53:49+01:00","alt":null,"width":2000,"height":1212,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/111201.jpg?v=1781348029","variant_ids":[57747200049535,57747200082303,57747200115071,57747200147839]},"available":false,"name":"CUBE TOURING HYBRID PRO 800 PEARLGREY\/GREY - Trapeze \/ pearlgrey\/grey \/ 58 cm","public_title":"Trapeze \/ pearlgrey\/grey \/ 58 cm","options":["Trapeze","pearlgrey\/grey","58 cm"],"price":279900,"weight":32360,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571495792","featured_media":{"alt":null,"id":71336115503487,"position":8,"preview_image":{"aspect_ratio":1.65,"height":1212,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/111201.jpg?v=1781348029"}},"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', storefrontLangu - Step-over \/ pearlgrey\/grey \/ 50 cm","public_title":"Step-over \/ pearlgrey\/grey \/ 50 cm","options":["Step-over","pearlgrey\/grey","50 cm"],"price":279900,"weight":32360,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571495723","featured_media":{"alt":"CUBE TOURING HYBRID PRO 800 PEARLGREY\/GREY","id":71336115274111,"position":1,"preview_image":{"aspect_ratio":1.597,"height":1252,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/111200.jpg?v=1781348029"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747199787391,"title":"Step-over \/ pearlgrey\/grey \/ 54 cm","option1":"Step-over","option2":"pearlgrey\/grey","option3":"54 cm","sku":"11120054","requires_shipping":true,"taxable":true,"featured_image":{"id":84875967168895,"product_id":15720157151615,"position":1,"created_at":"2026-06-13T11:53:46+01:00","updated_at":"2026-06-13T11:53:49+01:00","alt":"CUBE TOURING HYBRID PRO 800 PEARLGREY\/GREY","wi Svalbard & Jan Mayen (GBP£) Sweden (SEKkr)
Servicing
Switzerland (CHFCHF)
Book a Service
56494086914431,56494086947199,56494086979967,56494087045503,56494087078271,56494087111039,56494087143807,56494087176575,56494087209343,56494087274879,56494087340415,56494087373183,56494087405951,56494087799167,56494088356223,56494088454527,56494090289535,56504701485439,56504701518207,56504701550975,56504701583743,56504701616511,56504701649279,56504839209343,56504839242111,56504839274879,56504839307647,56504839340415,56504839373183,56504921981311,56504922014079,56504922046847,56504922079615,56504922112383,56504922145151,56504922177919,56504922210687,56504922243455,56504950489471,56504950522239,56504950555007,56504950587775,56504950620543,56504950653311,56504950686079,56504950718847,56504950751615,56504961139071,56504961171839,56504961204607,56504961237375,56504961270143,56504961302911,56504961335679,56504961368447,56504961401215,56505064489343,56505064522111,56505064554879,56505064587647,56505064620415,56505064653183,56505064685951,56505064718719,56505064751487,56505064784255,56505064817023,56505064849791,5650
Workshop PricesTanzania (TZSSh) 545791,56766086644095,56766086676863,56766086840703,56766183342463,56766183375231,56766183473535,56766183506303,56766183539071,56766183571839,56766183637375,56766183670143,56766183768447,56766183801215,56766183833983,56766183932287,56766183997823,56766184096127,56766184128895,57284689789311,57284689822079,57284689854847,57284689887615,57284689920383,57284689953151,57284689985919,57284690018687,57284690051455,57284690084223,57284690116991,57284690149759,57284690182527,57284690215295,57284690248063,57284690280831,57284690313599,57284690346367,57284690379135,57284690411903,57311934513535,57311934546303,57311934579071,57311934611839,57318991724927,57318991790463,57318991823231,57319008797055,57319008829823,57319008862591,57319008895359,57392715465087,57392715497855,57392715530623,57392715563391,57392715596159,57578627137919,57578627170687,57579681808767,57579681841535,57579681874303,57579681907071,57579681939839,57579773362559,57579773395327,57579773428095,57579773460863,57579773493631,57579861377407,575798614101
7596177645951,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,57602996011391,57602996044159,57602996076927,57602996109695,57602996142463,57602996175231,57602996207999,57602996240767,57602996273535,57602996306303,57602996339071,57602996371839,57602996404607,57602996437375,57602996470143,57602996502911,57602996535679,57602996568447,57602996601215,57602996633983,57602996666751,57602996699519,57602996732287,57602996765055,57602996797823,57602996830591,57602996863359,57602996928895,57602996961663,57602996994431,57602997027199,57602997059967,57602997092735,57602997223807,57602997256575,57602997289343,57602
97855,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,57933602292095,57933603471743,57933608026495,57933609304447,57933609337215,57933609369983,57933609402751,57933609435519,57933609501055,57933609566591,57933609632127,57933610484095,57933610746239,57933610779007,57933611598207,57933611630975,57933611663743,57933611827583,57933611860351,57933613105535,57933613203839,57933613236607,57933613269375,57933613302143,57933613334911,57933615759743,57933615825279,57933617070463,57933618217343,57933618282879,57933618413951,57933618479487],"updated_at":"2026-07-30T03:48:46Z","market_locations_enabled":false,"ma
Cycle to Work 017616255,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_pro Sun: Closed99900,"available":false,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":57747194413439,"title":"Step-through \/ Easy Entry \/ grey\/chrome \/ 42 cm","option1":"Step-through \/ Easy Entry","option2":"grey\/chrome","option3":"42 cm","sku":"114200EE42","requires_shipping":true,"taxable":true,"featured_image":{"id":84875960484223,"product_id":15720156430719,"position":1,"created_at":"2026-06-13T11:52:53+01:00","updated_at":"2026-06-13T11:52:56+01:00","alt":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME","width":2000,"height":1333,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200.jpg?v=1781347976","variant_ids":[57747194413439,57747194446207,57747194478975,57747194511743,57747194544511]},"available":false,"name":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME - Step-through \/ Easy Entry \/ grey\/chrome \/ 42 cm","public_title":"Step-through \/ Easy Entry \/ grey\/chrome \/ 42 cm","options":["Step-through \/ Tunisia (GBP£)
Newington Roadktride.co.uk\/cdn\/shop\/files\/114200.jpg?v=1781347976"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747194511743,"title":"Step-through \/ Easy Entry \/ grey\/chrome \/ 54 cm","option1":"Step-through \/ Easy Entry","option2":"grey\/chrome","option3":"54 cm","sku":"114200EE54","requires_shipping":true,"taxable":true,"featured_image":{"id":84875960484223,"product_id":15720156430719,"position":1,"created_at":"2026-06-13T11:52:53+01:00","updated_at":"2026-06-13T11:52:56+01:00","alt":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME","width":2000,"height":1333,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200.jpg?v=1781347976","variant_ids":[57747194413439,57747194446207,57747194478975,57747194511743,57747194544511]},"available":false,"name":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME - Step-through \/ Easy Entry \/ grey\/chrome \/ 54 cm","public_title":"Step-through \/ Easy Entry \/ grey\/chrome \/ 54 cm","options":["Step-thr
Edinburgh/files\/114200.jpg?v=1781347976","variant_ids":[57747194413439,57747194446207,57747194478975,57747194511743,57747194544511]},"available":false,"name":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME - Step-through \/ Easy Entry \/ grey\/chrome \/ 58 cm","public_title":"Step-through \/ Easy Entry \/ grey\/chrome \/ 58 cm","options":["Step-through \/ Easy Entry","grey\/chrome","58 cm"],"price":299900,"weight":34860,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571499189","featured_media":{"alt":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME","id":71336108622207,"position":1,"preview_image":{"aspect_ratio":1.5,"height":1333,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200.jpg?v=1781347976"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/114200.jpg?v=1781347976","\/\/projektride.co.uk\/cdn\/shop\/files\/114200_D_00.jpg?v=1781347976","\/\/projektridEH9 1QNpect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200_D_00.jpg?v=1781347976","width":2000},{"alt":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME image 3","id":71336108687743,"position":3,"preview_image":{"aspect_ratio":1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200_D_01.jpg?v=1781347976"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200_D_01.jpg?v=1781347976","width":2000},{"alt":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME image 4","id":71336108720511,"position":4,"preview_image":{"aspect_ratio":1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200_D_02.jpg?v=1781347976"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/114200_D_02.jpg?v=1781347976","width":2000},{"alt":"CUBE SUPREME HYBRID COMFORT PRO 600 GREY\/CHROME image 5","id":71336108753279,"position": tr\u003e\n\u003cth\u003eMax. system weight (kg)\u003c\/th\u003e\n\u003ctd\u003e140\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eMax. rider weight (kg)\u003c\/th\u003e\n\u003ctd\u003e110\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBody size\u003c\/th\u003e\n\u003ctd\u003e1.50m - 1.61m\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eAccessories\u003c\/th\u003e\n\u003ctd\u003e93339,94799,93483,93520\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {57747194413439 : "deny",57747194446207 : "deny",57747194478975 : "deny",57747194511743 : "deny",57747194544511 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {57747194413439 : parseInt("0"),57747194446207 : parseInt("0"),57747194478975 : parseInt("0"),57747194511743 : parseInt("0"),57747194544511 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {57747194413439 : parseInt(""),5 se; 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.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) { /* fail open */ } window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019faf5b-94c9-7a24-9306-bf1118ca3099/restockrocket-1-554/assets/restockrocket-product.js' window._RestockRocketConfig.scr EME_EXTENSION_API_HOST is unset), so the // setting.json + fetchEmbedConfig calls below route to the same host as the // rest of the extension's API traffic instead of staying on the baked host. window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io' // Deployed extension build number, read from the CDN asset host Shopify generates: // https://cdn.shopify.com/extensions/
await import("//projektride.co.uk/cdn/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js"); uuid>/
handle>- version>/assets/... // Trailing digits (e.g. ".../restockrocket-1-521/assets/" -> "521"). Kept numeric to // match ParseStoqData, so funnel app_version lines up with the order-attribution // app_version. Reflects the ACTUAL deployed build. This is the SINGLE source of the // parsed version — preorder.js getAppVersion() reads it back off config rather than // re-parsing, so the regex lives in exactly one place. 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; // 15 minutes in milliseconds const LIQUID_CACHE_MAX_AGE = 15 * 60; // 15 minutes in seconds // Calculate Liquid cache freshness once at initialization const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; // Validate timestamp and calculate ca
<
<
Countrytranslation data in metafield // Metafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const
<GBP£: _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 // derivation block above) — nothing to bypass otherwise. variant_id is read per-clicked-button // from its fo
(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: (_sqTrack.product && _sqTrack.product.id) || '', channel: channel, market_id: _sqTrac
er_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); })(), // Narrow, authoritative preorder signal: enrolled in an ENABLED STOQ selling plan // (is_preorder_variant above is the broad OOS+continue heuristic — non-STOQ too). in_enabled_plan: !!_sqPlan, // In-stock preorder signal: enrolled but currently IN STOCK (in the inStockVariantIds // set, not the OOS preorderVariantIds set). Same live-OR-cached pattern as // is_preorder_variant. is_preorder_variant OR is_instock_variant = "should sell via // the plan" regardless of stock, so an in-stock preorder bypass is detectable too. is_

_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 || {})); delete settings.translations;

Åland Islands (EUR€)
  • Albania (ALLL)
  • Algeria (DZDد.ج)
  • Andorra (EUR€)
  • Angola (GBP£)
  • Armenia (AMDդր.)
  • Ascension Island (SHP£)
    Austria (EUR€)
  • Belarus (GBP£)
  • Belgium (EUR€)