Header Image
ACID Sequence 160
Seatpost
CUBE Dropper Post, Handlebar Lever, Internal Cable Routing, 31.6mm ACID Front Light PRO-E 150 X-Connect, 12V, DC ACID Mudguard Rear Light PRO-E, 12V, DC ACID FM Pure Kickstand
Mudguard
Somalia (GBP£) ACID 85 BB-Mount
South Africa (GBP£) Bell CarrierSpain (EUR€)
ACID Carrier SIC 2.0 Rail Boost
Bosch Drive Unit Performance Line CX max. 120Nm (BDU38)
Sudan (GBP£)
Engine ready for the Bosch 120 Nm update?Svalbard & Jan Mayen (GBP£) YES
Sweden (SEKkr) Bosch PowerTube 800Switzerland (CHFCHF) Bosch 2A Togo (XOFFr) Bosch Purion 200 with Integrated DisplayTristan da Cunha (GBP£) 28.6
Türkiye (GBP£)
31.06
Uganda (UGXUSh) 150
Google Pay
Klarna23 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {57747176554879 : null,57747176587647 : null,57747176620415 : null,57747176653183 : null,57747176685951 : null,57747176718719 : null,57747176751487 : null,57747176784255 : null,57747176817023 : null,};window._RestockRocketConfig.selected_variant_id = 57747176554879; window._RestockRocketConfig.selected_variant_available = (window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }) || {}).available; (function (c) { c.cartInventoryQuantity = {}; function s(k, id, v) { if (v !== null) (c[k] = c[k] || {})[id] = v; } function sm(k, id, v) { if (v !== null) ((c[k] = c[k] || {})[id] = {})[c.marketId] = v; } function p(k, id, v) { if (v !== null) (c[k] = c[k] || []).push(id); } })(window._RestockRocketConfig); try { var _sqCfg = window._RestockRocketConfig; var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) && riant_ids || []); if (_sqGateAlloc && p.variant_ids_truncated) { _sqAlwaysPlanIds.push(Number(p.shopify_selling_plan_id), Number(p.default_shopify_selling_plan_id)); (Array.isArray(p.payment_options) ? p.payment_options : []).forEach(function (o) { if (o) _sqAlwaysPlanIds.push(Number(o.shopify_selling_plan_id)); }); } }); var _sqAllocAlways = function (id) { var a = _sqGateAlloc && _sqGateAlloc[id]; return Array.isArray(a) && a.some(function (planId) { return planId && _sqAlwaysPlanIds.indexOf(Number(planId)) !== -1; }); }; var _sqArm = false; if (_sqOn && (_sqc.preordersConfigured || _sqAlways.length || _sqAlwaysPlanIds.length)) { if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) { _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1 || _sqAlways.indexOf(Number(v.id)) !== -1 || _sqAllocAlways(Number(v.id)) || (_sqc.inlinePreorderIdsDropped === true &Mastercard< & !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 Satispay
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.crossOrigin = 'anonymous'; restockRocketScriptElement.onerror = function () { restockRocketScriptElement.onerror = null; const plainScriptElement = document.createElement('script'); plainScriptElement.setAttribute('defer', 'defer'); plainScriptElement.src = scriptUrl; document
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 || '', 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 = tShop Pay{ var ids = [pl.shopify_selling_plan_id, pl.default_shopify_selling_plan_id]; (Array.isArray(pl.payment_options) ? pl.payment_options : []).forEach(function (o) { ids.push(o && o.shopify_selling_plan_id); }); return ids.filter(function (id) { return id != null; }).map(Number); }; var _sqForVariant = function (pl) { if (!pl || !pl.enabled) return false; if (Array.isArray(_sqAlloc)) { var ids = _sqPlanIds(pl); return _sqAlloc.some(function (id) { return ids.indexOf(Number(id)) !== -1; }); } return 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) {
_sqTrack.cachedPreorderVariantIds.preorder_variant_ids) || (_sqTrack.inlinePreorderIdsDropped === true && (_sqTrack.variantsInventoryPolicy || {})[vid] === 'continue' && (_sqTrack.variantsInventoryQuantity || {})[vid]
= 0); })(), in_enabled_plan: !!_sqPlan, is_instock_variant: (function () { var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; }; return has(_sqTrack.inStockVariantIds) || has(_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 === false) && !(_sqTrack.readFlags && _sqTrack.readFlags.accelerated_block_off === true), gate_armed: !!_sqTrack.acceleratedGateArmed, gate_active_at_click: !!(document.documentElement && document.documentElement.cUnion Pay 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(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(
nt API unavailable')); } return fetch( `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Shopify-Storefront-Access-Token': token, }, body: JSON.stringify({ query: query, variables: variables }), } ) .then(function(response) { if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } 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(', ')); } return body && body.data; }); } function fetchStorefrontShopMetafield(key) { const cfg = window._RestockRocketConfig; const query = 'query StoqShopMetafield($namespace: String!, $key: String!) { shop { metafield(namespace: $namespace, key: $key) { value } } }'; retVisa
.shop.translations.value); } if (settings.multi_language_enabled && !settings.translations) { throw new Error('settings metafield carries no translations'); } return settings; }); } const cachedSettings = window._RestockRocketConfig.cachedSettings; 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; }
bug('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}:`, erro
tegrations', flag: 'enable_storefront_integrations_read', isValid: function(value) { return Array.isArray(value); }, apply: function(data) { cfg.integrations = data; } }); } function refreshSellingPlans() { const cfg = window._RestockRocketConfig; return refreshShopConfig({ endpoint: 'selling_plans', metafieldKey: 'cachedSellingPlans', flag: 'enable_storefront_selling_plans_read', isValid: function(value) { return !!value && Array.isArray(value.plans); }, apply: function(data) { cfg.sellingPlans = data.plans; cfg.disabledSellingPlanIds = data.disabled_plan_ids || []; if (data && data.read_flags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) { cfg.readFlags = data.read_flags; } } }); } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - setti
Fork
SR Suntour XCM34 NLO Coil, Tapered, 15x110mm, 100mm
CUBE REACTION HYBRID RACE 800 LIZARD/BLACK


Frame StyleColourlizard/blackShow moreShow lessLMSXLg_plan_id)); (Array.isArray(p.payment_options) ? p.payment_options : []).forEach(function (o) { if (o) _sqAlwaysPlanIds.push(Number(o.shopify_selling_plan_id)); }); } }); var _sqAllocAlways = function (id) { var a = _sqGateAlloc && _sqGateAlloc[id]; return Array.isArray(a) && a.some(function (planId) { return planId && _sqAlwaysPlanIds.indexOf(Number(planId)) !== -1; }); }; var _sqArm = false; if (_sqOn && (_sqc.preordersConfigured || _sqAlways.length || _sqAlwaysPlanIds.length)) { if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) { _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1 || _sqAlways.indexOf(Number(v.id)) !== -1 || _sqAllocAlways(Number(v.id)) || (_sqc.inlinePreorderIdsDropped === true && (_sqc.variantsInventoryPolicy || {})[v.id] === 'continue' && (_sqc.variantsInventoryQuantity || {})[v.id] = 0); }); } 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) { } window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/01a1cf87-0c5a-7dbe-b46c-5802cf5d64ec/restockrocket-1-641/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a1cf87-0c5a-7dbe-b46c-5802cf5d64ec/restockrocket-1-641/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptUrlCollectionFull = 'https://cdn.shopify.com/extensi 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 XXL< .body.appendChild(plainScriptElement); }; restockRocketScriptElement.src = scriptUrl; document.body.appendChild(restockRocketScriptElement); } createRestockRocketContainer() console.debug('STOQ - extension activated') try { const _stoqInitConfig = window._RestockRocketConfig; const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.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.origin + window.location.pathname, page_type: _stoqInitConfig.pageType || '', .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 || ''; var _sqVidNum = Number(variantId); var _sqPlan = null; var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; var _sqMktId = Number(_sqTrack.marketId); var _sqOffersOn = !!(_sqTrack.readFlags && _sqTrack.readFlags.enable_storefront_plan_offers === true); var _sqAlloc = _sqOffersOn ? ((_sqTrack.offerAllocations && _sqTrack.offerAllocations[_sqVidNum]) || (_sqTrack.variantSellingPlanIds && _sqTrack.variantSellingPlanIds[_sqVidNum])) : null; var _sqPlanIds = function (pl) < {"id":57747179503999,"title":"Step-over \/ lizard\/black \/ L","option1":"Step-over","option2":"lizard\/black","option3":"L","sku":"108440L","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ L","public_title":"Step-over \/ lizard\/black \/ L","options":["Step-over","lizard\/black","L"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517579","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}} '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 storefrontGraphql(query, variables) { const cfg = window._RestockRocketConfig; let token = cfg.storefrontAccessToken || null; if (!token && typeof cfg.sk === 'string' && cfg.sk !== '') { try { token = atob(cfg.sk).split('').reverse().join('') || null; } catch (e) { token = null; } } if (!token || cfg.disableStorefrontApi === true) { return Promise.reject(new Error('Storefro urn storefrontGraphql(query, { namespace: cfg.metafieldNamespace, key: key }) .then(function(data) { const value = data && data.shop && data.shop.metafield && data.shop.metafield.value; if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); } return JSON.parse(value); }); } function fetchStorefrontSettings() { const query = 'query StoqSettings($namespace: String!) { shop { settings: metafield(namespace: $namespace, key: "settings") { value } translations: metafield(namespace: $namespace, key: "settings_translations") { value } } }'; return storefrontGraphql(query, { namespace: window._RestockRocketConfig.metafieldNamespace }) .then(function(data) { const settings = JSON.parse(data.shop.settings.value); if (!settings.updated_at) { throw new Error('settings metafield is not a settings payload'); } if (settings.single_locale_translations_inline) { settings.translations = data.shop.translations && JSON.parse(data const storefrontRead = window._RestockRocketConfig.readFlags?.enable_storefront_settings_read === true ? Promise.race([ fetchStorefrontSettings(), new Promise(function(_, reject) { setTimeout(function() { reject(new Error('timed out')); }, 1500); }) ]).catch(function(error) { console.debug('STOQ - Storefront settings read failed, using setting.json:', error.message); }) : Promise.resolve(); storefrontRead .then(function(settings) { return settings || 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 not ok'); } return response.json(); }); }) .then(function(settings) { initializeScripts(settings); }) .catch(function(error) { if (cachedSettings) { console.deQuantityngs configured for ${window._RestockRocketConfig.pageType}`); const staleRefresh = !window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_refresh_on_stale_liquid; if (staleRefresh) { console.debug('STOQ - refreshing selling_plans + integrations (Liquid cache stale)'); Promise.race([ Promise.all([refreshSellingPlans(), refreshIntegrations()]), 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) && w || !(wishlistImageHeart || document.querySelector(wishlistHeartTarget))) return; wishlistHeartsRequested = true; createRestockRocketScript(window._RestockRocketConfig.scriptHost + 'restockrocket-wishlist-hearts.js'); }; loadWishlistHearts(); document.addEventListener('shopify:section:load', loadWishlistHearts); } if (document.querySelector('[data-stoq-wishlist-page]')) { createRestockRocketScript(window._RestockRocketConfig.scriptHost + 'restockrocket-wishlist-page.js'); } try { if (localStorage.getItem('stoq_wl_host') !== window._RestockRocketConfig.scriptHost) localStorage.setItem('stoq_wl_host', window._RestockRocketConfig.scriptHost); } catch (e) {} try { const guestWishlist = window._RestockRocketConfig.customer && !localStorage.getItem('stoq_wl_c') && JSON.parse(localStorage.getItem('stoq_wl')); if (Array.isArray(guestWishlist) && guestWishlist.length) { 1 3 4 5 7 9 10 +QuantityDecrease QuantityIncrease QuantitySold Out - Notify Me When It’s Available With its rugged go-anywhere capability and 800Wh battery, there's not much that can hold the Reaction Hybrid Race back. It's even PowerMore-ready, so you can add an optional extra 250Wh battery for even more range. The Smart System-equipped Bosch CX drive has the power to make any route easier, and Sram Transmission 90 12-speed gears put the right ratio literally at your fingertips. We chose wide, grippy Schwalbe 2.6in tyres and paired them with an air-sprung Rockshox Recon Silver fork for the best blend of comfort and control. With strong 4-piston hydraulic disc brakes, you're assured of safe and predictable stopping in any conditions. And there's a dropper post, too, so you can take the path less travelled, and see where it leads.Frame descriptionSpecificationFrameForkHeadsetStem Handlebar
Step-over
Size
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 liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); window._RestockRocketConfig.isLiquidCacheFresh = true; window._RestockRocketConfig.liquidCacheAge = null; } else { const now = Math.floor(Date.now() / 1000); const liquidCacheAge = now - liquidRenderedAt; window._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge); if (liquidCacheAge = LIQUID_CACHE_MAX_AGE) { console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`); window._RestockRocketConfig.isLiquidCacheFresh = false; } } function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } if (settings.multi_language_enabled) { if (!settings.translations) { console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } if (window._RestockRocketConfig.normalizedLocale &
_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 && _sqTrack.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.origin + window.location.pathname) || '', 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 && lassList.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; } })(), }, }); } 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 || {}));
r.message); }); } function refreshShopConfig(source) { const cfg = window._RestockRocketConfig; const viaEmbed = function() { return fetchEmbedConfig(source.endpoint, source.apply); }; const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true; if (!flagOn) { return viaEmbed(); } return fetchStorefrontShopMetafield(source.metafieldKey) .then(function(value) { if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); } source.apply(value); console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API'); }) .catch(function(error) { console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message); return viaEmbed(); }); } function refreshIntegrations() { const cfg = window._RestockRocketConfig; return refreshShopConfig({ endpoint: 'integrations', metafieldKey: 'in ionScriptUrl = preorderUiOnPage ? window._RestockRocketConfig.scriptUrlCollectionFull : window._RestockRocketConfig.scriptUrlCollection; const collectionScriptUrl = usePreorderBuild ? preorderCollectionScriptUrl : window._RestockRocketConfig.scriptUrlCollectionBis; const productScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlProduct : window._RestockRocketConfig.scriptUrlProductBis; 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(preorderCollectionScriptUrl); } else if(usePreorderBuild) { createRestockRocketScript(preorderColl1
2
6
8
 
window.appBlockPlacements ||= []; if (window.klarnaAppBlocksManager) { window.klarnaAppBlocksManager.push({ productVariants: [{"id":57747179503999,"title":"Step-over \/ lizard\/black \/ L","option1":"Step-over","option2":"lizard\/black","option3":"L","sku":"108440L","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ L","public_title":"Step-over \/ lizard\/black \/ L","options":["Step-over","lizard\/black","L"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517579","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179536767,"title":"Step-over \/ lizard\/black \/ M","option1":"Step-over","option2":"lizard\/black","option3":"M","sku":"108440M","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ M","public_title":"Step-over \/ lizard\/black \/ M","options":["Step-over","lizard\/black","M"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517562","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179569535,"title":"Step-over \/ lizard\/black \/ S","option1":"Step-over","option2":"lizard\/black","option3":"S","sku":"108440S","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ S","public_title":"Step-over \/ lizard\/black \/ S","options":["Step-over","lizard\/black","S"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517555","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179602303,"title":"Step-over \/ lizard\/black \/ XL","option1":"Step-over","option2":"lizard\/black","option3":"XL","sku":"108440XL","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ XL","public_title":"Step-over \/ lizard\/black \/ XL","options":["Step-over","lizard\/black","XL"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517586","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179635071,"title":"Step-over \/ lizard\/black \/ XXL","option1":"Step-over","option2":"lizard\/black","option3":"XXL","sku":"108440XXL","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ XXL","public_title":"Step-over \/ lizard\/black \/ XXL","options":["Step-over","lizard\/black","XXL"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517593","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"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', storefrontLanguage: 'en', shopLocale: 'en', shopDomain: 'projektride.co.uk', variantPrice: '329900', cartPrice: '0', selector: 'shopify-osm-AZkxmY3VSTnFmNnNiW__klarna_on_site_messaging_app_block_k6rYHt', topPadding: '0', bottomPadding: '0', }); } else { window.appBlockPlacements.push({ productVariants: [{"id":57747179503999,"title":"Step-over \/ lizard\/black \/ L","option1":"Step-over","option2":"lizard\/black","option3":"L","sku":"108440L","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ L","public_title":"Step-over \/ lizard\/black \/ L","options":["Step-over","lizard\/black","L"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517579","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179536767,"title":"Step-over \/ lizard\/black \/ M","option1":"Step-over","option2":"lizard\/black","option3":"M","sku":"108440M","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ M","public_title":"Step-over \/ lizard\/black \/ M","options":["Step-over","lizard\/black","M"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517562","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179569535,"title":"Step-over \/ lizard\/black \/ S","option1":"Step-over","option2":"lizard\/black","option3":"S","sku":"108440S","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ S","public_title":"Step-over \/ lizard\/black \/ S","options":["Step-over","lizard\/black","S"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517555","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179602303,"title":"Step-over \/ lizard\/black \/ XL","option1":"Step-over","option2":"lizard\/black","option3":"XL","sku":"108440XL","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ XL","public_title":"Step-over \/ lizard\/black \/ XL","options":["Step-over","lizard\/black","XL"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517586","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":57747179635071,"title":"Step-over \/ lizard\/black \/ XXL","option1":"Step-over","option2":"lizard\/black","option3":"XXL","sku":"108440XXL","requires_shipping":true,"taxable":true,"featured_image":{"id":84875939479935,"product_id":15720154038655,"position":1,"created_at":"2026-06-13T11:50:23+01:00","updated_at":"2026-06-13T11:50:26+01:00","alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","width":2000,"height":1170,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826","variant_ids":[57747179503999,57747179536767,57747179569535,57747179602303,57747179635071]},"available":false,"name":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK - Step-over \/ lizard\/black \/ XXL","public_title":"Step-over \/ lizard\/black \/ XXL","options":["Step-over","lizard\/black","XXL"],"price":329900,"weight":26560,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571517593","featured_media":{"alt":"CUBE REACTION HYBRID RACE 800 LIZARD\/BLACK","id":71336088011135,"position":1,"preview_image":{"aspect_ratio":1.709,"height":1170,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/108440.jpg?v=1781347826"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}], templateName: 'product', shopLocale: 'en', dataKey: 'top-strip-promotion-badge', storefrontCurrency: 'GBP', storefrontCountry: 'GB', storefrontLanguage: 'en', shopDomain: 'projektride.co.uk', variantPrice: '329900', cartPrice: '0', selector: 'shopify-osm-AZkxmY3VSTnFmNnNiW__klarna_on_site_messaging_app_block_k6rYHt', topPadding: '0', bottomPadding: '0', }); }
The Reaction Hybrid's neat and tidy design is no accident. With the 800Wh PowerTube battery neatly concealed and the Bosch CX drive housed securely, its svelte lines disguise lots of clever features. It's PowerMore-ready, making it easy to add up to 250Wh of extra battery capacity. The integrated seat clamp and cable routing complement the clean aesthetic. There's a pre-installed chain guide, and it's ready to accept ACID mudguards and a luggage carrier... plus, with X-Connect, adding a compatible ACID front light is as simple as plugging it into the headset. And, with Size Split, it's easy to find the perfect fit for every rider. We've thought of everything, so you can just ride.
Aluminium Superlite, Gravity Casting Technology, Agile Ride Geometry, Boost148, Fully Integrated Battery, Advanced Internal Cable Routing, 1.5 Headtube, Kickstand/Fender/Carrier Mounting Points
RockShox Recon Silver RL Air, Tapered, 15x110mm, 120mm (27.5: 100mm)
ACROS AZF-1034, ICR (Integrated Cable Routing), Top Zero-Stack 1 1/2" (ZS 56mm), Bottom Zero-Stack 1 1/2" (ZS 56mm), X-Connect Interface Skip to content
CUBE Performance Stem E-MTB 35, FPI-Link/* Prevent CLS on page load */ :root { --announcement-height: calc(0.75rem * 1.1 * 1.5 + 10px * 2 + var(--BORDER-WIDTH)); } @media screen and (min-width: 768px) { :root { --announcement-height: calc(0.75rem * 1.1 * 1.5 + 10px * 2 + var(--BORDER-WIDTH)); } } @font-face { font-family: "Space Mono"; font-weight: 400; font-style: normal; font-display: swap; src: url("//projektride.co.uk/cdn/fonts/space_mono/spacemono_n4.9ee60bbbb57a3b43dbcb22a7f53e18140cb3b40f.woff2") format("woff2"), url("//projektride.co.uk/cdn/fonts/space_mono/spacemono_n4.0c1ebe3659065af9a832b4a469bdd1fdc9521024.woff") format("woff"); } #announcement-bar--sections--26542717862271__announcement-bar .announcement { --font-family: "Space Mono", monospace; --font-style: normal; --font-weight: 400; --adjust-text-size: 1.1; --padding: 10px; --letter-spacing: 0.1em; --line-height: 1.5; --text: #000000; --border: #000000; } #announcement-bar--sections--26542717862271__announcement-bar .flickity-enabled .ticker--animated, #announcement-bar--sections--26542717862271__announcement-bar .announcement__ticker { padding: 0 30px; } @media screen and (max-width: 767px) { #announcement-bar--sections--26542717862271__announcement-bar .announcement { --adjust-text-size: 1.1; } }
CUBE Rise Trail Bar 35
Please call ahead to confirm bike hire availability for same-day bookings.
Grips
ACID Hybrid Perform

Rear derailleur

Sram Eagle 90 Transmission, 12-Speed
  • Shifters

    Sram Eagle 90 Transmission Home BrakesHire

    Magura Louise, Front 4-Piston/Rear 4-Piston, Hydr. Disc Brake (203)
    Bikes
  • Crankset

    ACID MTB Hybrid Pro, 38T

    New Bikes

    Crankset chainring sizesSee More

    38T
Shop All New Bikes