Size:Trek
Kids Bikes
XS
M , ML , L , XL , XXL
Bontrager Aero Pro, OCLV Carbon, 31.8 mm, Di2 routing, 80 mm reach, 124 mm drop, 35 cm control width, 38 cm width
Enigma
YetiClothing
Shimano U4000, 9-speedM, ML, L
Bontrager Aero Pro, OCLV Carbon, 31.8 mm, Di2 routing, 80 mm reach, 124 mm drop, 39 cm control width, 42 cm widthGrips & Bar-Tape
EssentialsSurlyShimano CUES U4000
Bontrager Aero Pro, OCLV Carbon, 31.8 mm, Di2 routing, 80 mm reach, 124 mm drop, 41 cm control width, 44 cm widthGenesis
Brakes
Cleaners, Degreasers and Lubrication
WheelsComponentsWe reserve the right to make changes to the product information contained on this site at any time without notice, including with respect to equipment, specifications, models, colours, materials and pricing. Due to supply chain issues, compatible parts may be substituted at any time without notice.
y","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":56494087143807,"title":"M \/ Gloss Fury Red\/Matte Deep Smoke","option1":"M","option2":"Gloss Fury Red\/Matte Deep Smoke","option3":null,"sku":"5338047","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Trek Madone SL 7 Gen 8 - M \/ Gloss Fury Red\/Matte Deep Smoke","public_title":"M \/ Gloss Fury Red\/Matte Deep Smoke","options":["M","Gloss Fury Red\/Matte Deep Smoke"],"price":540000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":56494087176575,"title":"M \/ Gloss Crystal White\/Matte Deep Smoke","option1":"M","option2":"Gloss Crystal White\/Matte Deep Smoke","option3":null,"sku":"5339037","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Trek Madone SL 7 Gen 8 - M \/ Gloss Crystal White\/Matte Deep Smoke","public_title":"M \/ Gloss Crystal White\/Matte D
:"\/\/projektride.co.uk\/cdn\/shop\/files\/MadoneSL7-26-57664-C-Primary.png?v=1764428575"},"aspect_ratio":1.333,"height":1440,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/MadoneSL7-26-57664-C-Primary.png?v=1764428575","width":1920},{"alt":null,"id":68897005011327,"position":5,"preview_image":{"aspect_ratio":1.333,"height":1440,"width":1920,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/MadoneSL7-26-57664-C-Alt2.jpg?v=1764428573"},"aspect_ratio":1.333,"height":1440,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/MadoneSL7-26-57664-C-Alt2.jpg?v=1764428573","width":1920},{"alt":null,"id":68897005044095,"position":6,"preview_image":{"aspect_ratio":1.333,"height":1440,"width":1920,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/MadoneSL7-26-57664-C-Alt4.jpg?v=1764428573"},"aspect_ratio":1.333,"height":1440,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/MadoneSL7-26-57664-C-Alt4.jpg?v=1764428573","width":1920},{"alt":null,"id":68897005076863,"positClothing and ProtectionSize:
See More
\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eShimano CL800, CentreLock, 160 mm\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/dd\u003e\n\u003cdt class=\"flex-none w-full md:w-1\/5 mb-0 py-2 pr-1 font-medium border-b-2 md:border-r-2 border-gray-10\"\u003eRotor size\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 p-2 font-normal border-b-2 border-gray-10\"\u003eMax brake rotor sizes: 180 mm front, 160 mm rear\u003c\/dd\u003e\n\u003c\/dl\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp data-v-631a2fc2=\"\" class=\"mt-2 mb-1\"\u003eWe reserve the right to make changes to the product information contained on this site at any time without notice, including with respect to equipment, specifications, models, colours, materials and pricing. Due to supply chain issues, compatible parts may be substituted at any time without notice.\u003c\/p\u003e\n\u003cp data-v-631a2fc2=\"\" class=\"mb-1\"\u003eBike and frame weights are based on pre-produBontrager alloy, 31.6 mm, 12 mm offset, 400 mm length
Loading more
img src="//projektride.co.uk/cdn/shop/files/SuveaTripPlusLS600WhAB-25-49653-A-Primary_small.avif?v=1764691856" alt="Diamant Suvea Trip Plus (600 Wh)" class="mfp-zoom-in-cur" id="68942691467647">
Congratulations! Your order qualifies for free shipping
img src="//projektride.co.uk/cdn/shop/files/SuveaTripPlusLS600WhAB-25-49653-B-Primary_small.avif?v=1764691869" alt="Diamant Suvea Trip Plus (600 Wh)" class="mfp-zoom-in-cur" id="68942692614527">
img src="//projektride.co.uk/cdn/shop/files/SpeedConceptSLR9_22_35757_E_Alt1_98x.webp?v=1728724512" alt="" class="product-single__thumbnail-img">
Open navigation menu
cdn\/shop\/files\/SpeedConceptSLR9-24-35757-F-Primary.webp?v=1728724472"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46046685167842,"title":"Black \/ Red \/ Small","option1":"Black \/ Red","option2":"Small","option3":null,"sku":"5326945","requires_shipping":true,"taxable":true,"featured_image":{"id":42315482923234,"product_id":8735102894306,"position":10,"created_at":"2024-10-12T10:14:55+01:00","updated_at":"2024-10-12T10:14:56+01:00","alt":null,"width":1440,"height":1080,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496","variant_ids":[46046685167842,46046685200610,46046685233378,46046685266146]},"available":false,"name":"Trek Speed Concept SLR 9 - Black \/ Red \/ Small","public_title":"Black \/ Red \/ Small","options":["Black \/ Red","Small"],"price":990000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":34802623676642,"position":10,"preview_image":{"aspect_ratio":1
Pletscher Comp Flex 40
.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46046685200610,"title":"Black \/ Red \/ Medium","option1":"Black \/ Red","option2":"Medium","option3":null,"sku":"5326946","requires_shipping":true,"taxable":true,"featured_image":{"id":42315482923234,"product_id":8735102894306,"position":10,"created_at":"2024-10-12T10:14:55+01:00","updated_at":"2024-10-12T10:14:56+01:00","alt":null,"width":1440,"height":1080,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496","variant_ids":[46046685167842,46046685200610,46046685233378,46046685266146]},"available":false,"name":"Trek Speed Concept SLR 9 - Black \/ Red \/ Medium","public_title":"Black \/ Red \/ Medium","options":["Black \/ Red","Medium"],"price":990000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,
"id":34802623676642,"position":10,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46046685233378,"title":"Black \/ Red \/ Large","option1":"Black \/ Red","option2":"Large","option3":null,"sku":"5326947","requires_shipping":true,"taxable":true,"featured_image":{"id":42315482923234,"product_id":8735102894306,"position":10,"created_at":"2024-10-12T10:14:55+01:00","updated_at":"2024-10-12T10:14:56+01:00","alt":null,"width":1440,"height":1080,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496","variant_ids":[46046685167842,46046685200610,46046685233378,46046685266146]},"available":false,"name":"Trek Speed Concept SLR 9 - Black \/ Red \/ Large","public_title":"Black \/ Red \/ Large","options":["Black \/ Red","Large"],"price":990000,"weight":0,"compare_at_price":null,"inventory_ma
nagement":"shopify","barcode":"","featured_media":{"alt":null,"id":34802623676642,"position":10,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46046685266146,"title":"Black \/ Red \/ Extra Large","option1":"Black \/ Red","option2":"Extra Large","option3":null,"sku":"5326948","requires_shipping":true,"taxable":true,"featured_image":{"id":42315482923234,"product_id":8735102894306,"position":10,"created_at":"2024-10-12T10:14:55+01:00","updated_at":"2024-10-12T10:14:56+01:00","alt":null,"width":1440,"height":1080,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496","variant_ids":[46046685167842,46046685200610,46046685233378,46046685266146]},"available":false,"name":"Trek Speed Concept SLR 9 - Black \/ Red \/ Extra Large","public_title":"Black \/ Red \/ Extra Large","options":["Black \/ Red","Extra Large"],"price":990000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":34802623676642,"position":10,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496"}},"requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Primary.webp?v=1728724480","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt5.webp?v=1728724528","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt6.webp?v=1728724535","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Accessory3.webp?v=1728724551","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Accessory4.webp?v=1728724558","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Accessory2.webp?v=1728724544","\/\/proj
ektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt1.webp?v=1728724512","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt3.webp?v=1728724520","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-A-Primary.webp?v=1728724486","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496","\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-24-35757-F-Primary.webp?v=1728724472"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Primary.webp?v=1728724480","options":["Colour","Size"],"media":[{"alt":null,"id":34802622988514,"position":1,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Primary.webp?v=1728724480"},"aspect_ratio":1.333,"height":1080,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Primary.webp?v=1728724480","width":1440},{"alt":null,"id
rojektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt1.webp?v=1728724512"},"aspect_ratio":1.333,"height":1080,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt1.webp?v=1728724512","width":1440},{"alt":null,"id":34802624200930,"position":8,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt3.webp?v=1728724520"},"aspect_ratio":1.333,"height":1080,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9_22_35757_E_Alt3.webp?v=1728724520","width":1440},{"alt":null,"id":34802623152354,"position":9,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-A-Primary.webp?v=1728724486"},"aspect_ratio":1.333,"height":1080,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-A-Primary.webp?v=1728724486","width":144
Cargo rack
0},{"alt":null,"id":34802623676642,"position":10,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496"},"aspect_ratio":1.333,"height":1080,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-25-35757-B-Primary.webp?v=1728724496","width":1440},{"alt":null,"id":34802622562530,"position":11,"preview_image":{"aspect_ratio":1.333,"height":1080,"width":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-24-35757-F-Primary.webp?v=1728724472"},"aspect_ratio":1.333,"height":1080,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/SpeedConceptSLR9-24-35757-F-Primary.webp?v=1728724472","width":1440}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003ch4\u003eThe Speed Concept SLR 9 is an aerodynamic carbon triathlon bike engineered for incredible speed and seamless integration. Every bit of this bike – from the light
here the bottom of the book is touching the wall. The distance from the marked spot to the floor is your height.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat is your inside leg?\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003eHow to measure: Stand barefoot with your back straight and against a wall. Tuck a ruler or something that extends to the floor between your legs. Using both hands, and keeping it level, pull the ruler up into your crotch as if you were sitting on the saddle. Measure the distance from the top edge of the ruler to the ground to find your inside leg measurement. Your inside leg is very important to your final bike size so please measure carefully.\u003c\/p\u003e\n\u003csection data-v-05762449=\"\" id=\"SizingComponent\" data-magellan-target=\"SizingComponent\" class=\"sizing-and-fit-aftermarket-component sizing-table grid-container mb-6\"\u003e\n\u003cdiv data-v-05762449=\"\" class=\"rider-sizing mb-2\"\u003e\n\u003cdiv data-v-4052fbf6=\"\" data-v-05762449=\"\"\u003e\n
\u003cdiv data-v-4052fbf6=\"\" class=\"size-table\"\u003e\n\u003ctable data-v-3ac87600=\"\" data-v-4052fbf6=\"\" class=\"trek-table trek-table--hstripe trek-table--borderless trek-table--centered trek-table--small trek-table--sticky-headers trek-table--row-headers\" qaid=\"size-table\"\u003e\n\u003cthead data-v-3ac87600=\"\"\u003e\n\u003ctr data-v-3ac87600=\"\"\u003e\n\u003cth data-v-3ac87600=\"\" scope=\"col\" class=\"font-bold\" qaid=\"size-table-column-header-Size\"\u003eSize\u003c\/th\u003e\n\u003cth data-v-3ac87600=\"\" scope=\"col\" class=\"font-bold\" qaid=\"size-table-column-header-Rider Height\"\u003eRider Height\u003c\/th\u003e\n\u003cth data-v-3ac87600=\"\" scope=\"col\" class=\"font-bold\" qaid=\"size-table-column-header-Inseam\"\u003eInseam\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody data-v-3ac87600=\"\"\u003e\n\u003ctr data-v-3ac87600=\"\"\u003e\n\u003cth data-v-3ac87600=\"\" scope=\"row\" qaid=\"size-table-row-header-S\"\u003eS\u003c\/th\u003e\n\u003ctd data-v-3ac87600=\
\"GeometryComponent\" data-magellan-target=\"GeometryComponent\" class=\"sizing-and-fit-aftermarket-component sizing-table grid-container mb-6\"\u003e\u003c\/section\u003e"};
window._RestockRocketConfig.variantsInventoryPolicy = {46046684774626 : "deny",46046684807394 : "deny",46046684840162 : "deny",46046684872930 : "deny",46046684905698 : "deny",46046684938466 : "deny",46046684971234 : "deny",46046685004002 : "deny",46046685036770 : "deny",46046685069538 : "deny",46046685102306 : "deny",46046685135074 : "deny",46046685167842 : "deny",46046685200610 : "deny",46046685233378 : "deny",46046685266146 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {46046684774626 : parseInt("0"),46046684807394 : parseInt("0"),46046684840162 : parseInt("0"),46046684872930 : parseInt("0"),46046684905698 : parseInt("0"),46046684938466 : parseInt("0"),46046684971234 : parseInt("0"),46046685004002 : parseInt("0"),46046685036770 : parseInt("0"),46046685069538 : parseInt("0"),46046685102306 : parseInt("0"),4
MIK-compatible alloy rear rack
6046685135074 : parseInt("0"),46046685167842 : parseInt("0"),46046685200610 : parseInt("0"),46046685233378 : parseInt("0"),46046685266146 : parseInt("0"),};
window._RestockRocketConfig.variantsPreorderCount = {46046684774626 : parseInt(""),46046684807394 : parseInt(""),46046684840162 : parseInt(""),46046684872930 : parseInt(""),46046684905698 : parseInt(""),46046684938466 : parseInt(""),46046684971234 : parseInt(""),46046685004002 : parseInt(""),46046685036770 : parseInt(""),46046685069538 : parseInt(""),46046685102306 : parseInt(""),46046685135074 : parseInt(""),46046685167842 : parseInt(""),46046685200610 : parseInt(""),46046685233378 : parseInt(""),46046685266146 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {46046684774626 : null,46046684807394 : null,46046684840162 : null,46046684872930 : null,46046684905698 : null,46046684938466 : null,46046684971234 : null,46046685004002 : null,46046685036770 : null,46046685069538 : null,46046685102306 : null,46046685135074 : nu
3378 : null,46046685266146 : null,};
window._RestockRocketConfig.variantsShippingText = {46046684774626 : "",46046684807394 : "",46046684840162 : "",46046684872930 : "",46046684905698 : "",46046684938466 : "",46046684971234 : "",46046685004002 : "",46046685036770 : "",46046685069538 : "",46046685102306 : "",46046685135074 : "",46046685167842 : "",46046685200610 : "",46046685233378 : "",46046685266146 : "",};
window._RestockRocketConfig.variantsShippingTextForMarket = {46046684774626 : null,46046684807394 : null,46046684840162 : null,46046684872930 : null,46046684905698 : null,46046684938466 : null,46046684971234 : null,46046685004002 : null,46046685036770 : null,46046685069538 : null,46046685102306 : null,46046685135074 : null,46046685167842 : null,46046685200610 : null,46046685233378 : null,46046685266146 : null,};
window._RestockRocketConfig.selected_variant_id = 46046684905698;
window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019cd40b-736e-74a5-adbe-431365bfd910/restockrocket-1-465/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019cd40b-736e-74a5-adbe-431365bfd910/restockrocket-1-465/assets/restockrocket-collection.js'
window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1)
window._RestockRocketConfig.host = 'https://app.restockrocket.io'
const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds
const LIQUID_CACHE_MAX_AGE = 2 * 60 * 60; // 2 hours in seconds
// Calculate Liquid cache freshness once at initialization
const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt;
// Validate timestamp and calculate cache age
if (!l
iquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) {
console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh');
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else {
const now = Math.floor(Date.now() / 1000); // Current time in seconds
const liquidCacheAge = now - liquidRenderedAt; // Age in seconds
// Handle client clock ahead of server
if (liquidCacheAge 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
<
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')
function applyTranslations(settings) {
try {
// Skip translation logic entirely if multi-language is not enabled
if (!settings ||
];
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;
}
}
// Setup event listener for cart selling plan updates
// This must be called before any scripts are loaded to avoid race conditions
function setupCartSellingPlanUpdater(settings) {
// Setup listener regardless - updateCartSellingPlans has its own guards
// This ensures cleanup happens even when preorders are disabled globally
// Listen for stoq:inventory-data-loaded event dispatched by api.js
window.addEventListener('stoq:inventory-data-loaded', function(event) {
console.debug('STOQ - Inventory data loaded, updating cart selling plans');
if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) {
window._RestockRocket.updateCartSellingPlans()
.then(hasUpdates => {
if (hasUpdates) {
console.debug('STOQ - cart selling plans updated successfully');
} else {
console.debug('STOQ - no cart selling plan updates needed');
}
})
.catch(error => {
console.error('STOQ - error updating cart selling plans:', error);
});
}
});
}
// 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.S
SKS plastic, rear
hopify.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 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(cac
Weight
<
S-M - 28.40 kg (600 Wh) / 29.30 kg (800 Wh)
<
Weight limit
<
We reserve the right to make changes to the product information contained on this site at any time without notice, including with respect to equipment, specifications, models, colours, materials and pricing. Due to supply chain issues, compatible parts may be substituted at any time without notice.
ont-normal border-b-2 border-gray-10\"\u003eThis bike has a maximum total weight limit (combined weight of bicycle, rider and cargo) of 352 lb (160 kg).\u003c\/dd\u003e\n\u003c\/dl\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp data-v-631a2fc2=\"\" class=\"mt-2 mb-1\"\u003eWe reserve the right to make changes to the product information contained on this site at any time without notice, including with respect to equipment, specifications, models, colours, materials and pricing. Due to supply chain issues, compatible parts may be substituted at any time without notice.\u003c\/p\u003e\n\u003cp data-v-631a2fc2=\"\" class=\"mb-1\"\u003eBike and frame weights are based on pre-production painted frames at time of publication. Weights may vary in final production.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cfooter class=\"b2b-buying-zone__options cell medium-6 large-12 lg:pt-2\" data-v-fa0c522c=\"\"\u003e\n\u003cdiv class=\"mb-4 w-full\" data-v-fa0c522c=\"\"
\u003e\n\u003cdiv class=\"mb-2\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"attribute-color\"\u003e\n\u003cdiv class=\"buying-zone__form-label-group\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/footer\u003e"}
Colour
[]
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Diamant Suvea Trip Plus (600 Wh)",
"url": "https:\/\/projektride.co.uk\/products\/diamant-suvea-trip-plus-600-wh","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/files\/SuveaTripPlusLS600WhAB-25-49653-A-Primary_small.avif?v=1764691856"
],"description": "\n\nThe Suvea E-SUV is not an electric car, but an exciting concept for an e-bike that combines sporty experiences with maximum utility. This includes: range and comfort, safety and control, dynamics and luggage transport. With many innovative approaches like the incredibly versatile Clever Rack Pro, an e-bike is created that moves towards freedom on any terrain.\n \n\n*Please note – spec applies to all sizes unless listed separately\n\nFrameset\n\n\n\nFrame\n\n\nHigh-performance hydroformed alloy, Smart Routing for cables, UDH dropout, belt split, ringlock mount\n\n\nFork\n\n\nSR Suntour Mobie 34, air spring, lockout, 100 mm travel\n\n\n\n\n\n\n\nWheels\n\n\n\nHub front\n\n\nShimano TC500 alloy, CentreLock, 110x15 mm thru axle\n\n\nHub rear\n\n\nShimano TC500 alloy, CentreLock, 148x12 mm thru axle\n\n\nSkewer rear\n\n\nBontrager Switch thru-axle, removable lever\n\n\nRim\n\nBontrager Kovee, double-wall, Tubeless-Ready, 32-hole, 23 mm width, Presta valve\n\nSpokes\n\n\n14 g stainless steel, black\n\n\nTyre\n\n\nSchwalbe Johnny Watts 365, reflective strip, puncture protection, 65-584\n\n\n\n\n\n\n\nE-system\n\n\n\nBattery\n\n\nBosch PowerTube 600\n\n\nCharger\n\n\nBosch standard 4A, 230V, smart system\n\n\nController\n\n\nBosch Kiox 500, smart system\n\n\nComputer\n\n\nBosch LED remote, smart system\n\n\nMotor\n\n\nBosch Performance Line CX, 20 mph \/ 32 km\/h max assist (25 km\/h max assist in EU and APAC)\n\n\n\n\n\n\n\nDrivetrain\n\n\n\nShifter\n\n\nShimano CUES U6000 w\/optical gear display, 10-speed\n\n\nRear derailleur\n\n\nShimano CUES U6000 GS\n\n\n*Crank\n\n\nSize: S-M\nProWheel alloy, 165mm length\n\n\nSize: L-XLProWheel alloy, 170 mm length\n\n\nChainring\n\n\nAlloy, with 40T narrow-wide steel ring, alloy guard\n\n\nCassette\n\n\nShimano CUES LG400, LINKGLIDE, 11-48, 10-speed\n\n\nChain\n\n\nShimano LG500, 9\/10\/11-speed\n\n\nPedal\n\nVP-536 nylon platform\n\n\n\n\n\n\nComponents\n\n\n\nSaddle\n\n\nSelle Royal Vivo Moderate Ergo\n\n\n*Seatpost\n\n\nSize: L-XL\nAluminium with suspension, 350 mm long, with adjustable spring rate\n\n\nSize: S-M\nAluminium with suspension, 300 mm long, with adjustable spring rate\n\n\nHandlebar\n\n\nErgotec Ergo Series XXL, 31.8 mm, 30 mm rise, 16 degree sweep\n\n\nGrips\n\n\nErgotec EG Active Flex, lock on, flex adjustment\n\n\nStem\n\n\nAluminium, adjustable, 31.8 mm, Blendr-compatible, with display mount\n\n\nBrake\n\n\nMagura MT Thirty, 4-piston hydraulic disc\n\n\nBrake rotor\n\n\nMagura MDR-C, 203 mm\n\n\n\n\n\n\n\nAccessories\n\n\n\n*Light\n\n\nSize: S-M, L-XL\nHerrmans H-Black MR5-E, 140 Lumen, 40 Lux, LED, headlight\n\n\nSize: S-M, L-XL\nSpanninga Pimento Large, with brake light\n\n\nKickstand\n\n\nPletscher Comp Flex 40\n\n\nCargo rack\n\n\nMIK-compatible alloy rear rack\n\n\nMudguard\n\n\nSKS plastic, rear\n\n\n\n\n\n\n\nWeight\n\n\n\nWeight\nS-M - 28.40 kg (600 Wh) \/ 29.30 kg (800 Wh)\nWeight limit\nThis bike has a maximum total weight limit (combined weight of bicycle, rider and cargo) of 352 lb (160 kg).\n\n\n\n\n\nWe reserve the right to make changes to the product information contained on this site at any time without notice, including with respect to equipment, specifications, models, colours, materials and pricing. Due to supply chain issues, compatible parts may be substituted at any time without notice.\nBike and frame weights are based on pre-production painted frames at time of publication. Weights may vary in final production.\n\n\n\n\n\n\n\n\n\n\n\n\n","brand": {
"@type": "Thing",
"name": "Trek"
},"gtin8": "","offers": [{
"@type" : "Offer","availability" : "http://schema.org/OutOfStock",
"price" : 4200.0,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/diamant-suvea-trip-plus-600-wh?variant=56504842387839"
}
]
}
es, compatible parts may be substituted at any time without notice.\u003c\/p\u003e\n\u003cp data-v-631a2fc2=\"\" class=\"mb-1\"\u003eBike and frame weights are based on pre-production painted frames at time of publication. Weights may vary in final production.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cfooter class=\"b2b-buying-zone__options cell medium-6 large-12 lg:pt-2\" data-v-fa0c522c=\"\"\u003e\n\u003cdiv class=\"mb-4 w-full\" data-v-fa0c522c=\"\"\u003e\n\u003cdiv class=\"mb-2\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"attribute-color\"\u003e\n\u003cdiv class=\"buying-zone__form-label-group\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/footer\u003e"};
window._RestockRocketConfig.variantsInventoryPolicy = {56504842387839 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {56504842387839 : parseInt("0"),};
window._RestockRocketConfig.variantsPreorderCount = {56504842387839 : parseIn
431365bfd910/restockrocket-1-465/assets/restockrocket-collection.js'
window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1)
window._RestockRocketConfig.host = 'https://app.restockrocket.io'
const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds
const LIQUID_CACHE_MAX_AGE = 2 * 60 * 60; // 2 hours in seconds
// Calculate Liquid cache freshness once at initialization
const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt;
// Validate timestamp and calculate cache age
if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) {
console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh');
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else {
const now = Math.floor(Date.now() / 1000); // Current time in seconds
const liquidCacheAge = now - liquidRenderedAt; // Age i
<
<
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
<
!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) {
// No matching locale has translations; drop payload to save memory
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(function(key) {
const value = translatedFields[key
&& 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);
});
}
});
}
// 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.S