]; 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
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

fig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'search' && (settings.show_button_on_search || settings.preorder_search_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'page' && (settings.show_button_on_page || settings.preorder_page_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'product') { createRestockRocketScript(window._RestockRocketConfig.scriptUrlProduct); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enab

Header Image

Battery SparesOther

Cycle To Work Schemes
{"id":8664112988386,"title":"Shimano charging adapter for BT-E8030 \/ E8035 - SM-BTE80","handle":"shimano-charging-adapter-for-bt-e8030-e8035-sm-bte80","description":"\u003cul\u003e\n\u003cli\u003eSTEPS SM-BTE80 charging adapter for BT-E8030 \/ E8035\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cul class=\"attributesSpecification\"\u003e\n\u003cli\u003e\n\u003cdiv class=\"label\"\u003eColour\u003c\/div\u003e\n\u003cdiv class=\"value\"\u003eBlack\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cdiv class=\"label\"\u003eSize\u003c\/div\u003e\n\u003cdiv class=\"value\"\u003eOne size\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cdiv class=\"label\"\u003eProduct Type\u003c\/div\u003e\n\u003cdiv class=\"value\"\u003eBattery Spares\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!----\u003e","published_at":"2024-08-03T12:27:23+01:00","created_at":"2024-08-03T12:27:25+01:00","vendor":"Shimano","type":"Accessories","tags":["Charger","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":3699,"price_min":3699,"price_max":3699,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":45767270531298,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"SMBTE80","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Shimano charging adapter for BT-E8030 \/ E8035 - SM-BTE80","public_title":null,"options":["Default Title"],"price":3699,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445","options":["Title"],"media":[{"alt":null,"id":34386260918498,"position":1,"preview_image":{"aspect_ratio":1.002,"height":1198,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445"},"aspect_ratio":1.002,"height":1198,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445","width":1200}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cul\u003e\n\u003cli\u003eSTEPS SM-BTE80 charging adapter for BT-E8030 \/ E8035\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cul class=\"attributesSpecification\"\u003e\n\u003cli\u003e\n\u003cdiv class=\"label\"\u003eColour\u003c\/div\u003e\n\u003cdiv class=\"value\"\u003eBlack\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cdiv class=\"label\"\u003eSize\u003c\/div\u003e\n\u003cdiv class=\"value\"\u003eOne size\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cdiv class=\"label\"\u003eProduct Type\u003c\/div\u003e\n\u003cdiv class=\"value\"\u003eBattery Spares\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!----\u003e"}
Insure Your Bike
{ "@context": "http://schema.org/", "@type": "Product", "name": "Shimano charging adapter for BT-E8030 \/ E8035 - SM-BTE80", "url": "https:\/\/projektride.co.uk\/products\/shimano-charging-adapter-for-bt-e8030-e8035-sm-bte80","image": [ "https:\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10_1200x.png?v=1722684445" ],"description": "\nSTEPS SM-BTE80 charging adapter for BT-E8030 \/ E8035\n\n\n\nColour\nBlack\n\n\nSize\nOne size\n\n\nProduct Type\nBattery Spares\n\n\n","sku": "SMBTE80","brand": { "@type": "Thing", "name": "Shimano" },"gtin8": "","offers": [{ "@type" : "Offer","sku": "SMBTE80","availability" : "http://schema.org/InStock", "price" : 36.99, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/shimano-charging-adapter-for-bt-e8030-e8035-sm-bte80?variant=45767270531298" } ] }
Brands Enve
a class="product__media product__media--featured" href="/products/hire-smith-convoy-helmet" title="Hire Lazer Compact Helmet" aria-label="Hire Lazer Compact Helmet" style="background-image: url(//projektride.co.uk/cdn/shop/files/my2023_tempo-kineticore-black_right_1400x1011800x600-removebg-preview_1_600x.png?v=1747484784)"> span class="visually-hidden">Hire Lazer Compact Helmet Hire Lazer Compact HelmetHandlebars
£0.00
Hire Ortlieb 40L Pannier Bags
Headsets>
Complete Brakes
Brake Rotors
£0.00
Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable Brake Spares
a class="product__media product__media--featured" href="/products/kryptolok-standard-u-lock-with-4-foot-kryptoflex-cable-hire" title="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" aria-label="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-03-09at20.04.46_560e2033-8232-4bd3-a423-3ce8c9f11849_600x.png?v=1691610428)"> span class="visually-hidden">Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable >
Front Suspension Rear Suspension
£0.00
HIRE - BIKE PACKING BUNDLEFinishing Kit
a class="product__media product__media--featured" href="/products/hire-bike-packing-bundle" title="HIRE - BIKE PACKING BUNDLE" aria-label="HIRE - BIKE PACKING BUNDLE" style="background-image: url(//projektride.co.uk/cdn/shop/files/Yourparagraphtext_600x.png?v=1747481130)">
>
Delivery & Returns
Brake Spares

INFORMATION

Working Hours

Mon - Fri: 09:00 - 18:30

Sat: 9:00 - 16:00
Sun: Closed

Tel
0131 374 5324
Location
82 Newington Road
Edinburgh
EH9 1QN

© 2026,
ProjektRide
XS, S, M, ML, L, XL .
Brakes
Shimano CUES U6030 Website by
Complete BrakesJuan Borges Designs
.
Brake RotorsSize:
 
XS, S, M, ML, L, XL
Brake Pads
Shimano CUES hydraulic disc, flat mount 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.liquidRenderedAt = 1773111626;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-12-28T14:44:23.508Z","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":{"disableDebugLoggingForNonPreorderItem":false},"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_allowed_countries":[],"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":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":null,"show_button_on_page":false,"insert_button_after_selector_search":null,"show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-production","collection_link_selector":"","index_link_selector":"","page_link_selector":"","search_link_selector":"","collection_check_link_visibility":true,"collection_buttons_container":null,"index_buttons_container":null,"page_buttons_container":null,"search_buttons_container":null,"extension_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_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":null,"preorder_index_badge_selector":null,"preorder_page_badge_selector":null,"preorder_search_badge_selector":null,"preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"span","preorder_button_disclaimer_insert_selector":"","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_container_selector":"","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":"","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":null,"inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":0,"market_setup_type":"single_market","shopify_app_id":5940125,"preorder_progress_bar_insert_selector":null,"preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","cache":true,"cached_at":"2026-01-08T16:12:13.364Z","multi_language_enabled":false,"translation_locale":"en"};window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[42167799447778,43916521013474,43934694998242,43934695031010,43934695620834,43935975440610,43935975473378,43935989399778,43935989432546,43935990284514,43935994118370,43935995625698,43935995855074,43936000835810,43936003195106,43936003227874,43936008012002,43936008044770,43936022757602,43936022790370,43936022823138,43936022855906,43936056115426,43936061030626,43936064930018,43936070631650,43936078037218,43936078069986,43936088195298,43936093470946,43936101138658,43936107266274,43936124076258,43936124109026,43936124141794,43936124174562,43936129941730,43936129974498,43936130007266,43936142393570,43936142426338,43936142459106,43936152060130,43936152092898,43936152125666,43936193118434,43936250429666,43936255803618,43936266682594,43936266715362,43936293978338,43936294011106,43936316424418,43936316457186,43936320880866,43936320913634,43936320946402,43936327041250,43936327074018,43936327106786,43936331661538,43936332349666,43936333103330,43936351224034,43936353714402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936401522914,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,43938308817122,43938322612450,43938322645218,43938322677986,43981336051938,43981336084706,43981336117474,43981336150242,43981345587426,43981345620194,43981345652962,43981345685730,43981357580514,43981357613282,43981362462946,43981362495714,43981362528482,43981369016546,43981369049314,43981374914786,43981374947554,43981374980322,43981392773346,43981392904418,43981695844578,43981695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,44052906967266,44052907327714,44052907360482,44052907393250,44052907426018,44052907458786,44052907491554,44052909097186,44052909129954,44140302827746,44140302893282,44140317016290,44155590508770,44155590541538,44155594211554,44155594244322,44155594277090,44155594309858,44155594342626,44155594375394,44155594440930,44155594473698,44155594506466,44195991847138,44195991945442,44329993437410,44329993470178,44329993502946,44329993535714,44329993568482,44957136584930,44957136781538,44957136945378,45068753961186,45068753993954,45069622640866,45069622903010,45069622968546,45069750730978,45069750763746,45353010921698,45353010954466,45353010987234,45353018261730,45353018294498,45353018327266,55569712382335,55569712447871,55569712480639,55570550194559,55570550227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2026-03-10T02:42:30Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-03-10T02:42:29Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-03-10T02:42:29Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,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-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_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.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];(function() { const cachedData = {"plans":[{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,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,"deliver
ine_item_property_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.","disa
Brake Spares er_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}],"disabled_plan_ids":[713813721471,713176482175],"cached_at":"2026-02-18T08:36:42Z"}; if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) { // Find the maximum updated_at from all items in old array const oldPlans = window._RestockRocketConfig.sellingPlans; const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0 ? oldPlans.reduce(function(max, plan) { // Parse dates for proper comparison (handles mixed ISO formats) if (plan.updated_at) { const planDate = new Date(plan.updated_at); const maxDate = max ? new Date(max) : null; return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max; } return max; }, '') : null; // Use cached if old array is e

Brake rotor"sku":"SMBTE80","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Shimano charging adapter for BT-E8030 \/ E8035 - SM-BTE80","public_title":null,"options":["Default Title"],"price":3699,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445","options":["Title"],"media":[{"alt":null,"id":34386260918498,"position":1,"preview_image":{"aspect_ratio":1.002,"height":1198,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445"},"aspect_ratio":1.002,"height":1198,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2024-08-03at10.43.10.png?v=1722684445","width":1200}],"requires_selling_plan":false,"selling_plan
270531298 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {45767270531298 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {45767270531298 : null,}; window._RestockRocketConfig.variantsShippingText = {45767270531298 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {45767270531298 : null,}; window._RestockRocketConfig.selected_variant_id = 45767270531298; 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._R
<
Forks <
Shimano RT54, CentreLock, 160 mm 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
Front Suspension<<
!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<
Rotor sizeRear SuspensionhedSettings); } 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}`); // 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); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketCon<
led for ${window._RestockRocketConfig.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._RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings, preorderEnabled: settings.preorder_enabled } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } } Max brake rotor sizes: 180 mm front and rear .restock-rocket-button,.restock-rocket-button-float{opacity:1!important;border:none!important;cursor:pointer!important;background-image:none!important;box-shadow:none!important;padding:15px 20px;font-size:16px;width:100%;font-family:inherit}@font-face{font-family:OpenSans;font-weight:200;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Light.woff)}@font-face{font-family:OpenSans;font-weight:300;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Regular.woff)}@font-face{font-family:OpenSans;font-weight:600;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-SemiBold.woff)}.restock-rocket-button-container{position:relative;z-index:1;width:100%}.restock-rocket-button-container-float-right{position:fixed;z-index:123123;top:calc(50% - 200px);right:0;transform:rotate(270deg);transform-origin:bottom right}.restock-rocket-button-container-float-left{position:fixed;z-index:123123;top:calc(50% - 200px);left:40px;transform:rotate(90deg);transform-origin:top left}.restock-rocket-button-container-float-left:hover,.restock-rocket-button-container-float-right:hover,.restock-rocket-button-container:hover,.restock-rocket-button-float:hover,.restock-rocket-button:hover{opacity:.8}.restock-rocket-button{min-height:50px;margin-top:10px;margin-bottom:10px}.restock-rocket-button-collection{position:relative;font-size:13px;line-height:1;padding:7px;height:auto;z-index:3}.restock-rocket-wrapper{background-color:rgba(0,0,0,.5);z-index:123123123;width:100%;height:100%;overflow:auto;position:fixed;right:0;top:0;transition-property:all;transition-duration:.3s;display:flex;flex-direction:column;justify-content:center;}.restock-rocket-wrapper-inline{width:100%;height:100%;margin-top:20px}.restock-rocket-preorder-description{padding:10px 15px;margin-top:20px;display:flex;flex-direction:column;gap:10px;}.preorder-description-details{margin-bottom:0;display:flex;flex-direction:column;gap:10px;}.preorder-detail-item{display:flex;flex-direction:row;justify-content:start;gap:8px;align-items:center;}.restock-rocket-payment-widget{border:1px solid #ebebeb;margin-bottom:20px;}.restock-rocket-payment-option{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:15px 20px;}.restock-rocket-payment-option:not(:last-child){border-bottom:1px solid #ebebeb;}.restock-rocket-payment-input-container{flex:1 1 auto;min-width:0}.restock-rocket-preorder-discount-badge{background:#ebebeb;height:25px;line-height:25px;padding:0 15px;border-radius:25px;font-size:0.8rem;flex:0 0 auto}.restock-rocket-payment-input{margin-right:10px;margin-top:-3px;vertical-align:middle;margin-left:0;accent-color:#202223}.restock-rocket-payment-description{margin-top:4px;flex:1 1 100%}.restock-rocket-preorder-badge{font-size:13px;line-height:1;padding:5px 13px 6px;border-radius:40px;height:auto;border:none;width:auto;z-index:2;margin:0;background:0 0}.preorder-badge-collection{position:absolute;top:10px;right:10px}.preorder-badge-product{margin-left:10px}.restock-rocket-price-strike{text-decoration:line-through;color: #666666;}.restock-rocket-discounted-price{margin-left:10px;}.restock-rocket-acknowledgement-checkbox{margin-bottom:12px;display:flex;align-items:flex-start;gap:8px;font-size:14px;line-height: 1.5;}.restock-rocket-acknowledge-checkbox-input{width:18px;height:18px;margin-top:2px;cursor:pointer;flex-shrink:0;accent-color: #0d0d0d;}.restock-rocket-acknowledge-checkbox-label{flex:1;cursor:pointer;}.restock-rocket-preorder-countdown-timer{display:flex;flex-direction:column;align-items:center;padding:16px;margin:8px 0;font-family:inherit;}.restock-rocket-preorder-countdown-timer .countdown-header{font-size:16px;margin-bottom:6px;text-align:center}.restock-rocket-preorder-countdown-timer .countdown-units{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.restock-rocket-preorder-countdown-timer .countdown-unit{display:flex;flex-direction:column;align-items:center;gap:6px}.restock-rocket-preorder-countdown-timer .countdown-box{min-width:40px;padding:10px 6px;text-align:center;font-size:20px;line-height:1}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:14px;font-weight:500;text-align:center;text-transform:capitalize;opacity:.7}@media (max-width:768px){.restock-rocket-preorder-countdown-timer{padding:14px}.restock-rocket-preorder-countdown-timer .countdown-box{min-width:55px;padding:14px 10px;font-size:26px}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:11px}}@media (max-width:480px){.restock-rocket-preorder-countdown-timer{padding:12px}.restock-rocket-preorder-countdown-timer .countdown-units{width:100%;gap:10px}.restock-rocket-preorder-countdown-timer .countdown-box{width:100%;min-width:50px;padding:12px 8px;font-size:24px}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:10px}}.restock-rocket-toast{position:fixed;cursor:pointer;background:#fff;border:0;min-width:40px;min-height:40px;box-shadow:0 0 15px rgba(0,0,0,.1)!important;z-index:622004;padding:20px 30px;font-family:inherit;font-size:inherit;color:#000;display:flex;justify-content:center;align-items:center}.restock-rocket-toast a{text-decoration:none;font-weight:700;color:#000}.restock-rocket-toast .dismiss{margin-left:15px;z-index:1;font-size:20px;}.restock-rocket-toast-top{top:60px}.restock-rocket-toast-bottom{bottom:75px}.restock-rocket-toast-left,.restock-rocket-toast-right{-webkit-animation:.5s forwards slide;animation:.5s forwards slide}.restock-rocket-toast-left{left:0;transform:translateX(-100%);-webkit-transform:translateX(-100%);border-radius:0 10px 10px 0}.restock-rocket-toast-left.slide-out{-webkit-animation:.5s forwards slide-out-left;animation:.5s forwards slide-out-left}.restock-rocket-toast-right{right:0;transform:translateX(100%);-webkit-transform:translateX(100%);border-radius:10px 0 0 10px}.restock-rocket-toast-right.slide-out{-webkit-animation:.5s forwards slide-out-right;animation:.5s forwards slide-out-right}@keyframes slide{100%{transform:translateX(0)}}@-webkit-keyframes slide{100%{-webkit-transform:translateX(0)}}@keyframes 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%)}}.restock-rocket-preorder-progress-bar{padding:12px 15px;margin-bottom:20px;font-family:inherit;}.restock-rocket-preorder-progress-bar .preorder-progress-text{margin-bottom:8px;}.restock-rocket-preorder-progress-bar .preorder-progress-bar-row{display:flex;align-items:center;gap:10px;}.restock-rocket-preorder-progress-bar .preorder-progress-track{flex:1;height:12px;overflow:hidden;}.restock-rocket-preorder-progress-bar .preorder-progress-fill{display:block;height:100%;min-width:2px;transition:width 0.3s ease;}.restock-rocket-preorder-progress-bar .preorder-progress-percentage{font-weight:500;min-width:35px;text-align:right;} Finishing Kit <
Tyres<
Tubes
Tubeless<
<
Saddles
003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\u003ca href=\"https:\/\/www.trekbikes.com\/b2b\/gb\/en_GB\/p\/5315223\" class=\"block underline\"\u003eVerse Short Comp, steel rails, 145 mm width\u003c\/a\u003e\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\"\u003eSeatpost\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eBontrager alloy, 27.2 mm, 12 mm offset, 330 mm length\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\"\u003e*Handlebar\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS, S\u003cbr\u
\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXL\u003cbr\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.trekbikes.com\/b2b\/gb\/en_GB\/p\/5317072\" class=\"block underline\"\u003eBontrager Elite Gravel, alloy, 46 cm width\u003c\/a\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\"\u003eHandlebar tape\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eBontrager Supertack Perf tape\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\"\u003e*Stem\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS\u00
iv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXL\u003cbr\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.trekbikes.com\/b2b\/gb\/en_GB\/p\/5331531\" class=\"block underline\"\u003eBontrager Elite, 31.8 mm, Blendr-compatible, 7-degree, 100mm length\u003c\/a\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\"\u003e*Brake\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS, S, M, ML, L, XL\u003cbr\u003e\u003c\/span\u003e\n\u003cdiv\u003eShimano CUES U6030\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u0
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-038d3ba2=\"\" 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"}
[]
{ "@context": "http://schema.org/", "@type": "Product", "name": "Trek Checkpoint ALR 4 Gen 3", "url": "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3","image": [ "https:\/\/projektride.co.uk\/cdn\/shop\/files\/CheckpointALR4-26-49973-A-Primary_1920x.png?v=1764866082" ],"description": "\n\nThe Checkpoint ALR 4 is an aluminium gravel bike perfect for dipping your toes into the roads less travelled. Its modern endurance geometry keeps you comfortable over gravel roads and potholes, and 50 mm tyre clearance gives you room for extra grip. It comes equipped with a carbon fork, Bontrager Paradigm wheels, 11-speed Shimano CUES 8000 shifting, hydraulic disc brakes and loads of mounts for bags and gear.\n \n\n \n\n*Please note – spec applies to all sizes unless listed separately\n\nFrameset\n\n\n\nFrame\n\n\n300 Series Alpha Aluminium, Internal cable routing, 3S chain keeper, T47, UDH, rack and mudguard mounts, integrated frame bag mounts, flat-mount disc, 142x12 mm chamfered thru axle\n\n\nFork\n\n\nTrek Checkpoint, full carbon, tapered steerer, rack mounts, fender mounts, flat mount disc, 12x100mm thru axle\n\n\n\n\n\n\n\nWeight\n\n\n\nWeight\nML - 10.40 kg \/ 22.93 lbs (with TLR sealant, no tubes)\nWeight limit\nThis bike has a maximum total weight limit (combined weight of bicycle, rider and cargo) of 125 kg (275 lb).\n\n\n\n\n\nDrivetrain\n\n\n\nShifter\n\n\nShimano CUES U6030, 11-speed\n\n\nRear derailleur\n\n\nShimano CUES U8000 GS\n\n\n*Crank\n\n\nSize: XS, S\nShimano CUES FCU60301, 40T ring, 165 mm length\n\n\nSize: M, ML\nShimano CUES FCU60301, 40T ring, 170 mm length\n\n\nSize: L, XL\nShimano CUES FCU60301, 40T ring, 172.5 mm length\n\n\nBottom bracket\n\nPraxis, T47 threaded, internal bearing\n\nCassette\n\n\nShimano CUES LG700, LINKGLIDE, 11-50, 11-speed\n\n\nChain\n\n\nShimano LG500\n\n\nMax. chainring size\n1x:44 2x: 46\/30\n\n\n\n\n\nWheels\n\n\n\nHub front\n\n\nBontrager alloy, sealed bearing, CentreLock disc, 100x12 mm thru axle\n\n\nSkewer front\n\nBontrager Switch chamfered thru axle\n\nHub rear\n\n\nBontrager alloy, sealed bearing, CentreLock disc, Shimano 11-speed freehub, 142x12 mm thru axle\n\n\nSkewer rear\n\nBontrager Switch chamfered thru axle, removable lever\n\nRim\n\n\nBontrager Paradigm 23, Tubeless Ready, 24-hole, 23 mm width, Presta valve\n\n\nSpokes\n\n\n14 g stainless steel, black\n\n\nTyre\n\n\nBontrager Girona Pro, Tubeless Ready, GR puncture protection, aramid bead, 60 tpi, 700x42 mm\n\n\nTyre part\n\n\nBontrager TLR sealant, 180 ml\/6 oz\n\n\nMax tyre size\n50 mm without mudguards, 42 mm with mudguards (as measured, see manual for details)\n\n\n\n\n\nComponents\n\n\n\nSaddle\n\nVerse Short Comp, steel rails, 145 mm width\n\nSeatpost\n\n\nBontrager alloy, 27.2 mm, 12 mm offset, 330 mm length\n\n\n*Handlebar\n\n\nSize: XS, SBontrager Elite Gravel, alloy, 40 cm width\n\n\nSize: M, MLBontrager Elite Gravel, alloy, 42 cm width\n\n\nSize: LBontrager Elite Gravel, alloy, 44 cm width\n\n\nSize: XLBontrager Elite Gravel, alloy, 46 cm width\n\n\nHandlebar tape\n\n\nBontrager Supertack Perf tape\n\n\n*Stem\n\n\nSize: XSBontrager Elite, 31.8 mm, Blendr-compatible, 7-degree, 70 mm length\n\n\nSize: S, MBontrager Elite, 31.8 mm, Blendr-compatible, 7-degree, 80 mm length\n\n\nSize: ML, LBontrager Elite, 31.8 mm, Blendr-compatible, 7-degree, 90mm length\n\n\nSize: XLBontrager Elite, 31.8 mm, Blendr-compatible, 7-degree, 100mm length\n\n\n*Brake\n\n\nSize: XS, S, M, ML, L, XL\nShimano CUES U6030\n\n\nSize: XS, S, M, ML, L, XL\nShimano CUES hydraulic disc, flat mount\n\n\nBrake rotor\n\n\nShimano RT54, CentreLock, 160 mm\n\n\nRotor size\nMax brake rotor sizes: 180 mm front and rear\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","sku": "5332852","brand": { "@type": "Thing", "name": "Trek" },"gtin8": "","offers": [{ "@type" : "Offer","sku": "5332843","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715769215" }, { "@type" : "Offer","sku": "5332849","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715801983" }, { "@type" : "Offer","sku": "5332844","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715834751" }, { "@type" : "Offer","sku": "5332850","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715867519" }, { "@type" : "Offer","sku": "5332845","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715900287" }, { "@type" : "Offer","sku": "5332851","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715933055" }, { "@type" : "Offer","sku": "5332846","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715965823" }, { "@type" : "Offer","sku": "5332852","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518715998591" }, { "@type" : "Offer","sku": "5332847","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518716031359" }, { "@type" : "Offer","sku": "5332853","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518716064127" }, { "@type" : "Offer","sku": "5332848","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518716096895" }, { "@type" : "Offer","sku": "5332854","availability" : "http://schema.org/InStock", "price" : 1400.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/trek-checkpoint-alr-4-gen-3?variant=56518716129663" } ] }

Would you like to add on any equipment?
Hire Lazer Compact Helmet
a class="product__media product__media--featured" href="/products/hire-smith-convoy-helmet" title="Hire Lazer Compact Helmet" aria-label="Hire Lazer Compact Helmet" style="background-image: url(//projektride.co.uk/cdn/shop/files/my2023_tempo-kineticore-black_right_1400x1011800x600-removebg-preview_1_600x.png?v=1747484784)">
span class="visually-hidden">Hire Lazer Compact Helmet
>
>
<


Open cart

Open navigation menu



<

>
> Singular
Hire Lazer Compact HelmetEnigma
£0.00 FrogBlack
Kona
Hire Ortlieb 40L Pannier Bags
Surly a class="product__media product__media--featured" href="/products/hire-ortlieb-40l-pannier-bags" title="Hire Ortlieb 40L Pannier Bags" aria-label="Hire Ortlieb 40L Pannier Bags" style="background-image: url(//projektride.co.uk/cdn/shop/files/resize_width_1000_600x.jpg?v=1741085512)">
span class="visually-hidden">Hire Ortlieb 40L Pannier Bags
>
>
Hire Ortlieb 40L Pannier Bags
£0.00
Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable
a class="product__media product__media--featured" href="/products/kryptolok-standard-u-lock-with-4-foot-kryptoflex-cable-hire" title="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" aria-label="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-03-09at20.04.46_560e2033-8232-4bd3-a423-3ce8c9f11849_600x.png?v=1691610428)"> span class="visually-hidden">Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable>
<>
Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable £0.00© 2026, <
HIRE - BIKE PACKING BUNDLE
.< a class="product__media product__media--featured" href="/products/hire-bike-packing-bundle" title="HIRE - BIKE PACKING BUNDLE" aria-label="HIRE - BIKE PACKING BUNDLE" style="background-image: url(//projektride.co.uk/cdn/shop/files/Yourparagraphtext_600x.png?v=1747481130)">
span class="visually-hidden">HIRE - BIKE PACKING BUNDLE>
>
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.liquidRenderedAt = 1773111626;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-12-28T14:44:23.508Z","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":{"disableDebugLoggingForNonPreorderItem":false},"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_allowed_countries":[],"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":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":null,"show_button_on_page":false,"insert_button_after_selector_search":null,"show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-production","collection<
div class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/resize_width_1000_1296x_d1ffd242-63bc-4a9f-85e2-400f274532d7_600x.jpg?v=1747481423)">>
< HIRE - BIKE PACKING BUNDLE
£0.00
<
#FeaturedImage--template--15326745395426__1645734801adfd4c07 { --overlay-opacity: 0.2; }<
<
<
d=\"pdl-collapse-head-hhqjt\" class=\"pdl-collapse-item__header font-medium is-active flex-row-reverse items-center font-heading font-bold text-lg border-b-2 focusing\" type=\"button\" aria-expanded=\"true\" aria-controls=\"pdl-collapse-content-hhqjt\" tabindex=\"0\"\u003e\u003cspan class=\"flex items-center grow\"\u003eDrivetrain\u003c\/span\u003e\u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentcolor\" aria-hidden=\"true\" role=\"presentation\" class=\"pdl-icon inline-block align-middle fill-current pdl-collapse-item__icon is-active\"\u003e\u003cpath d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c\/path\u003e\u003cpath d=\"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/h2\u003e\n\u003cdiv data-v-0b4f5d85=\"\" id=\"pdl-collapse-content-hhqjt\" class=\"pdl-collapse-item__wrap\" role=\"region\" aria-hidden=\"false\" aria-labelledby=\"pdl-collapse-head-hhqjt\" data-old-padding-
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\"\u003e*Crank\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS, S\u003cbr\u003e\u003c\/span\u003e\n\u003cdiv\u003eShimano CUES FCU60301, 40T ring, 165 mm length\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eM, ML\u003cbr\u003e\u003c\/span\u003e\n\u003cdiv\u003eShimano CUES FCU60301, 40T ring, 170 mm length\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eL, XL\u003cbr\u003e\u003c\/span\u003e\n\u003cdiv\u003eShimano CUES F
der-r-2 border-gray-10\"\u003eChain\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eShimano LG500\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\"\u003eMax. chainring 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\"\u003e1x:44 2x: 46\/30\u003c\/dd\u003e\n\u003c\/dl\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-v-038d3ba2=\"\" id=\"pdl-collapse-item-e0k1xo\" class=\"pdl-collapse-item is-active\" data-name=\"85589246-65ac-4b69-be88-17d17b7d0c35\"\u003e\n\u003ch2 class=\"\"\u003e\u003cbutton id=\"pdl-collapse-head-e0k1xo\" class=\"pdl-collapse-item__header font-medium is-active flex-row-reverse items-center font-heading font-bold text-lg border-b-2 focusing\" type=\"button\" aria-expanded=\"true\" a
lex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eBontrager Paradigm 23, Tubeless Ready, 24-hole, 23 mm width, Presta valve\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\"\u003eSpokes\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003e14 g stainless steel, black\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\"\u003eTyre\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eBontrager Girona Pro, Tubeless Ready, GR puncture protection, aramid bead, 60 tpi, 700x42 mm\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\
i8dh\" class=\"pdl-collapse-item__header font-medium is-active flex-row-reverse items-center font-heading font-bold text-lg border-b-2 focusing\" type=\"button\" aria-expanded=\"true\" aria-controls=\"pdl-collapse-content-3hi8dh\" tabindex=\"0\"\u003e\u003cspan class=\"flex items-center grow\"\u003eComponents\u003c\/span\u003e\u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentcolor\" aria-hidden=\"true\" role=\"presentation\" class=\"pdl-icon inline-block align-middle fill-current pdl-collapse-item__icon is-active\"\u003e\u003cpath d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c\/path\u003e\u003cpath d=\"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\u003c\/h2\u003e\n\u003cdiv data-v-0b4f5d85=\"\" id=\"pdl-collapse-content-3hi8dh\" class=\"pdl-collapse-item__wrap\" role=\"region\" aria-hidden=\"false\" aria-labelledby=\"pdl-collapse-head-3hi8dh\" data-old-padding-top=\"\" data-old-pa
u003e\n\u003cdiv\u003eBontrager alloy, 27.2 mm, 12 mm offset, 330 mm length\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\"\u003e*Handlebar\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS, S\u003cbr\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.trekbikes.com\/b2b\/gb\/en_GB\/p\/5317069\" class=\"block underline\"\u003eBontrager Elite Gravel, alloy, 40 cm width\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eM, ML\u003cbr\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.trekbikes.com\/b2b\/gb\/en_GB\/p\/5317070\" class=\"block underline\"\u003eBontrager Elite Gravel, al
ass=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eBontrager Supertack Perf tape\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\"\u003e*Stem\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS\u003cbr\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.trekbikes.com\/b2b\/gb\/en_GB\/p\/5331528\" class=\"block underline\"\u003eBontrager Elite, 31.8 mm, Blendr-compatible, 7-degree, 70 mm length\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eS, M\u003cbr\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.trekbikes.com\/b2b\/gb\/en_GB\/p\/5331529\" class=\"block underline\"\u
Brake\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS, S, M, ML, L, XL\u003cbr\u003e\u003c\/span\u003e\n\u003cdiv\u003eShimano CUES U6030\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cspan\u003eSize:\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eXS, S, M, ML, L, XL\u003cbr\u003e\u003c\/span\u003e\n\u003cdiv\u003eShimano CUES hydraulic disc, flat mount\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\"\u003eBrake rotor\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003eShimano RT54, CentreLock, 160 mm\u003c\/div\u003e\n\u003c\/div\u003e
,56518715801983 : null,56518715834751 : null,56518715867519 : null,56518715900287 : null,56518715933055 : null,56518715965823 : null,56518715998591 : null,56518716031359 : null,56518716064127 : null,56518716096895 : null,56518716129663 : null,}; window._RestockRocketConfig.variantsShippingText = {56518715769215 : "",56518715801983 : "",56518715834751 : "",56518715867519 : "",56518715900287 : "",56518715933055 : "",56518715965823 : "",56518715998591 : "",56518716031359 : "",56518716064127 : "",56518716096895 : "",56518716129663 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {56518715769215 : null,56518715801983 : null,56518715834751 : null,56518715867519 : null,56518715900287 : null,56518715933055 : null,56518715965823 : null,56518715998591 : null,56518716031359 : null,56518716064127 : null,56518716096895 : null,56518716129663 : null,}; window._RestockRocketConfig.selected_variant_id = 56518715998591; window._RestockRocketConfig.selected_variant_available = window._RestockR
imestamp 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 in seconds // 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
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

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

fig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'search' && (settings.show_button_on_search || settings.preorder_search_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'page' && (settings.show_button_on_page || settings.preorder_page_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'product') { createRestockRocketScript(window._RestockRocketConfig.scriptUrlProduct); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enab

About Us Blog
Track Service Progress

BUY
SELL
Handlebar
RIDE CONFIDENT