Serbia (RSDРСД)
Seychelles (GBP£) Header Image
Sierra Leone (SLLLe)
Slovenia (EUR€) South Africa (GBP£)
South Sudan (GBP£)
Spain (EUR€)

} } else { window._RestockRocketConfig.disabledSellingPlanIds = []; console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')'); } } })();window._RestockRocketConfig.enabledNotifyMeVariantIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window.
003e\n\u003cli\u003eNever dispose of full chargers\u003c\/li\u003e\n\u003cli\u003eNever force open\u003c\/li\u003e\n\u003cli\u003eKeep out of reach of children\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e16g - Road\u003c\/p\u003e\n\u003cp\u003e25g - Mountain Bike\u003c\/p\u003e","published_at":"2025-01-07T16:36:33+00:00","created_at":"2021-12-15T18:55:21+00:00","vendor":"Muc-Off","type":"","tags":["essentials","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled","tubeless"],"price":299,"price_min":299,"price_max":499,"available":true,"price_varies":true,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":42162395414754,"title":"16g","option1":"16g","option2":null,"option3":null,"sku":"PREA23082021.1384","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Muc-Off Co2 Canister Cartridge - 16g","public_title":"16g","options":["16g"],"price":299,"weight":0,"compare_at_price":null,"inve
,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/projektride.co.uk\/cdn\/shop\/products\/Capture-8.png?v=1639594793","\/\/projektride.co.uk\/cdn\/shop\/products\/co2_25g_mtb.jpg?v=1639594795"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/Capture-8.png?v=1639594793","options":["Size"],"media":[{"alt":null,"id":28851597476066,"position":1,"preview_image":{"aspect_ratio":1.025,"height":771,"width":790,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Capture-8.png?v=1639594793"},"aspect_ratio":1.025,"height":771,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Capture-8.png?v=1639594793","width":790},{"alt":null,"id":28851597508834,"position":2,"preview_image":{"aspect_ratio":1.0,"height":794,"width":794,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/co2_25g_mtb.jpg?v=1639594795"},"aspect_ratio":1.0,"height":794,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/co2_25 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; } })(), }, }); SELL
(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 Cornering Control
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.cachedSettRIDE CONFIDENT 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) { : 1 2 3 [4]   #productTemplate--template--26482384994687__main { --PT: 60px; --PB: 30px; }
Compound
: Dual Compound & MaxxTerra Technology
Breaker
: EXO or EXO+ Puncture ProtectionClose
Max PSI
Home: 50
HomeHireBead Type
/ : Folding
Finishing Kit

/BikesTubeless TyreKranX Micro Alloy 400mm 12mm Offset Seatpost in Black

KranX Micro Alloy 400mm 12mm Offset Seatpost in BlackSee More
TPI
: 60

New Bikes

Dual Compound

SizeSee More

Two compounds used within the tread of select tyres to offer lower rolling resistance and increased cornering grip

MaxxTerra Compound

Shop All New Bikes

27.2mmAn intermediate compound configuration used in select mountain tyres. 3C MaxxTerra is softer and offers more traction than 3C MaxxSpeed, yet provides better treadwear and less rolling resistance than MaxxGrip

EXORoad / Gravel / Touring Bikes

An extremely cut-resistant and abrasion-resistant material added to the sidewalls of select mountain tyres. This densely woven fabric is also lightweight and highly flexible, ensuring that the performance of the tyre remains unaffected. Choose EXO Protection for exceptionally rocky, treacherous trails where the chance of sidewall cuts and abrasions is high

Hybrid / City Bikes

30.9mmEXO+

Our EXO+ construction combines two of our best puncture protection materials: SilkShield and EXO. The SilkShield layer runs from bead-to-bead with a layer of EXO along the sidewalls. Combined, these two materials create EXO+ which improves tread puncture protection by 27%; sidewall durability by 51%; and resistance to pinch flats by 28%Mountain Bikes

Tubeless Ready

Electric Bikes

31.6mmTubeless tyres provide the rider with many benefits: the ability to run lower air pressures, which improves traction; lower rolling resistance when compared to a tube-type tyre; and less chance of flatting since there is no tube. Liquid sealants should only be used in the following types of tyres: Tubeless Road, Tubular, and Tubeless Ready. The use of liquid sealants in any other Maxxis tyre will void the warranty

Wide TrailKids Bikes

    Wide Trail (WT) construction optimises the tyre's tread layout and profile on today's modern, wider rims. Traditional tyres are designed around older, narrower rims and can create an overly square tyre profile, leading to less than optimal performance. WT tyres are optimised for a 35mm inner rim width but are proven to work over a range from 30-35mm inner rim widths, depending on the rider's preference
  • Frames {"id":42577999888610,"title":"27.2mm","option1":"27.2mm","option2":null,"option3":null,"sku":"43154","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"KranX Micro Alloy 400mm 12mm Offset Seatpost in Black - 27.2mm","public_title":"27.2mm","options":["27.2mm"],"price":1999,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}} Bead Type
  • Shop by Brand
  • QuantityFolding See More 1
  • Discipline
  • Gloria MTB Checkout TrekFree
  • Feature Amflow Tubeless Ready
  •  Yeti
  •   Product Type RidgebackBicycle Tyre
  • Brother Shipping & taxes calculated at checkoutGenesis
  • Singular
  • Enigma
  • :root { --header-height: 60px; --header-sticky-height: 60px; --header-background-height: 60px; } :root { --full-height: calc(100vh - var(--header-sticky-height)); } .main-content > .shopify-section.supports-transparent-header:first-child [data-prevent-transparent-header] { --full-height: var(--content-full); } .site-header--has-border { --border-color: currentcolor; --border-opacity: 0.0; } Frog
  • Kona Open navigation menu .logo__image-link { width: 100px; height: 28px; } .has-scrolled .logo__image-link { width: 100px; height: 28px; }Surly
  • Open search bar
  • Search for products on our site

res 4” of travel with the 20” setup. Customised RST spex forks give 100mm of plush and reliable front wheel travel. The unique DNM shock boasts all the features you need for a bike like this, rebound adjust and a pedal platform to make pedaling a bit easier on the legs.\u003cbr\u003e\nThe balance of the component choice mimics our hellion 20 trail bikes; tubeless compatible wheelset with folding bead Vee Crown Gem tyres (\u0026amp; space in the frame up to 2.4”). A 10 speed one by drivetrain with a notable 11-36T gear range, short reach stem, butted 560mm riser bars, lock on grips and some of the lightest actuating hydraulic brakes available... a very serious piece of kit.\u003cbr\u003e\nASSEMBLY INSTRUCTIONS:\u003cbr\u003e\nYour bike will arrive carefully packaged and boxed with the rear wheel attached. The front wheel will need attaching using the axle supplied. The handlebar will be ziptied to the top tube, simply remove the bars and all packaging and attach to the stem. Add the saddle and adjust to

nfig.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) && _sqCfg.sellingPlans.some(function (p) { return p && p.enabled; }); var _sqPreCount = ((_sqCfg.cachedPreorderVariantIds && _sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length; _sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount); } catch (e) { } try { var _sqc = window._RestockRocketConfig; var _sqOn = !!(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout); var _sqPre = (_sqc.cachedPreorderVariantIds && _sqc.cachedPreorderVariantIds.preorder_variant_ids) || []; var _sqArm = false; if (_sqOn && _sqc.preordersConfigured) { if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) { _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.i

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\/?)?$/); 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 liquidRendered

<

<

& !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

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

liquid_cache_age: _stoqInitConfig.liquidCacheAge, inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], }); } catch (e) { console.debug('STOQ - stoq_initialized publish failed:', e); } try { var _sqTrack = window._RestockRocketConfig; if (_sqTrack.preordersConfigured) { document.addEventListener('click', function (e) { try { var t = e.target; if (!t || !t.closest) return; var host = t.closest('.shopify-payment-button, shopify-payment-terms'); if (!host) return; var channel = host.matches && host.matches('shopify-payment-terms') ? 'shop_pay_installments' : 'buy_now'; var form = host.closest('form'); var vidEl = form && form.querySelector('[name="id"]'); var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || '';

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

} catch (err) { } }, true); } } catch (e) { } function applyTranslations(settings) { try { 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) { console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach

- 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

ings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializeScripts(validCachedSettings); } else { console.debug('STOQ - fetching fresh settings'); const headers = { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' }; if (window.Shopify?.theme?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; } fetch( `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, { headers } ) .then(function(response) { if (!response.ok) { throw new Error('Network response was n
indow._RestockRocketConfig.disabledSellingPlanIds.length > 0; const usePreorderBuild = settings.preorder_enabled || hasEnabledOffer || hasDisabledPlanIds; const collectionScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlCollection : window._RestockRocketConfig.scriptUrlCollectionBis; const productScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlProduct : window._RestockRocketConfig.scriptUrlProductBis; const pageType = window._RestockRocketConfig.pageType; const collectionPageTypes = ['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._RestockRocketC

  • Terms of Service

    Mountain Bikes
    Refund policy
Electric Bikes
Service