Header Image

  • Ukraine (UAH₴)
  • United Kingdom (GBP£)
  • United States (GBP£)
Vatican City (EUR€)
96 products
Western Sahara (MADد.م.)
Zambia (GBP£)
  •  
    £
    £
Close
  • ull\" data-mce-fragment=\"1\"\u003e\n\u003cp class=\"h2 text-center\" data-mce-fragment=\"1\"\u003e\u003cstrong\u003eSPECS \u0026amp; GEOMETRY\u003c\/strong\u003e\u003c\/p\u003e\n\u003cbr data-mce-fragment=\"1\"\u003e\n\u003cdiv class=\"bike_data_wrapper\" data-mce-fragment=\"1\"\u003e\n\u003cdiv id=\"kro_specs\" data-mce-fragment=\"1\"\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003eSPECIFICATIONS\u003c\/h3\u003e\n\u003cdiv class=\"table_wrapper\" data-mce-fragment=\"1\"\u003e\n\u003cdiv class=\"scrollable-wrapper\"\u003e\n\u003ctable data-mce-fragment=\"1\"\u003e\n\u003ctbody data-mce-fragment=\"1\"\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eFRAME MATERIAL\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eKona 6061 Aluminum Butted\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eSIZES\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce- fragment=\"1\"\u003eS, M, L, XL\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eREAR SHOCK\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003en\/a\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eFORK\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eSuntour Zeron35 140mm Tapered 110 Spacing\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eCRANKARMS\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano E8000\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eCHAINRINGS\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003e34t\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce
  • ass=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eFRONT BRAKE ROTOR\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano RT30 203mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eREAR BRAKE ROTOR\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano RT30 180mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eBRAKE LEVERS\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano M4100 Hydrualic\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eHEADSET\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eFSA No.57B\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ct d class=\"label\" data-mce-fragment=\"1\"\u003eHANDLEBAR\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eKona XC\/BC 35\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eSTEM\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eKona XC\/BC 35\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eSEATPOST\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eTranzX Dropper Internal 31.6mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eSEAT CLAMP\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eKona Clamp\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eGRIPS\u003c\/td\u003e\n\u003ctd
  • class=\"data\" data-mce-fragment=\"1\"\u003eKona Key Grip\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eSADDLE\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eWTB Volt\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eFRONT HUB\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano 110x15mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eREAR HUB\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano 148x12mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eSPOKES\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eStainless Black 14g\u003c\/td\u003e\n\u003c\/tr\u003 e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eRIMS\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eWTB ST i35 TCS 2.0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eFRONT TIRE\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eMaxxis Minion DHF EXO TR DUAL 29x2.6\"\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eREAR TIRE\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eMaxxis Minion DHR II EXO TR DUAL 29x2.4\" WT\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eDRIVEUNIT\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano E7000 20MPH\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragme
    nt=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eBATTERY\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano 504Wh\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eDISPLAY\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano SC-E7000 Display\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eCHARGER\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eShimano STEPS 2A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eBATTERYLOCK\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003en\/a\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003ePAINT COLOUR\u003c\ /td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003eMatte Midnight w\/ Blue-Grey Decals\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"label\" data-mce-fragment=\"1\"\u003eEXTRAS\u003c\/td\u003e\n\u003ctd class=\"data\" data-mce-fragment=\"1\"\u003en\/a\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"specs_notice\" data-mce-fragment=\"1\"\u003eAll specifications are subject to change without notice\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"kro_geo\" data-mce-fragment=\"1\"\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003e\u003cbr\u003e\u003c\/h3\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003e\u003cbr\u003e\u003c\/h3\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003eGEOMETRY\u003c\/h3\u003e\n\u003cdiv class=\"geowrapper\" data-mce-fragment=\"1\"\u003e\n\u003cdiv class=\"table_wrapper\" data-mce-fragment=\"1\"\u003e\n\u003cdiv class=\"scrollable-wrappe
    • class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e677\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"geo_numbers\" style=\"width: 6.40488%;\" data-mce-fragment=\"1\"\u003e3\u003c\/td\u003e\n\u003ctd class=\"label\" style=\"width: 41.7503%;\" data-mce-fragment=\"1\"\u003eREACH\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e425\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 13.047%;\" data-mce-fragment=\"1\"\u003e450\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e475\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e510\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"geo_numbers\" style=\"width: 6.40488%;\" data-mce-fragment=\"1\"\u003e4\u003c\/td\u003e\n\u003ctd class=\"label\" style=\"width: 41.7503%;\" data-mce-fragment=\"1\" \u003eSTACK\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e645\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 13.047%;\" data-mce-fragment=\"1\"\u003e650\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e659\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e668\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"geo_numbers\" style=\"width: 6.40488%;\" data-mce-fragment=\"1\"\u003e5\u003c\/td\u003e\n\u003ctd class=\"label\" style=\"width: 41.7503%;\" data-mce-fragment=\"1\"\u003eSTANDOVER\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e739\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 13.047%;\" data-mce-fragment=\"1\"\u003e736\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e734\u003c\/td\u003
    • 003e\n\u003ctd class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e76.0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"geo_numbers\" style=\"width: 6.40488%;\" data-mce-fragment=\"1\"\u003e9\u003c\/td\u003e\n\u003ctd class=\"label\" style=\"width: 41.7503%;\" data-mce-fragment=\"1\"\u003eCS LENGTH\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e435\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 13.047%;\" data-mce-fragment=\"1\"\u003e435\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e435\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e435\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"geo_numbers\" style=\"width: 6.40488%;\" data-mce-fragment=\"1\"\u003e10\u003c\/td\u003e\n\u003ctd class=\"label\" style=\"width: 41.7503%;\" dat a-mce-fragment=\"1\"\u003eBB DROP\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e55\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 13.047%;\" data-mce-fragment=\"1\"\u003e55\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e55\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e55\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"geo_numbers\" style=\"width: 6.40488%;\" data-mce-fragment=\"1\"\u003e11\u003c\/td\u003e\n\u003ctd class=\"label\" style=\"width: 41.7503%;\" data-mce-fragment=\"1\"\u003eBB HEIGHT\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e320\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 13.047%;\" data-mce-fragment=\"1\"\u003e320\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003
    • \"1\"\u003e551\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e551\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"altercolor\" data-mce-fragment=\"1\"\u003e\n\u003ctd class=\"geo_numbers\" style=\"width: 6.40488%;\" data-mce-fragment=\"1\"\u003e15\u003c\/td\u003e\n\u003ctd class=\"label\" style=\"width: 41.7503%;\" data-mce-fragment=\"1\"\u003eFORK OFFSET\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e51\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 13.047%;\" data-mce-fragment=\"1\"\u003e51\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.0981%;\" data-mce-fragment=\"1\"\u003e51\u003c\/td\u003e\n\u003ctd class=\"data\" style=\"width: 12.8098%;\" data-mce-fragment=\"1\"\u003e51\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003e\n\u003cimg src=\"https:\/\/www.konaworld.com\/cdn\/shop\/f iles\/bike_geo_diagram.png?v=3528582685429196360\" alt=\"Bike Geometry\" width=\"392\" height=\"213\" data-mce-fragment=\"1\" data-mce-src=\"https:\/\/www.konaworld.com\/cdn\/shop\/files\/bike_geo_diagram.png?v=3528582685429196360\"\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!----\u003e"};window._RestockRocketConfig.variantsInventoryPolicy = {45664082460898 : "deny",45664082493666 : "deny",45664082526434 : "deny",45664082559202 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {45664082460898 : parseInt("0"),45664082493666 : parseInt("0"),45664082526434 : parseInt("0"),45664082559202 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {45664082460898 : parseInt(""),45664082493666 : parseInt(""),45664082526434 : parseInt(""),45664082559202 : parseInt(""),}; window
    • | []).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/01a0141e-6f2a-7bbb-b429-5a0e333a31f5/restockrocket-1-564/assets/restockrocket-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/restoc krocket-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\/?)?$/); 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
    • 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 <
    • < 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
    • var _sqVidNum = Number(variantId); var _sqPlan = null; var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; var _sqMktId = Number(_sqTrack.marketId); var _sqForVariant = function (pl) { return pl && pl.enabled && Array.isArray(pl.variant_ids) && pl.variant_ids.indexOf(_sqVidNum) !== -1; }; _sqPlans.forEach(function (pl) { if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled && Array.isArray(pl.shopify_market_ids) && pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; } }); if (!_sqPlan) { _sqPlans.forEach(function (pl) { if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; } }); } Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', { variant_id: variantId, product_id: (_sqTrack.product && _sqTra 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; }; return has(_sqTrack.inStockVariantIds) || h
    • (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 - 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 (!response.ok) { throw new Error('Storefront API HTTP ' + response.s
    • 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) { 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_ids || []; } }), fetchEmbed