3cth\u003eChain\u003c\/th\u003e\n\u003ctd\u003eKMC Z610\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRims\u003c\/th\u003e\n\u003ctd\u003eACID EX35, 36H, Disc, Tubeless Ready\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFront hub\u003c\/th\u003e\n\u003ctd\u003eACID SLX, 15mm, Boost, Centerlock\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRear hub\u003c\/th\u003e\n\u003ctd\u003eEnviolo Heavy Duty, 36H, 6-Bolt, 135mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFront tire\u003c\/th\u003e\n\u003ctd\u003eSchwalbe Pick-Up, Performance, Super Defense, 65-406\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRear tire\u003c\/th\u003e\n\u003ctd\u003eSchwalbe Pick-Up, Performance, Super Defense, 65-559\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003ePedals\u003c\/th\u003e\n\u003ctd\u003eACID PP Trekking\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eSaddle\u003c\/th\u003e\n\u003ctd\u003eACID Shen Pro\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eSeatpost\u003c\/th\u003e\n\u003ctd\u003eCUBE Dropper Post, Handlebar Lever, Internal Cable Routing, 34.9mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFront light\u003c\/th\u003e\n\u003ctd\u003eACID Front Light PRO-E 150 X-Connect, 12V, DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRear light\u003c\/th\u003e\n\u003ctd\u003eACID Mudguard Rear Light PRO-E, 12V, DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBell\u003c\/th\u003e\n\u003ctd\u003eKnog Oi\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCarrier\u003c\/th\u003e\n\u003ctd\u003eACID Semi-Integrated Carrier, ACID RILink Adapter Compatible\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eEngine\u003c\/th\u003e\n\u003ctd\u003eBosch Drive Unit Performance Line CX max. 100Nm (BDU38)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBattery\u003c\/th\u003e\n\u003ctd\u003eBosc
h PowerPack 800\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCharger\u003c\/th\u003e\n\u003ctd\u003eBosch 4A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRemote\u003c\/th\u003e\n\u003ctd\u003eBosch LED Remote\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eDisplay\u003c\/th\u003e\n\u003ctd\u003eBosch Kiox 500\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eNet weight (kg)\u003c\/th\u003e\n\u003ctd\u003e47\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eGross weight (kg)\u003c\/th\u003e\n\u003ctd\u003e85\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eMax. system weight (kg)\u003c\/th\u003e\n\u003ctd\u003e200\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eMax. rider weight (kg)\u003c\/th\u003e\n\u003ctd\u003e110\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBody size\u003c\/th\u003e\n\u003ctd\u003eONESIZE\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u00 3eAccessories\u003c\/th\u003e\n\u003ctd\u003e12839,12793,12840,12841,12830,93038\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e","published_at":"2026-06-13T11:46:24+01:00","created_at":"2026-06-13T11:46:25+01:00","vendor":"CUBE","type":"Hybrid Urban","tags":["Bosch Drive Unit Performance Line CX max. 100Nm (BDU38)","Bosch PowerPack 800","CARGO HYBRID COMFORT","CUBE","Electric Bike","Hybrid Urban","NEW 2026","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":499900,"price_min":499900,"price_max":499900,"available":false,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":57747153813887,"title":"Standard \/ rustorange\/reflex \/ UNISIZE","option1":"Standard","option2":"rustorange\/reflex","option3":"UNISIZE","sku":"12430120","requires_shipping":true,"taxable":true,"featured_image":{"id":84875911561599,"product_id":15720150663551,"position":1,"created_at":"2026-06-13T11:46:25+01:00","updated_at":"2026-06-13T11:46:28+01:00","alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX","width":2000,"height":956,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301.jpg?v=1781347588","variant_ids":[57747153813887]},"available":false,"name":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX - Standard \/ rustorange\/reflex \/ UNISIZE","public_title":"Standard \/ rustorange\/reflex \/ UNISIZE","options":["Standard","rustorange\/reflex","UNISIZE"],"price":499900,"weight":85000,"compare_at_price":null,"inventory_management":"shopify","barcode":"4054571501035","featured_media":{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX","id":71336060617087,"position":1,"preview_image":{"aspect_ratio":2.092,"height":956,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301.jpg?v=1781347588"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/124301
.jpg?v=1781347588","\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_00.jpg?v=1781347588","\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_01.jpg?v=1781347588","\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_02.jpg?v=1781347588","\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_03.jpg?v=1781347588","\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_04.jpg?v=1781347588","\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_05.jpg?v=1781347588"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301.jpg?v=1781347588","options":["Frame Style","Colour","Size"],"media":[{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX","id":71336060617087,"position":1,"preview_image":{"aspect_ratio":2.092,"height":956,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301.jpg?v=1781347588"},"aspect_ratio":2.092,"height":956,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301.jpg?v=1781347588","width":2000},{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX i mage 2","id":71336060649855,"position":2,"preview_image":{"aspect_ratio":1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_00.jpg?v=1781347588"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_00.jpg?v=1781347588","width":2000},{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX image 3","id":71336060682623,"position":3,"preview_image":{"aspect_ratio":1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_01.jpg?v=1781347588"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_01.jpg?v=1781347588","width":2000},{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX image 4","id":71336060715391,"position":4,"preview_image":{"aspect_ratio":1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_02.jpg?v=1781347588"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_02.jpg?v=1781347588","width":2000},{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX image 5","id":71336060748159,"position":5,"preview_image":{"aspect_ratio":1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_03.jpg?v=1781347588"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_03.jpg?v=1781347588","width":2000},{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX image 6","id":71336060780927,"position":6,"preview_image":{"aspect_ratio":1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_04.jpg?v=1781347588"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_04.jpg?v=1781347588","width":2000},{"alt":"CUBE CARGO HYBRID COMFORT SLX 800 RUSTORANGE\/REFLEX image 7","id":71336060813695,"position":7,"preview_image":{"aspect_ratio": 1.778,"height":1125,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_05.jpg?v=1781347588"},"aspect_ratio":1.778,"height":1125,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/124301_D_05.jpg?v=1781347588","width":2000}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cdiv\u003eBeat the traffic and get your cargo to its destination on time with less hassle and a lower carbon footprint. With Bosch's smooth, powerful Cargo Line motor offering up to 100Nm of pedal assistance, a heavy-duty stepless gear hub and an 800Wh battery with the option of adding a 250 Wh PowerMore range extender, the Cargo Hybrid Comfort SLX 800 is your gridlock-busting helper. Its large EPP foam cargo box swallows bulky loads with ease – up to a total system weight of 200kg – and there's an optional cover and built-in stowage box for your daily essentials. Bright front and rear LED lights, grippy Schwalbe tyres and powerful Magura hydraulic disc brakes mean it's safe and
dependable in all weathers. With a Suntour suspension fork for extra comfort and control and a full set of accessories – including mudguards and stable kickstand – it's got everything you need to get you where you need to be on time and in great shape.\u003cbr\u003e\u003cbr\u003e\u003cstrong\u003eFrame description\u003c\/strong\u003e\u003cbr\u003eThe Cargo Hybrid is a thoroughbred workhorse, with the ability to handle a total system weight of 200kg. The durable aluminium frame features an integrated motor mount to house the Bosch Cargo Line drive which, in tandem with the included 800Wh battery, offers up to 100Nm of torque – and there's the option to add a 250 Wh PowerMore range extender, for even more miles between charges. We've thought about the fine details, too. The rugged EPP foam cargo box is fitted with a rubber mat for reduced noise and easier cleaning, there's an additional small storage compartment for all your day-to-day essentials, and an integrated locking system – which works with an o ptional chain lock – allows you to lock both the bike and this compartment. A kickstand with elongated feet makes it easy to park, whilst the integrated chain guard helps keep your clothes clean. And, with an improved steering system featuring a reduced turning radius, it's easy and intuitive to ride.\u003c\/div\u003e\u003ch3\u003eSpecification\u003c\/h3\u003e\u003ctable\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eFrame\u003c\/th\u003e\n\u003ctd\u003eAluminium Casting, Comfort Ride Geometry, Premium Durability and Safety, Integrated Chainlock Interface\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFork\u003c\/th\u003e\n\u003ctd\u003eSR Suntour Mobie34 Cargo, Tapered, 15x110mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eHeadset\u003c\/th\u003e\n\u003ctd\u003eVP sealed bearings and Cane Creek Viscoset\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eStem\u003c\/th\u003e\n\u003ctd\u003eCUBE Comfort Stem Pro, 31.8mm, Adjustable\u003c\/td\u003e\n\Header Imageu003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eHandlebar\u003c\/th\u003e\n\u003ctd\u003eCUBE Comfort Trail Bar, 680mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eGrips\u003c\/th\u003e\n\u003ctd\u003eACID Travel Comfort Gripshift\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eShifters\u003c\/th\u003e\n\u003ctd\u003eEnviolo MC-TWIST\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBrakes\u003c\/th\u003e\n\u003ctd\u003eMagura Clara PRO, Hydr. Disc Brake (203\/180)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCrankset\u003c\/th\u003e\n\u003ctd\u003eACID Trekking Hybrid, 38T\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCrankset chainring sizes\u003c\/th\u003e\n\u003ctd\u003e38T\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eGear Teeth\u003c\/th\u003e\n\u003ctd\u003eEnviolo 20T\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eNumber of gears\u003c\/th\u003e\n\u003ctd\u003e999\u003c\/td\u0 03e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eChain\u003c\/th\u003e\n\u003ctd\u003eKMC Z610\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRims\u003c\/th\u003e\n\u003ctd\u003eACID EX35, 36H, Disc, Tubeless Ready\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFront hub\u003c\/th\u003e\n\u003ctd\u003eACID SLX, 15mm, Boost, Centerlock\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRear hub\u003c\/th\u003e\n\u003ctd\u003eEnviolo Heavy Duty, 36H, 6-Bolt, 135mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFront tire\u003c\/th\u003e\n\u003ctd\u003eSchwalbe Pick-Up, Performance, Super Defense, 65-406\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRear tire\u003c\/th\u003e\n\u003ctd\u003eSchwalbe Pick-Up, Performance, Super Defense, 65-559\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003ePedals\u003c\/th\u003e\n\u003ctd\u003eACID PP Trekking\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003
eSaddle\u003c\/th\u003e\n\u003ctd\u003eACID Shen Pro\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eSeatpost\u003c\/th\u003e\n\u003ctd\u003eCUBE Dropper Post, Handlebar Lever, Internal Cable Routing, 34.9mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eFront light\u003c\/th\u003e\n\u003ctd\u003eACID Front Light PRO-E 150 X-Connect, 12V, DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRear light\u003c\/th\u003e\n\u003ctd\u003eACID Mudguard Rear Light PRO-E, 12V, DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBell\u003c\/th\u003e\n\u003ctd\u003eKnog Oi\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCarrier\u003c\/th\u003e\n\u003ctd\u003eACID Semi-Integrated Carrier, ACID RILink Adapter Compatible\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eEngine\u003c\/th\u003e\n\u003ctd\u003eBosch Drive Unit Performance Line CX max. 100Nm (BDU38)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003e Battery\u003c\/th\u003e\n\u003ctd\u003eBosch PowerPack 800\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eCharger\u003c\/th\u003e\n\u003ctd\u003eBosch 4A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eRemote\u003c\/th\u003e\n\u003ctd\u003eBosch LED Remote\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eDisplay\u003c\/th\u003e\n\u003ctd\u003eBosch Kiox 500\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eNet weight (kg)\u003c\/th\u003e\n\u003ctd\u003e47\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eGross weight (kg)\u003c\/th\u003e\n\u003ctd\u003e85\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eMax. system weight (kg)\u003c\/th\u003e\n\u003ctd\u003e200\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eMax. rider weight (kg)\u003c\/th\u003e\n\u003ctd\u003e110\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eBody size\u003c\/th\u003e\n\u003ctd\u003eONESIZE\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eAccessories\u003c\/th\u003e\n\u003ctd\u003e12839,12793,12840,12841,12830,93038\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {57747153813887 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {57747153813887 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {57747153813887 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {57747153813887 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {57747153813887 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {57747153813887 : null,}; window._RestockRocketConfig.variantsShippingText = {57747153813887 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {57747153813887 : null,}; window._RestockRocketConfig.selected_variant_id = 57747153813887; window._RestockRocketConfig.sel ected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;// STOQ-1595/1612 shared signal, derived once here so both the accelerated-checkout block // gate (STOQ-1612) and the click tracker (STOQ-1595) read one clearly-owned flag rather // than a side effect buried in either consumer's try/catch: whether this shop has preorders // configured at all — an enabled selling plan plus at least one preorder variant id, // independent of the block toggle. Fail-open: on error the flag stays unset and both // consumers no-op. 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 = !!(_sqPlanEna
bled && _sqPreCount); } catch (e) { /* fail open */ } // STOQ-1612: block (not hide) Buy Now / Shop Pay until our JS runs, so a tap in the // load window can't bypass preorder. pointer-events via .stoq-buy-now-pending (no // reflow); timeout releases; renderPreorderButton / featured_product.js lift it. // Gated by the `block_accelerated_checkout` toggle (default OFF) for gradual rollout. // Armed ONLY when we're sure preorder is in play — product page: THIS product has a // preorder variant (never block a plain product's Shop Pay); featured: integration // enabled for this page type. Rationale: PR #2784. 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.pro duct.variants) { _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1; }); } 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) { /* fail open */ } window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019f37a7-f058-7bcb-a02d-3fb0b8a7522a/restockrocket-1-539/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019f37a7-f058-7bcb-a02d-3fb0b8a7522a/restockrocket-1-539/as
sets/restockrocket-collection.js' window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/019f37a7-f058-7bcb-a02d-3fb0b8a7522a/restockrocket-1-539/assets/restockrocket-product-bis.js' window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/extensions/019f37a7-f058-7bcb-a02d-3fb0b8a7522a/restockrocket-1-539/assets/restockrocket-collection-bis.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) // Canary override (STOQ-1287): prefer the Render host emitted into the // metafield-cached settings (api_host) when present, mirroring the same // override in assets/js/api.js. cachedSettings is populated above. Falls // back to the build-baked host for shops without the use_render_api_host // toggle (or environments where THEME_EXTENSION_API_HOST is unset), so the // setting.json + fetchEmbedConfig calls below route to the same host a s the // rest of the extension's API traffic instead of staying on the baked host. window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io' // Deployed extension build number, read from the CDN asset host Shopify generates: // https://cdn.shopify.com/extensions/che age 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); // Current time in seconds const liquidCacheAge = now - liquidRenderedAt; // Age in seconds // Surfaced into funnel events: a stale cache means the app rendered with // outdated inventory/selling-plan data — a real "had the opportunity but // failed" cause. Negative (client clock ahead) clamps to 0. window._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge); // Handle client clock ahead of server if (liquidCacheAge <
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 <= 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; } // Check if translations are enabled but missing from cache // This handles the backfill period where DB has translations but metafield doesn't if (settings.multi_language_enabled) { if (!settings.translations) { // Translations enabled but no translation data in metafield // Metafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } 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 <refrontSettings = 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); } })(); // First try to get settings from metafields with expiry check 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': 'ski p' }; 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 not ok'); } return response.json(); }) .then(function(settings) { initializeScripts(settings); }) .catch(function(error) { // If request failed and we have cached settings (even if expired), use them as fallback if (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else { console.error('S
TOQ - 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) { // Apply failures are programming bugs (e.g. response shape changed // server-side and the assignment threw). Surface them as console.error // so they're visible in browser logs, then re-throw to fall through // to the same Liquid-cached fallback as a fetch failure. 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}`); // Stale-Liquid resilience (default-on, per-shop opt-out via the // `disable_refresh_on_stale_liquid` Toggle, surfaced as the negative // `disable_refresh_on_stale_liquid` flag in settings.json so that // `undefined` -- in CDN-cached metafield payloads that predate this // key -- reads as `!undefined === true` and gets default-on behavior // immediately, no metafield rewrite required). // When the Liquid CDN cache is older than LIQUID_CACHE_MAX_AGE the in-page // selling_plans / integrations metafields can be wrong; refresh both from // the API before launching scr
ipts. Race against a 1000ms timeout so a slow // API can't block init indefinitely. If the timeout wins, the in-flight // fetches still complete and update window._RestockRocketConfig — the // bundle re-reads sellingPlans/integrations on every interaction, so the // late-arriving values benefit subsequent renders even though the first // paint may use the Liquid-cached values. On any failure the existing // Liquid-loaded values stay in place via fetchEmbedConfig's catch. 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 || []; } }), fetchEmbedConfig('integrations', function(data) { if (Array.isArray(data)) { window._RestockRocketConfig.integrations = data; } }) ]), new Promise(function(resolve) { setTimeout(resolve, 1000); }) ]).then(function() { loadScripts(settings); }); return; } loadScripts(settings); } function loadScripts(settings) { // Setup cart selling plan updater BEFORE loading any scripts to avoid race conditions setupCartSellingPlanUpdater(settings); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) // STOQ-1520: serve the lean back-in-stock-only build (no preorder/hijack code) // only to shops with NO preorder plans. Use the full build if preorder is o
n, // an enabled offer exists, or a disabled-but-kept plan id remains (cart sweep // must still strip those). Rationale in the PR. const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans) && window._RestockRocketConfig.sellingPlans.some(function(plan) { return plan && plan.enabled; }); const hasDisabledPlanIds = Array.isArray(window._RestockRocketConfig.disabledSellingPlanIds) && window._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 collecti onPageTypes = ['collection', 'index', 'search', 'page']; if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) { createRestockRocketScript(collectionScriptUrl); } else if(pageType === 'product') { createRestockRocketScript(productScriptUrl); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(usePreorderBuild) { // cart/article/blog/list-collections: full build so the cart sweep runs. createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enabled for ${pageType}`); } // Dispatch custom event when app is loaded // Cart selling plan updates will be triggered by stoq:inventory-data-loaded event const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockR

CUBE REACTION HYBRID PRO 800 DESERTSTONE/DRIEDHERBS

Frame Style
Colour
Size
Quantity
The Reaction Hybrid Pro combines mountain bike versatility with Bosch-powered ease of use and clever CUBE design. Tackle any route, off-road or on, thanks to an 800Wh battery and smooth, powerful Bosch CX drive. Combined with Shimano's easy-to-use XT 12-speed gears, it's all you need to comfortably ride any hill. For coming back down the other side, we fitted powerful Shimano 4-piston hydraulic disc brakes and grippy Schwalbe 2.6in tyres. There's also an air-sprung fork with 120mm of travel (100mm for small frame sizes and for all Easy Entry models), and a remote dropper seatpost for extra comfort and control on rougher trails. It's got it all – the rest is up to you.

Frame description
We call this frame Easy Entry because that's exactly what it does, but there's more to the Reaction Hybrid than just an elegantly practical design. 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 there are sizes to cater for most riders. We've thought of everything, so you can just ride.

Specification

Frame Aluminium Superlite, Gravity Casting Technology, Agile Ride Geometry, Boost148, Fully Integrated Battery, Advanced Internal Cable Routing, 1.5 Headtube, Kickstand/Fender/Carrier Mounting Points
Fork SR Suntour X1-32 LO-R Air, Tapered, 15x110mm, 100mm
Headset 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
Stem CUBE Performance Stem E-MTB 35, FPI-Link
Handlebar CUBE Rise Trail Bar 35
Grips ACID Hybrid Perform
Rear derailleur Shimano XT RD-M8100-SGS, ShadowPlus, 12-Speed
Shifters Shimano Deore SL-M6100-IR, Direct Attach
Brakes Shimano BR-MT420, Hydr. Disc Brake (203)
Crankset ACID MTB Hybrid Pro, 38T
Crankset chainring sizes 38T
Cassette Shimano Deore CS-M6100, 10-51T
Number of gears 12
Chain KMC e12
Wheelset ACID SLX 30, 32/32 Spokes, 15x110mm/12x148mm, Tubeless Ready
Tires (Front & Rear) Schwalbe Smart Sam, Active, 2.6
Pedals ACID PP Trekking
Saddle ACID Sequence 160
Seatpost CUBE Dropper Post, Handlebar Lever, Internal Cable Routing, 31.6mm
Seat post = dropper Yes/No YES
Engine Bosch Drive Unit Performance Line CX max. 120Nm (BDU38)
Engine ready for the Bosch 120 Nm update? YES
Battery Bosch PowerTube 800
Charger Bosch 2A
Remote Bosch Purion 200 with Integrated Display
Net weight (kg) 26.8
Gross weight (kg) 29.3
Max. system weight (kg) 150
Max. rider weight (kg) 120
Body size 1.72m - 1.83m
Accessories 93455,93468,92390,93469,93470,93452,93490

Frequently Asked Questions

  • Please get in touch with a member of the team either by phone (01313745324) or email ([email protected]) where on of the team will be more than happy to help.

    ProjektRide Bike Shop Edinburgh

  • If the item is showing in stock, we aim to post the product within 24 hours. Please allow 5 working days to receive the item.

    Postage is free on orders over £50. Orders under £50, our postage charge is £3.99.

    We also have a physical store, if you are local please pop in -

    ProjektRide Bike Shop Edinburgh

    82 Newington Road, EH91QN, Edinburgh.