Header Image

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 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 || '', 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 as(_sqTrack.cachedInStockVariantIds && _sqTrack.cachedInStockVariantIds.in_stock_variant_ids); })(), enrolled_plan_id: (_sqPlan && (_sqPlan.shopify_selling_plan_id || _sqPlan.shopify_selling_plan_group_id)) || '', enrolled_plan_provider: (_sqPlan && _sqPlan.inventory_provider) || '', block_enabled: !!(_sqTrack.cachedSettings && _sqTrack.cachedSettings.block_accelerated_checkout), gate_armed: !!_sqTrack.acceleratedGateArmed, gate_active_at_click: !!(document.documentElement && document.documentElement.classList.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; } })(), }, }); 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 -
atus); } 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.cachedSettit 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) { clags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) { window._RestockRocketConfig.readFlags = data.read_flags; } }), 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) { 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



gured to fit the bill as Zero-Hesitation Go-To for whatever your pleasure. Un-rack it for all the park laps, pedal it on character-building epics, push it up spooky steep darksides “nobody” knows about. Whatever the question, unhard your decisions.Cameroon (XAFCFA)   YOU ASK. IT GIVES. .

Cape Verde (CVE$)
Central African Republic (XAFCFA)

165 MM

FRAME TRAVELChad (XAFCFA)

  Comoros (KMFFr)

170 MM

Congo - Brazzaville (XAFCFA)

FORK TRAVEL

 Congo - Kinshasa (CDFFr)

29"

Côte d’Ivoire (XOFFr)

FRONT WHEEL SIZE

 Croatia (EUR€)

27.5"

Cyprus (EUR€)

REAR WHEEL SIZE

 Czechia (CZKKč)

63.5°

Denmark (DKKkr.)

HEAD TUBE ANGLE

 Djibouti (DJFFdj)

76.9°

Egypt (EGPج.م)

EFF. SEAT ANGLE

Equatorial Guinea (XAFCFA)

HIGHLIGHTS

Eritrea (GBP£)
  • Fox Factory 38 Grip 2 and Fox Factory DHX2 shock
  • Estonia (EUR€)
  • Fox Transfer dropper post
  • MX DT Swiss EX1700 custom wheelset
  • Eswatini (GBP£)
  • 4 piston brakes
  • ODI Elite Pro grips
  • Ethiopia (ETBBr)
  • 220mm front and 200mm rear rotors
  • Maxxis Assegai 2.5 and DHR II 2.4 EXO+ tyres
  • Faroe Islands (DKKkr.)
  • SLS Coil Spring on frame only
Finland (EUR€)

FRAME HIGHLIGHTSFrance (EUR€)

  • 63.5-degree head tube angle
  • French Southern Territories (EUR€)
  • 76.9-degree seat tube angle
  • 165mm rear travel paired with a 170mm fork
  • Gabon (XOFFr)
  • Sizes: SM-XL
  • Threaded bottom bracket
  • Gambia (GMDD)
  • High-clearance downtube
  • Dual-density downtube protection
  • Georgia (GBP£)
  • Universal Derailleur Hanger (UDH)
  • Secure, fully enclosed internal cable management
  • Germany (EUR€)
  • Compatible with long dropper posts
  • 100% standard sealed Enduro Max bearings
  • Ghana (GBP£)
  • Floating collet axle pivot design
  • Compact-wishbone shock extender
  • Gibraltar (GBP£)
  • Boost spacing
Greece (EUR€)

YOU ASK. IT GIVES.Greenland (DKKkr.)

Moldova (MDLL) Monaco (EUR€) Montenegro (EUR€) Morocco (MADد.م.) Mozambique (GBP£) Namibia (GBP£) Netherlands (EUR€) Niger (XOFFr) Nigeria (NGN₦) North Macedonia (MKDден) Norway (GBP£) Poland (PLNzł) Portugal (EUR€) Réunion (EUR€) Romania (RONLei) Rwanda (RWFFRw) San Marino (EUR€) São Tomé & Príncipe (STDDb) Senegal (XOFFr) Serbia (RSDРСД)
BB SRAM DUB BSA73
GRIPS ODI ELITE PRO
BAR BURGTEC RIDE WIDE ALLOY ENDURO 35X780MM
STEM BURGTEC ENDURO MK3 35X50MM
CRANK SRAM GX EAGLE 30T 170MM
SADDLE SILVERADO CUSTOM
BRAKES SRAM CODE R
DERAILLEUR SRAM GX EAGLE
CASSETTE SRAM GX EAGLE 1275 10-52
CHAIN SRAM GX EAGLE
SHIFTER SRAM GX EAGLE
SEATPOST ONEUP DROPPER POST 31.6MM / SM: 150MM, MD: 180MM, LG-XL: 210MM
BASHGUARD MRP AMG SL BASH GUIDE

Seychelles (GBP£)

Please note: Specifications are subject to change without notice.



GEOMETRYSierra Leone (SLLLe)

All measurements are shown in millimetres.

Slovakia (EUR€)
Slovenia (EUR€) Somalia (GBP£) South Africa (GBP£) South Sudan (GBP£) Spain (EUR€) St. Helena (SHP£) Sudan (GBP£) Svalbard & Jan Mayen (GBP£) Sweden (SEKkr) Switzerland (CHFCHF) Tanzania (TZSSh) BUY SELL RIDE CONFIDENT
180MM FORK SM MD LG XL
A SEAT TUBE LENGTH 365 400 440 470
B EFF. TOP TUBE LENGTH 573 604 625 653
Shop All ESTIMATED BB HEIGHT 345 345 345 345
H STANDOVER 730 738 744 750
I HEADTUBE LENGTH 95 101 107 118#productTemplate--template--26482384994687__main { --PT: 60px; --PB: 30px; }
J FORK (AXLE TO CROWN) 588 588 588 588
K FORK (OFFSET) 44
Show more Show less
Size