Header Image

Gears & Drivetrain
See More
Components
  • Complete Wheels
  • Tubeless
  • Tools & Maintenance
  • Clothing and Protection
  • See More
  • ProjektRide Merchandise
  • Helmets Gloves
Socks
Essentials
Sell Your Bike
  • Finance
  • Log in
  • Create account
  • Country GBP£
Åland Islands (EUR€)
Congo - Brazzaville (XAFCFA) Ireland (EUR€) British Indian Ocean Territory (USD$)
Cameroon (XAFCFA) Show less
  • Denmark (DKKkr.)
  • Cape Verde (CVE$)
  • Djibouti (DJFFdj)
  • Central African Republic (XAFCFA) Material
  • Egypt (EGPج.م)
  • Chad (XAFCFA)
Belgium (EUR€) AluminumSmall - 50
Equatorial Guinea (XAFCFA)
Cyprus (EUR€) Kenya (KESKSh) Carbon Small - 52Cameroon (XAFCFA)
Comoros (KMFFr) AlloyBosnia & Herzegovina (BAMКМ) UNISIZE
Estonia (EUR€)
  • Congo - Kinshasa (CDFFr)
Botswana (BWPP) X-Small - 650b
Eswatini (GBP£)
Djibouti (DJFFdj) Lesotho (GBP£) XL 60-62 Chad (XAFCFA)
Côte d’Ivoire (XOFFr) Bulgaria (EUR€)
Faroe Islands (DKKkr.)
  • Cyprus (EUR€) Show more
  • Show lessFinland (EUR€)
Eritrea (GBP£) Liechtenstein (CHFCHF) xs Congo - Kinshasa (CDFFr)
Czechia (CZKKč)
Extra SmallBurundi (BIFFr)
France (EUR€)
Estonia (EUR€) Lithuania (EUR€) X-Small Côte d’Ivoire (XOFFr)
Denmark (DKKkr.) Eswatini (GBP£) Luxembourg (EUR€) x-small Croatia (EUR€)
Djibouti (DJFFdj)
SCape Verde (CVE$)
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 metafield payloads that predate this // key -- reads as `!undefined === true` and gets default-on behavior // immediately, no metafield rewrite required). // When the Liquid CDN cache is older than LIQUID_CACHE_MAX_AGE the in-page // selling_plans / integrations metafields can be wrong; refresh both from // the API before launching scr
} }), 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.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) // STOQ-1520: serve the lean back-in-stock-only build (no preorder/hijack code) // only to shops with NO preorder plans. Use the full build if preorder is o
onPageTypes = ['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.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enabled for ${pageType}`); } // Dispatch custom event when app is loaded // Cart selling plan updates will be triggered by stoq:inventory-data-loaded event const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockR