img src="//projektride.co.uk/cdn/shop/files/FX3Disc_22_35021_A_Primary_2048x2048.webp?v=1728392653" alt="Trek FX 3 Disc Gen 3" class="mfp-zoom-in-cur" id="34780096889058">
<
img src="//projektride.co.uk/cdn/shop/files/FXSport5Carbon-25-47263-A-Primary_2048x2048.webp?v=1728051044" alt="Trek FX Sport 5" class="mfp-zoom-in-cur" id="34763085250786">
img src="//projektride.co.uk/cdn/shop/files/FX3Disc_22_35021_C_Alt4_2048x2048.webp?v=1728392704" alt="Trek FX 3 Disc Gen 3" class="mfp-zoom-in-cur" id="34780115632354">
ry(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._RestockRocketConf<Container.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 || !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 local
Open search bar maxRetries) {
console.debug(`STOQ - API not ready, retry ${attempt}/${maxRetries}`);
setTimeout(() => attemptCartCheck(attempt + 1), retryDelay);
} else {
console.debug('STOQ - API not loaded after max retries, skipping cart selling plan check');
}
}
attemptCartCheck();
}
See More
rames slide-out-left{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}@-webkit-keyframes slide-out-left{0%{-webkit-transform:translateX(0)}100%{-webkit-transform:translateX(-100%)}}@keyframes slide-out-right{0%{transform:translateX(0)}100%{transform:translateX(100%)}}@-webkit-keyframes slide-out-right{0%{-webkit-transform:translateX(0)}100%{-webkit-transform:translateX(100%)}}
Front SuspensionGloves
{"id":8732444590306,"title":"Trek FX 3 Disc Gen 3","handle":"trek-fx-3-disc-gen-3","description":"\u003cp\u003eFX 3 Disc is a versatile hybrid bike that's primed for performance, comfort and utility. It has features like a lightweight aluminium frame, a carbon fork, a 1x drivetrain and powerful disc brakes that stop in any weather. It's a commuting pro if you want it to be, or the perfect fitness companion on road and rail trails.\u003c\/p\u003e\n\u003cp\u003eIt's right for you if...\u003cbr\u003eYou're a commuter or fitness rider who’s having fun spending more time in the saddle. You want a great-looking bike that's versatile, comfortable and built with quality parts that will perform on longer rides.\u003c\/p\u003e\n\u003cp\u003eThe tech you get\u003cbr\u003eA lightweight aluminium frame, a carbon fork, hydraulic disc brakes for all-weather stopping power and a simple 1x drivetrain that ditches the front derailleur for less clutter and easier operation. Don't worry, with the wide-range 11-46 cassette still gives you all the gears you need to conquer hills and crush flats. Plus, a vibration-absorbing handlebar and ergonomic grips for more comfort on every ride.\u003c\/p\u003e\n\u003cp\u003eThe final word\u003cbr\u003eFX 3 Disc is a lightweight and fast fitness bike, commuter and neighbourhood cruiser all in one. For all the great things about this bike, the best tech upgrade is the simple-yet-capable 1x10 drivetrain.\u003c\/p\u003e\n\u003cp\u003eHow tall are you?\u003cbr\u003eTo measure your height, stand up straight, barefoot, with your back, heels, shoulders and head all touching a wall. While looking straight ahead, place a book or straight edge on your head and slowly push it against the wall. Your straight edge should be parallel with the floor. Mark the spot where 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\u003eWhat is your inside leg?\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-XS\"\u003eXS\u003c\/th\u003e\n\u003ctd data-v-3ac87600=\"\"\u003e\n\u003cp class=\"m-0\"\u003e147 - 1
Medium \/ Blue","public_title":"Medium \/ Blue","options":["Medium","Blue"],"price":102500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46035266371810,"title":"Medium \/ Red","option1":"Medium","option2":"Red","option3":null,"sku":"5258689","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Trek FX 3 Disc Gen 3 - Medium \/ Red","public_title":"Medium \/ Red","options":["Medium","Red"],"price":102500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46035266404578,"title":"Medium \/ White","option1":"Medium","option2":"White","option3":null,"sku":"5258701","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Trek FX 3 Disc Gen 3 - Medium \/ White","public_title":"Medium \/ White","options":["Medium","White"],"price":77500,"weight":0,"compare
Open cart
Congratulations! Your order qualifies for free shipping
get\u003c\/h3\u003e\n\u003cp\u003eA lightweight 400 Series OCLV Carbon frame and fork, a 1x SRAM Apex drivetrain with a wide range of gearing, hydraulic disc brakes, hidden mudguard mounts, a lightweight tubeless-ready Bontrager Paradigm alloy wheel set, wide, fast-rolling Bontrager GR1 Expert gravel tyres and a vibration-absorbing handlebar with ergonomic grips.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kf-block--intro cell small-12 large-4 mb-4\" qaid=\"product-overview-3\"\u003e\n\u003ch3 class=\"header--md mb-1\"\u003eThe final word\u003c\/h3\u003e\n\u003cp\u003eThe FX Sport 5 has a light and fast carbon frame and quality parts that will hold up over serious miles, including an upgraded SRAM Apex 1x drivetrain.\u003c\/p\u003e\n\u003cdiv data-v-05762449=\"\" id=\"comp_sizingTabB2BInstructionsHeightInseam_Wrapper\" data-magellan-target=\"comp_sizingTabB2BInstructionsHeightInseam_Wrapper\"\u003e\n\u003cdiv data-v-05762449=\"\" class=\"vertical-spacer-for-editorial row expand\"\u003e\n\u003csection to the floor is your height.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003cdiv data-v-05762449=\"\" class=\"yCmsComponent small-12 medium-6 vertical-spacer-1\"\u003e\n\u003carticle data-v-05762449=\"\" id=\"comp_sizingTabB2BInstructions_Inseam\" class=\"editorial-small text-left\" qaid=\"editorial-component\"\u003e\n\u003cdiv data-v-05762449=\"\" class=\"editorial-small__content\"\u003e\n\u003ch2 data-v-05762449=\"\" class=\"editorial-small__header header-small\" qaid=\"editorial-component-header\"\u003eWhat is your inside leg?\u003c\/h2\u003e\n\u003cp data-v-05762449=\"\" class=\"editorial-small__text text-weak\" qaid=\"editorial-component-body\"\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
header px-2 py-25 text-xs font-semibold\"\u003e\n\u003cspan class=\"sizing-table__alias\"\u003eF —\u003cspan\u003e \u003c\/span\u003e\u003c\/span\u003eBottom bracket height\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003e\n\u003cspan class=\"sizing-table__alias\"\u003eG —\u003cspan\u003e \u003c\/span\u003e\u003c\/span\u003eBottom bracket drop\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003e\n\u003cspan class=\"sizing-table__alias\"\u003eH —\u003cspan\u003e \u003c\/span\u003e\u003c\/span\u003eChainstay length\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003e\n\u003cspan class=\"sizing-table__alias\"\u003eI —\u003cspan\u003e \u003c\/span\u003e\u003c\/span\u003eOffset\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003e\n\u003cspan class=\"sizing-table__alias\"\u003eJ —\u003cspan\u003e \u003c\/span\u003e\u003c\/span\u03ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e6.5\u003c\/td\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e44.2\u003c\/td\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e5.0\u003c\/td\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e6.4\u003c\/td\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e107.5\u003c\/td\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e81.2\u003c\/td\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e40.0\u003c\/td\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e62.0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-v-05762449=\"\" class=\"sizing-table__body-row\"\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003eXL\u003c\/td\u003e
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Trek FX Sport 5",
"url": "https:\/\/projektride.co.uk\/products\/trek-fx-sport-9","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/files\/FXSport5Carbon-25-47263-A-Primary_1440x.webp?v=1728051044"
],"description": "\n\nFX Sport 5 is a carbon fibre fitness bike for riders who want the speed of a lightweight road bike with the comfort and control of a flat handlebar. It has an upgraded high-quality drivetrain, hydraulic disc brakes and tubeless-ready rims making it perfect for everything from solo workouts to speedy group rides.\n\nIt's right for you if...\nYou're ready to log big miles, and you prefer the feel of a flat handlebar to the drop bars that come stock on most road bikes. You prioritise comfort and performance equally, and expect your bike to grow with you as you advance in speed and distance.\n\n\nThe tech you get\nA lightweight 400 Series OCLV Carbon frame and fork, a 1x SRAM Apex drivetrain with a wide range of gearing, hydraulic disc brakes, hidden mudguard mounts, a lightweight tubeless-ready Bontrager Paradigm alloy wheel set,hema.org/InStock",
"price" : 2150.0,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/trek-fx-sport-9?variant=46025418539234"
},
{
"@type" : "Offer","sku": "5324012","availability" : "http://schema.org/InStock",
"price" : 2150.0,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/trek-fx-sport-9?variant=46025418572002"
},
{
"@type" : "Offer","sku": "5324013","availability" : "http://schema.org/InStock",
"price" : 2150.0,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/trek-fx-sport-9?variant=46025418604770"
},
{
"@type" : "Offer","sku": "5324014","availability" : "http://schema.org/InStock",
"price" : 2150.0,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/trek-fx-sport-9?variant=46025418637538"
}
]
}
The FX 2 Disc Equipped is a stylish and versatile hybrid bike that comes with a whole suite of ride-ready accessories. Train, commute or ride for fun with the lightweight aluminium frame, 18 speeds, and semi-skinny tyres that are fast on the road and stable on loose terrain.
console.log("pr-product-page");
It's right for you if...ClothingTel
You want a high-value hybrid bike with quality parts, ride-ready accessories and the superior all-weather stopping power of disc brakes.
0131 374 5324
The tech you getSocks
A lightweight aluminium frame with hydraulic disc brakes for all-weather stopping power, a Shimano drivetrain with 18 speeds and a wide range of gearing so you're never pedalling too hard or too soft, and all the accessories you need to ride!
The final word
Location
The FX 2 Disc Equipped is a go-anywhere hybrid bike with parts that perform on training rides, trips to the market or your morning commute. Plus it comes with a rear rack, mudguards and lights so you’re ready to ride straight away.
82 Newington Road
Sell Your BikeEdinburgh
EH9 1QN
How tall are you?
To measure your height, stand up straight, barefoot, with your back, heels, shoulders and head all touching a wall. While looking straight ahead, place a book or straight edge on your head and slowly push it against the wall. Your straight edge should be parallel with the floor. Mark the spot where the bottom of the book is touching the wall. The distance from the marked spot to the floor is your height.Contact Us
What is your inside leg?
Email
How 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.
window._RestockRocketConfig = window._RestockRocketConfig || {}
// Helper function to normalize locale format from hyphen to underscore (e.g., 'en-US' -> 'en_us')
// This matches the backend's Mobility.normalize_locale behavior
// Returns empty string if locale is empty or invalid (matches original behavior)
function normalizeLocale(locale) {
if (!locale || locale.trim() === '') {
return '';
}
return locale.toString().toLowerCase().replace(/-/g, '_');
}
window._RestockRocketConfig.locale = 'en';
window._RestockRocketConfig.normalizedLocale = normalizeLocale('en');
window._RestockRocketConfig.shop = 'projektride.myshopify.com';
window._RestockRocketConfig.pageType = 'product';window._RestockRocketConfig.marketId = 382140642;window._RestockRocketConfig.countryName = 'United Kingdom';
window._RestockRocketConfig.countryIsoCode = 'GB';window._RestockRocketConfig.cartInventoryQuantity = {};window._RestockRocketConfig.cachedSettings = {"id":38500,"shop_id":38436,"currency":"GBP","created_at":"2025-07-26T09:13:57.337Z","updated_at":"2025-11-11T14:27:02.312Z","enable_app":true,"enable_signup_widget":false,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":true,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":false,"css_config":"","js_config":null,"collect_promotion_consent":false,"storefront_form_promotion_consent_label":"Notify me about other news, sales, discounts & offers too","show_button_on_collection":false,"sms_default_country":"us","sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index
Open navigation menuion_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is out of stock. Get notified when it's restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":null,"preorder_add_to_cart_button_selector":"","preorder_badge_selector":"","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_enabled":false,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_
OxtsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569933140351,55569712382335,55569712415103,55569712480639,55569933173119,55570017616255,55569933074815,55570017550719,55569712447871,55569933107583,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-
perty_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","preorder_min_qua
"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfig.product = {"id":8734609080546,"title":"Trek Dual Sport 2 Gen 5","handle":"trek-dual-sport-2-gen-6","description":"\u003cp\u003eThe Dual Sport 2 is a capable and confident hybrid bike that's fun to ride from roads to rail trails and beyond. It has a light frame, a sturdy drivetrain with 18 speeds plus powerful hydraulic disc brakes for serious stopping power. Wide wheels and lofty tyres soak up bumps and rough terrain for a comfortable, confident ride on the road, light gravel trails, bike paths and more.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIt's right for you if...\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003eYou enjoy riding your bike for fun, fitness, commutes and errands. You want a light, capable hybrid bike that will stand up to your every adventure whim, with features that keep you comfortable over a varie
\u003eTo measure your height, stand up straight, barefoot, with your back, heels, shoulders and head all touching a wall. While looking straight ahead, place a book or straight edge on your head and slowly push it against the wall. Your straight edge should be parallel with the floor. Mark the spot where 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","published_
"public_title":"Blue \/ Medium","options":["Blue","Medium"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46044484665570,"title":"Blue \/ Large","option1":"Blue","option2":"Large","option3":null,"sku":"5275853","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Trek Dual Sport 2 Gen 5 - Blue \/ Large","public_title":"Blue \/ Large","options":["Blue","Large"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46044484698338,"title":"Blue \/ Extra Large","option1":"Blue","option2":"Extra Large","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Trek Dual Sport 2 Gen 5 - Blue \/ Extra Large","public_title":"Blue \/ Extra Large","options":["Blue","Extra Large"],"price":65000,"weight":0,"compare
locations":[]},{"id":46044484796642,"title":"Green \/ Large","option1":"Green","option2":"Large","option3":null,"sku":"5275858","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Trek Dual Sport 2 Gen 5 - Green \/ Large","public_title":"Green \/ Large","options":["Green","Large"],"price":75000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46044484829410,"title":"Green \/ Extra Large","option1":"Green","option2":"Extra Large","option3":null,"sku":"5275859","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Trek Dual Sport 2 Gen 5 - Green \/ Extra Large","public_title":"Green \/ Extra Large","options":["Green","Extra Large"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46044484862178,"title":"Grey \/ Small","option1":"Grey",
vailable":false,"name":"Trek Dual Sport 2 Gen 5 - Grey \/ Large","public_title":"Grey \/ Large","options":["Grey","Large"],"price":75000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":46044484960482,"title":"Grey \/ Extra Large","option1":"Grey","option2":"Extra Large","option3":null,"sku":"5275849","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Trek Dual Sport 2 Gen 5 - Grey \/ Extra Large","public_title":"Grey \/ Extra Large","options":["Grey","Extra Large"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/DualSport2_23_36823_B_Primary.webp?v=1728641412","\/\/projektride.co.uk\/cdn\/shop\/files\/DualSport2_23_36823_A_Primary.webp?v=1728641422","\/\/projektride.co.uk\/cdn\/shop\/files\/DualSport2_23_36823_C_Prim
_23_36823_C_Alt8.webp?v=1728641398","width":1440}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp\u003eThe Dual Sport 2 is a capable and confident hybrid bike that's fun to ride from roads to rail trails and beyond. It has a light frame, a sturdy drivetrain with 18 speeds plus powerful hydraulic disc brakes for serious stopping power. Wide wheels and lofty tyres soak up bumps and rough terrain for a comfortable, confident ride on the road, light gravel trails, bike paths and more.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIt's right for you if...\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003eYou enjoy riding your bike for fun, fitness, commutes and errands. You want a light, capable hybrid bike that will stand up to your every adventure whim, with features that keep you comfortable over a variety of terrain.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe tech you get\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003eA lightweight aluminium fram
raight edge on your head and slowly push it against the wall. Your straight edge should be parallel with the floor. Mark the spot where 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"};
window._RestockRocketConfig.variantsInventoryPolicy = {46044484600034 : "deny",46044484632802 : "deny",46044484665570 : "deny",46044484698338 : "deny",46044484731106 : "deny",
oduct = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/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
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 cach
}
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
estockRocketConfig.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;
}
}
// 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(vali
ttings (even if expired), use them as fallback
if (cachedSettings) {
console.debug('STOQ - using expired cached settings as fallback');
initializeScripts(cachedSettings);
} else {
console.error('STOQ - failed to load settings:', error);
}
})
.catch(function(e) {
console.error(e)
})
}
function initializeScripts(settings) {
settings = applyTranslations(settings);
window._RestockRocketConfig.settings = settings;
console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`);
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);
})
if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) {
create
console.debug(`STOQ - no scripts enabled for ${window._RestockRocketConfig.pageType}`);
}
// Check and update cart selling plans after scripts are loaded
if (settings.preorder_enabled) {
updateCartSellingPlans();
}
// Dispatch custom event when app is loaded
const appLoadedEvent = new CustomEvent('stoq:loaded', {
detail: {
pageType: window._RestockRocketConfig.pageType,
enabled: settings.enable_app,
settings: settings
}
});
console.debug('STOQ - dispatching app loaded event');
window.dispatchEvent(appLoadedEvent);
}
}
function updateCartSellingPlans() {
// Wait for the API to be available with retries
const maxRetries = 10;
const retryDelay = 500;
function attemptCartCheck(attempt = 1) {
if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) {
window._RestockRocket.updateCartSellingPlans()
.then(hasUpdates => {
if
Allant+ 9S is as speedy and sleek as it is comfortable to ride. A Bosch Performance Speed motor and long-range battery, suspension parts and low-maintenance CVT hub and belt drive make this e-bike your perfect daily companion.