anslations":{}}],"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_enabled":true,"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":7130718

3ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eLight\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eWeight\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e9.5 kg (size M)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eWeight frameset\u003c\/td\u003e\n\u003ctd class=\"xl66\" align=\"left\"\u003e1380 g frame (size M, incl. TA, hanger) \/ 550 g fork (300 mm steerer, incl. TA)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eMaximum rider weight\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e115 kg incl. luggage\u003cspan\u003e \u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"23\"\u003e\n\u003ctd height=\"23\" class=\"xl72\"\u003eASTM riding condition\u003c\/td\u003e\n\u003ctd class=\"xl73\"\u003e2\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tboBikepacking Frame Kit Bundle - HIREdy\u003e\n\u003c\/table\u003e\n\u003cdl id=\"DetailAttributes\" class=\"AttributeList hToggle clearfix\"\u003e\u003c\/dl\u003e\n\u003c!----\u003e","published_at":"2024-07-04T10:37:25+01:00","created_at":"2024-07-04T10:37:25+01:00","vendor":"Bombtrack","type":"Bicycles","tags":["HOOK EXT C","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":380000,"price_min":380000,"price_max":380000,"available":false,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":45661515546850,"title":"Blue \/ Small - 50","option1":"Blue","option2":"Small - 50","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT C Complete Bike - Blue \/ Small - 50","public_title":"Blue \/ Small - 50","options":["Blue","Small - 50"],"price":380000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":f

alse,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661515579618,"title":"Blue \/ Medium - 53","option1":"Blue","option2":"Medium - 53","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT C Complete Bike - Blue \/ Medium - 53","public_title":"Blue \/ Medium - 53","options":["Blue","Medium - 53"],"price":380000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661515612386,"title":"Blue \/ Large - 57","option1":"Blue","option2":"Large - 57","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT C Complete Bike - Blue \/ Large - 57","public_title":"Blue \/ Large - 57","options":["Blue","Large - 57"],"price":380000,"weight":0,"compare_at_price":null,"inventory_managem ent":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661515645154,"title":"Black \/ Small - 50","option1":"Black","option2":"Small - 50","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT C Complete Bike - Black \/ Small - 50","public_title":"Black \/ Small - 50","options":["Black","Small - 50"],"price":380000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661515677922,"title":"Black \/ Medium - 53","option1":"Black","option2":"Medium - 53","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT C Complete Bike - Black \/ Medium - 53","public_title":"Black \/ Medium - 53","options":["Black","Medium - 53"],"pr
ice":380000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45661515710690,"title":"Black \/ Large - 57","option1":"Black","option2":"Large - 57","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT C Complete Bike - Black \/ Large - 57","public_title":"Black \/ Large - 57","options":["Black","Large - 57"],"price":380000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_01_800x800_crop_center_2x_7ff35e4f-1062-48de-9550-b61b5a901e99.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_02_800x800_crop_center_2x_8cda
df65-6105-43e5-8a81-fd1a7dca4d1e.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_03_800x800_crop_center_2x_fe322823-d196-4acd-8abf-8a49c4bdbdd0.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_04_800x800_crop_center_2x_01bb4b11-b615-4ccf-adcd-83e46bf83ffb.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_05_800x800_crop_center_2x_068c0d1d-9db2-4b27-b13e-78cf9199b088.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_06_800x800_crop_center_2x_7b3b67a6-2f11-44e9-9c9d-b05943f6b18d.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_07_800x800_crop_center_2x_528a830f-a440-470d-94d1-2d1c9c083df1.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_08_800x800_crop_center_2x_127ba9fb-ef98-4220-b4e6-2f8733e4935f.webp?v=1720085658","\/\/projektride.co.uk\/This is a hire itemcdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_09_800x800_crop_center_2x_8124f702-997f-469f-8bfd-12a6c81f8fc9.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_10_800x800_crop_center_2x_fbaf22c5-45dc-4c92-98ce-ac80be0b72e5.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_11_800x800_crop_center_2x_c3b76446-538d-4d7c-bd19-9805d8acff54.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_13_800x800_crop_center_2x_3f936826-bbd9-493c-9c47-a9334c66ec52.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_01_800x800_crop_center_2x_12b0c1b6-ab51-45ca-b21e-a9e07c43517f.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_02_800x800_crop_center_2x_275d8bd1-7b6b-4bc7-8cb4-0d1cf7e574af.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_03_800x800_c
rop_center_2x_93e3e42d-9eb3-4674-a15d-c71f41faa7b6.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_04_800x800_crop_center_2x_f54d160f-a206-4283-85ba-2b3d425b6c48.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_06_800x800_crop_center_2x_a19bb0c9-7efb-4d32-84c2-650d7e94f865.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_08_800x800_crop_center_2x_a7504d66-d3a1-483a-8b38-4184c01aa3ec.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_09_800x800_crop_center_2x_b3fe4f54-b7cc-4018-a7e4-ea872bc68d79.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_10_800x800_crop_center_2x_3d8ef6a3-01c2-4fa0-902e-0a17662b1714.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_11_800x800_crop_center_2x_726b5174-2ccc-4c0b-80fc-4aa745b2cea8.w ebp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_12_800x800_crop_center_2x_4e99c3b9-4cc3-4b7f-b74e-aa2d23534526.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_13_800x800_crop_center_2x_299a193b-fc95-41d4-a2e9-8048cbc4d4c9.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_14_800x800_crop_center_2x_548d3a90-fc40-4b11-a1c8-92f1da8ea42f.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_15_800x800_crop_center_2x_c8459b19-9bd2-48a5-b440-c8574302f14a.webp?v=1720085658","\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_16_800x800_crop_center_2x_54d2ead6-a60a-4824-a66a-00a37ed400cb.webp?v=1720085658"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_01_800x800_crop_center_2x_7ff35e4f-1062-48de-9550-b61b5a901e99.webp?v=1720085658","options":["Color","
Size"],"media":[{"alt":null,"id":34184843133154,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_01_800x800_crop_center_2x_7ff35e4f-1062-48de-9550-b61b5a901e99.webp?v=1720085658"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_01_800x800_crop_center_2x_7ff35e4f-1062-48de-9550-b61b5a901e99.webp?v=1720085658","width":1600},{"alt":null,"id":34184843165922,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_02_800x800_crop_center_2x_8cdadf65-6105-43e5-8a81-fd1a7dca4d1e.webp?v=1720085658"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_02_800x800_crop_center_2x_8cdadf65-6105-43e5-8a81-fd1a7dca4d1e.webp?v=1720085658","width":1600 },{"alt":null,"id":34184843198690,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_03_800x800_crop_center_2x_fe322823-d196-4acd-8abf-8a49c4bdbdd0.webp?v=1720085658"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_03_800x800_crop_center_2x_fe322823-d196-4acd-8abf-8a49c4bdbdd0.webp?v=1720085658","width":1600},{"alt":null,"id":34184843231458,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_04_800x800_crop_center_2x_01bb4b11-b615-4ccf-adcd-83e46bf83ffb.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_04_800x800_crop_center_2x_01bb4b11-b615-4ccf-adcd-83e46bf83ffb.webp?v=1720085658","width":1365},{"alt":null,

"id":34184843264226,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_05_800x800_crop_center_2x_068c0d1d-9db2-4b27-b13e-78cf9199b088.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_05_800x800_crop_center_2x_068c0d1d-9db2-4b27-b13e-78cf9199b088.webp?v=1720085658","width":1365},{"alt":null,"id":34184843296994,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_06_800x800_crop_center_2x_7b3b67a6-2f11-44e9-9c9d-b05943f6b18d.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_06_800x800_crop_center_2x_7b3b67a6-2f11-44e9-9c9d-b05943f6b18d.webp?v=1720085658","width":1365},{"alt":null,"id":341848433This item can only be purchased with a valid hire bike. 29762,"position":7,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_07_800x800_crop_center_2x_528a830f-a440-470d-94d1-2d1c9c083df1.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_07_800x800_crop_center_2x_528a830f-a440-470d-94d1-2d1c9c083df1.webp?v=1720085658","width":1365},{"alt":null,"id":34184843362530,"position":8,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_08_800x800_crop_center_2x_127ba9fb-ef98-4220-b4e6-2f8733e4935f.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_08_800x800_crop_center_2x_127ba9fb-ef98-4220-b4e6-2f8733e4935f.webp?v=1720085658","width":1365},{"alt":null,"id":34184843395298,"positio

n":9,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_09_800x800_crop_center_2x_8124f702-997f-469f-8bfd-12a6c81f8fc9.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_09_800x800_crop_center_2x_8124f702-997f-469f-8bfd-12a6c81f8fc9.webp?v=1720085658","width":1365},{"alt":null,"id":34184843428066,"position":10,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_10_800x800_crop_center_2x_fbaf22c5-45dc-4c92-98ce-ac80be0b72e5.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_10_800x800_crop_center_2x_fbaf22c5-45dc-4c92-98ce-ac80be0b72e5.webp?v=1720085658","width":1365},{"alt":null,"id":34184843460834,"position":11,"previe w_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_11_800x800_crop_center_2x_c3b76446-538d-4d7c-bd19-9805d8acff54.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_11_800x800_crop_center_2x_c3b76446-538d-4d7c-bd19-9805d8acff54.webp?v=1720085658","width":1365},{"alt":null,"id":34184843493602,"position":12,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_13_800x800_crop_center_2x_3f936826-bbd9-493c-9c47-a9334c66ec52.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_light_blue_web_13_800x800_crop_center_2x_3f936826-bbd9-493c-9c47-a9334c66ec52.webp?v=1720085658","width":1365},{"alt":null,"id":34184843526370,"position":13,"preview_image":{"a
spect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_01_800x800_crop_center_2x_12b0c1b6-ab51-45ca-b21e-a9e07c43517f.webp?v=1720085658"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_01_800x800_crop_center_2x_12b0c1b6-ab51-45ca-b21e-a9e07c43517f.webp?v=1720085658","width":1600},{"alt":null,"id":34184843559138,"position":14,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_02_800x800_crop_center_2x_275d8bd1-7b6b-4bc7-8cb4-0d1cf7e574af.webp?v=1720085658"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_02_800x800_crop_center_2x_275d8bd1-7b6b-4bc7-8cb4-0d1cf7e574af.webp?v=1720085658","width":1600},{"alt":null,"id":34184843591906,"position":15,"preview_image" :{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_03_800x800_crop_center_2x_93e3e42d-9eb3-4674-a15d-c71f41faa7b6.webp?v=1720085658"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_03_800x800_crop_center_2x_93e3e42d-9eb3-4674-a15d-c71f41faa7b6.webp?v=1720085658","width":1600},{"alt":null,"id":34184843690210,"position":16,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_04_800x800_crop_center_2x_f54d160f-a206-4283-85ba-2b3d425b6c48.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_04_800x800_crop_center_2x_f54d160f-a206-4283-85ba-2b3d425b6c48.webp?v=1720085658","width":1365},{"alt":null,"id":34184843722978,"position":17,"preview_im
age":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_06_800x800_crop_center_2x_a19bb0c9-7efb-4d32-84c2-650d7e94f865.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_06_800x800_crop_center_2x_a19bb0c9-7efb-4d32-84c2-650d7e94f865.webp?v=1720085658","width":1365},{"alt":null,"id":34184843755746,"position":18,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_08_800x800_crop_center_2x_a7504d66-d3a1-483a-8b38-4184c01aa3ec.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_08_800x800_crop_center_2x_a7504d66-d3a1-483a-8b38-4184c01aa3ec.webp?v=1720085658","width":1365},{"alt":null,"id":34184843788514,"position":19,"previe w_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_09_800x800_crop_center_2x_b3fe4f54-b7cc-4018-a7e4-ea872bc68d79.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_09_800x800_crop_center_2x_b3fe4f54-b7cc-4018-a7e4-ea872bc68d79.webp?v=1720085658","width":1365},{"alt":null,"id":34184843821282,"position":20,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_10_800x800_crop_center_2x_3d8ef6a3-01c2-4fa0-902e-0a17662b1714.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_10_800x800_crop_center_2x_3d8ef6a3-01c2-4fa0-902e-0a17662b1714.webp?v=1720085658","width":1365},{"alt":null,"id":34184843854050,"position":21,"pr
eview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_11_800x800_crop_center_2x_726b5174-2ccc-4c0b-80fc-4aa745b2cea8.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_11_800x800_crop_center_2x_726b5174-2ccc-4c0b-80fc-4aa745b2cea8.webp?v=1720085658","width":1365},{"alt":null,"id":34184843886818,"position":22,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_12_800x800_crop_center_2x_4e99c3b9-4cc3-4b7f-b74e-aa2d23534526.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_12_800x800_crop_center_2x_4e99c3b9-4cc3-4b7f-b74e-aa2d23534526.webp?v=1720085658","width":1365},{"alt":null,"id":34184843919586,"position":23 ,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_13_800x800_crop_center_2x_299a193b-fc95-41d4-a2e9-8048cbc4d4c9.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_13_800x800_crop_center_2x_299a193b-fc95-41d4-a2e9-8048cbc4d4c9.webp?v=1720085658","width":1365},{"alt":null,"id":34184843952354,"position":24,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_14_800x800_crop_center_2x_548d3a90-fc40-4b11-a1c8-92f1da8ea42f.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_14_800x800_crop_center_2x_548d3a90-fc40-4b11-a1c8-92f1da8ea42f.webp?v=1720085658","width":1365},{"alt":null,"id":34184843985122,"position":25,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_15_800x800_crop_center_2x_c8459b19-9bd2-48a5-b440-c8574302f14a.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_15_800x800_crop_center_2x_c8459b19-9bd2-48a5-b440-c8574302f14a.webp?v=1720085658","width":1365},{"alt":null,"id":34184844017890,"position":26,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_16_800x800_crop_center_2x_54d2ead6-a60a-4824-a66a-00a37ed400cb.webp?v=1720085658"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/BT_MY24_Hook_EXT_C_metallic_black_web_16_800x800_crop_center_2x_54d2ead6-a60a-4824-a66a-00a37ed400cb.webp?v=1720085658","width":1365}],"requires_selling_plan":false,"selli ng_plan_groups":[],"content":"\u003cp class=\"preFade fadeIn\"\u003eJust sitting in your kitchen, the Hook EXT C screams fast. Whether you are gravel racing or bikepacking with your friends, you’ll be going ‘full-gas’ with a smile on your face. New for 2024 is the T800 carbon frame, complete with optional internal cable routing and our signature collection of mounting points, for when you’re riding fast and light with only frame bags. Upfront you’ll find the Seido’s MGV fork with its huge tyre clearance, internal cable routing and multiple mounting points for your kit. SRAM’s Rival 1x groupset provides braking and shifting duties via a 10 – 42T cassette, running with a 38T direct mount chainring on our Bombtrack Lyer crank. \u003c\/p\u003e\n\u003cp class=\"preFade fadeIn\"\u003eThe cockpit is from Seido, with the new Tackle handlebar and it’s 16˚ flare. All this is tied in with the multi-award winning Hunt 4Season Gravel hoops, sporting WTB 40 mm Venture tyres. \u003c\/p\u003e\n\u003ctabl
e border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"1475\"\u003e\n\u003ccolgroup\u003e\n\u003ccol width=\"343\"\u003e\n\u003ccol width=\"1132\"\u003e\n\u003c\/colgroup\u003e\n\u003ctbody\u003e\n\u003ctr height=\"23\"\u003e\n\u003ctd height=\"23\" class=\"xl65\" width=\"343\"\u003eFrame\u003c\/td\u003e\n\u003ctd class=\"xl69\" width=\"1132\"\u003eToray T800 carbon blend, TA, rack \/ fender mounts, internal hub dynamo cable routing, 85.5 mm T47 BB shell, UDH derailleur hanger, optional full internal cable routing\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eFork\u003c\/td\u003e\n\u003ctd class=\"xl68\" align=\"left\"\u003eSeido MGV full carbon, TA, 1.1\/2'' - 1.1\/8'', fender \/ triple cage mounts, 180 mm max rotor size, lowrider rack compatible, internal hub dynamo cable routing\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eHandlebar\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eS eido Tackle drop bar, 31.8 mm, 16° flare\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eGrips\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eBombtrack Escape bar tape\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eStem\u003c\/td\u003e\n\u003ctd class=\"xl70\" align=\"left\"\u003eSeido Scatter forged aluminium stem, -7°\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eHeadset\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSealed integrated aheadset, 1.1\/2'' - 1.1\/2''\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eLevers\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSram Rival 1 double tap hydraulic\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eShifter\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSram Rival 1
double tap 1 x 11\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eBrakes\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSram Rival flat mount hydraulic disc brakes with 160 mm rotors\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eRotor\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSram Centerline 180 mm front and 160 mm rear rotor\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"45\"\u003e\n\u003ctd height=\"45\" class=\"xl65\"\u003eCrankset\u003c\/td\u003e\n\u003ctd class=\"xl69\" width=\"1132\"\u003eBombtrack Lyer forged aluminium crank, direct mount interface\u003cbr\u003e(Sram compatible), 30 mm spindle\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eBB\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eBombtrack T47 internal sealed BB for 30 mm spindle\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd hei ght=\"21\" class=\"xl65\"\u003ePedals\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eChain\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eKMC X11 EPT Anti Rust chain, 1\/2'' x 11\/128'', 114L\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eChainring\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eCNC machined aluminium, narrow-wide, 38 T\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eCassette\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSram XG-1150 11-speed, 10 - 42 T\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eFront derailleur\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eRear derailleur\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSram Rival 1, clutch, long cage\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"23\"\u003e\n\u003ctd height=\"23\" class=\"xl65\"\u003eFront hub\u003c\/td\u003e\n\u003ctd class=\"xl69\" width=\"1132\"\u003eHunt\u003cspan\u003e  \u003c\/span\u003e4 Season Gravel Disc sealed hub, centerlock disc\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"23\"\u003e\n\u003ctd height=\"23\" class=\"xl65\"\u003eRear hub\u003c\/td\u003e\n\u003ctd class=\"xl69\" width=\"1132\"\u003eHunt\u003cspan\u003e  \u003c\/span\u003e4 Season Gravel Disc sealed hub, centerlock disc, XD cassette body\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"23\"\u003e\n\u003ctd height=\"23\" class=\"xl65\"\u003eThrough axle\u003c\/td\u003e\n\u003ctd class=\"xl69\" width=\"1132\"\u003e12 x 100 mm \/ 12 x 142 mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eFront rim\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eHunt Hunt 4 Season Gravel Disc double wal l asymmetric rim, TLC, i21, 28h\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eRear rim\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eHunt Hunt 4 Season Gravel Disc double wall asymmetric rim, TLC, i21, 28h\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eSaddle\u003c\/td\u003e\n\u003ctd class=\"xl71\" align=\"left\"\u003eBombtrack Dart saddle\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eSeat post\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eSeido Yew aluminium seatpost, 27.2 mm x 350 mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eSeat clamp\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eBombtrack Prime 31.8 mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eFront tire\u003c\/td\u003e\n\u003ctd class=\"xl67\
"\u003eWTB Venture TCS Light 700C x 40C, tubeless ready\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eRear tire\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003eWTB Venture TCS Light 700C x 40C, tubeless ready\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eFender\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eRack\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eKickstand\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eLight\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\ u003eWeight\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e9.5 kg (size M)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eWeight frameset\u003c\/td\u003e\n\u003ctd class=\"xl66\" align=\"left\"\u003e1380 g frame (size M, incl. TA, hanger) \/ 550 g fork (300 mm steerer, incl. TA)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"21\"\u003e\n\u003ctd height=\"21\" class=\"xl65\"\u003eMaximum rider weight\u003c\/td\u003e\n\u003ctd class=\"xl67\"\u003e115 kg incl. luggage\u003cspan\u003e \u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr height=\"23\"\u003e\n\u003ctd height=\"23\" class=\"xl72\"\u003eASTM riding condition\u003c\/td\u003e\n\u003ctd class=\"xl73\"\u003e2\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdl id=\"DetailAttributes\" class=\"AttributeList hToggle clearfix\"\u003e\u003c\/dl\u003e\n\u003c!----\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {45661515546850 : "
deny",45661515579618 : "deny",45661515612386 : "deny",45661515645154 : "deny",45661515677922 : "deny",45661515710690 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {45661515546850 : parseInt("0"),45661515579618 : parseInt("0"),45661515612386 : parseInt("0"),45661515645154 : parseInt("0"),45661515677922 : parseInt("0"),45661515710690 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {45661515546850 : parseInt(""),45661515579618 : parseInt(""),45661515612386 : parseInt(""),45661515645154 : parseInt(""),45661515677922 : parseInt(""),45661515710690 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {45661515546850 : null,45661515579618 : null,45661515612386 : null,45661515645154 : null,45661515677922 : null,45661515710690 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {45661515546850 : parseInt(""),45661515579618 : parseInt(""),45661515612386 : parseInt(""),45661515645154 : parseInt(""),45661515677922 : parseIn t(""),45661515710690 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {45661515546850 : null,45661515579618 : null,45661515612386 : null,45661515645154 : null,45661515677922 : null,45661515710690 : null,}; window._RestockRocketConfig.variantsShippingText = {45661515546850 : "",45661515579618 : "",45661515612386 : "",45661515645154 : "",45661515677922 : "",45661515710690 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {45661515546850 : null,45661515579618 : null,45661515612386 : null,45661515645154 : null,45661515677922 : null,45661515710690 : null,}; window._RestockRocketConfig.selected_variant_id = 45661515546850; window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;// STOQ-1595/1612 shared signal, derived once here so both the accelerated-checkout block // gate (STOQ-1612) and the
click tracker (STOQ-1595) read one clearly-owned flag rather // than a side effect buried in either consumer's try/catch: whether this shop has preorders // configured at all — an enabled selling plan plus at least one preorder variant id, // independent of the block toggle. Fail-open: on error the flag stays unset and both // consumers no-op. try { var _sqCfg = window._RestockRocketConfig; var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) && _sqCfg.sellingPlans.some(function (p) { return p && p.enabled; }); var _sqPreCount = ((_sqCfg.cachedPreorderVariantIds && _sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length; _sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount); } catch (e) { /* fail open */ } // STOQ-1612: block (not hide) Buy Now / Shop Pay until our JS runs, so a tap in the // load window can't bypass preorder. pointer-events via .stoq-buy-now-pending (no // reflow); timeout releases; renderPreorderButton / featured_prod uct.js lift it. // Gated by the `block_accelerated_checkout` toggle (default OFF) for gradual rollout. // Armed ONLY when we're sure preorder is in play — product page: THIS product has a // preorder variant (never block a plain product's Shop Pay); featured: integration // enabled for this page type. Rationale: PR #2784. try { var _sqc = window._RestockRocketConfig; var _sqOn = !!(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout); var _sqPre = (_sqc.cachedPreorderVariantIds && _sqc.cachedPreorderVariantIds.preorder_variant_ids) || []; var _sqArm = false; if (_sqOn && _sqc.preordersConfigured) { if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) { _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1; }); } else { _sqArm = (_sqc.integrations || []).some(function (i) { return i && i.type === 'featured_product' && i.enabled && Array.isArray(i
.page_types) && i.page_types.indexOf(_sqc.pageType) !== -1; }); } } if (_sqArm && document.documentElement) { _sqc.acceleratedGateArmed = true; document.documentElement.classList.add('stoq-buy-now-pending'); setTimeout(function () { document.documentElement.classList.remove('stoq-buy-now-pending'); }, 6000); } } catch (e) { /* fail open */ } window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019f7be7-1888-7854-bf22-91e9942504c2/restockrocket-1-546/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019f7be7-1888-7854-bf22-91e9942504c2/restockrocket-1-546/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/019f7be7-1888-7854-bf22-91e9942504c2/restockrocket-1-546/assets/restockrocket-product-bis.js' window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/e xtensions/019f7be7-1888-7854-bf22-91e9942504c2/restockrocket-1-546/assets/restockrocket-collection-bis.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) // Canary override (STOQ-1287): prefer the Render host emitted into the // metafield-cached settings (api_host) when present, mirroring the same // override in assets/js/api.js. cachedSettings is populated above. Falls // back to the build-baked host for shops without the use_render_api_host // toggle (or environments where THEME_EXTENSION_API_HOST is unset), so the // setting.json + fetchEmbedConfig calls below route to the same host as the // rest of the extension's API traffic instead of staying on the baked host. window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io' // Deployed extension build number, retomer interaction. // Detected variants: the variants present in this page's Liquid context (product page has them; // collection/index/etc. don't expose variants from Liquid). Used to disambiguate "embed didn't // load" vs "embed loaded but the variant wasn't a preorder/BIS candidate" in order debug. try { const _stoqInitConfig = window._RestockRocketConfig; const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.product.variants)) ? _stoqInitConfig.product.variants.map(function(v) { return v.id }) : []; const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id; // Per-session page-load counter, incremented here in the INLINE code so it exists // even when the deferred bundle never runs. Paired with stoq_bundle_ready's // page_load_seq, it tells order-debug which page load an add fired on (and whether // the bundle had loaded on that load). var _stoqPageSeq = 0; try { _stoqPageSeq = (parseInt(window.sessi onStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1; window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq)); } catch (e) { /* sessionStorage unavailable (private mode) — leave 0 */ } Shopify?.analytics?.publish?.('stoq_initialized', { cart_token: _stoqInitConfig.cartToken || '', page_url: window.location.href, page_type: _stoqInitConfig.pageType || '', shop_domain: _stoqInitConfig.shop || '', market_id: _stoqInitConfig.marketId || '', // Buyer's storefront country (localization.country.iso_code). Seeds the // pixel's extension_details blob so it rides forward onto Shopify's native // events too — a market can span countries, so this is the finer signal. country_code: _stoqInitConfig.countryIsoCode || '', detected_variant_ids: _stoqDetectedVariantIds, selected_variant_id: _stoqSelectedVariantId || '', page_load_seq: _stoqPageSeq, liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0, app_version
: _stoqInitConfig.appVersion || '', liquid_cache_age: _stoqInitConfig.liquidCacheAge, // Selected variant's stock posture as our app saw it at render — explains // whether we *should* have treated it as a preorder candidate. inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], }); } catch (e) { console.debug('STOQ - stoq_initialized publish failed:', e); } // STOQ-1595: publish stoq_accelerated_checkout_clicked for every accelerated-checkout // click (Buy Now / dynamic checkout / Shop Pay installments) on ALL surfaces, before our // bundle loads, via one delegated capture-phase listener (catches late-rendered buttons). // Only on shops with preorders configured (shared `preordersConfigured` signal from the // derivation block above) — nothing to bypass otherwise. variant_id is read per-clicked-button // from its fo rm so it's correct on collection/index/search too. block_accelerated_checkout // context (STOQ-1612) rides in `properties` (forwarded verbatim by the pixel, no schema // change): a buy_now click on a preorder variant while the gate was armed is a visible // bypass signal for order debug. Also sends page_url (top-level, like the pixel's native // events) and two preorder signals in properties (see below). try { var _sqTrack = window._RestockRocketConfig; if (_sqTrack.preordersConfigured) { document.addEventListener('click', function (e) { try { var t = e.target; if (!t || !t.closest) return; var host = t.closest('.shopify-payment-button, shopify-payment-terms'); if (!host) return; var channel = host.matches && host.matches('shopify-payment-terms') ? 'shop_pay_installments' : 'buy_now'; var form = host.closest('form'); var vidEl = form && form.querySelector('[name="id"]'); var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || ''; // The enabled STOQ selling plan the clicked variant belongs to (if any), found once and // reused for in_enabled_plan / enrolled_plan_id / enrolled_plan_provider below. var _sqVidNum = Number(variantId); var _sqPlan = null; // Array.isArray guard (not `|| []`) so a truthy non-array sellingPlans can't throw and // silently drop the whole publish. var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; _sqPlans.forEach(function (pl) { if (!_sqPlan && pl && pl.enabled && Array.isArray(pl.variant_ids) && pl.variant_ids.indexOf(_sqVidNum) !== -1) { _sqPlan = pl; } }); Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', { variant_id: variantId, product_id: (_sqTrack.product && _sqTrack.product.id) || '', channel: channel, market_id: _sqTrac k.marketId || '', country_code: _sqTrack.countryIsoCode || '', page_type: _sqTrack.pageType || '', cart_token: _sqTrack.cartToken || '', page_url: (window.location && window.location.href) || '', properties: { // Mirror the bundle's own preorder check (preorder.js checkInventoryProvider- // WithCachedFallback): the live set config.preorderVariantIds (refreshed after // page load by loadVariantInventoryData) OR the Liquid-injected // cachedPreorderVariantIds — always present, so it covers clicks before the // bundle loads (why this tracker is inline). ORing both (not preferring one) // matches the bundle and is correct even if the live set is an empty array. Both // hold integer ids; the click-time id comes off a DOM input (.value → string) or // selected_variant_id, so coerce with Number for a like-typed compare. is_preord
er_variant: (function () { var vid = Number(variantId); var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; }; return has(_sqTrack.preorderVariantIds) || has(_sqTrack.cachedPreorderVariantIds && _sqTrack.cachedPreorderVariantIds.preorder_variant_ids); })(), // Narrow, authoritative preorder signal: enrolled in an ENABLED STOQ selling plan // (is_preorder_variant above is the broad OOS+continue heuristic — non-STOQ too). in_enabled_plan: !!_sqPlan, // In-stock preorder signal: enrolled but currently IN STOCK (in the inStockVariantIds // set, not the OOS preorderVariantIds set). Same live-OR-cached pattern as // is_preorder_variant. is_preorder_variant OR is_instock_variant = "should sell via // the plan" regardless of stock, so an in-stock preorder bypass is detectable too. is_ instock_variant: (function () { var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; }; return has(_sqTrack.inStockVariantIds) || has(_sqTrack.cachedInStockVariantIds && _sqTrack.cachedInStockVariantIds.in_stock_variant_ids); })(), // The enrolled plan's Shopify selling-plan id + inventory_provider (stoq = STOQ tracks // the OOS count; shopify = in-stock preorder). Tells order-debug what kind of preorder // the Buy Now bypassed, without a downstream lookup. enrolled_plan_id: (_sqPlan && (_sqPlan.shopify_selling_plan_id || _sqPlan.shopify_selling_plan_group_id)) || '', enrolled_plan_provider: (_sqPlan && _sqPlan.inventory_provider) || '', block_enabled: !!(_sqTrack.cachedSettings && _sqTrack.cachedSettings.block_accelerated_checkout), gate_armed: !!_sqTrack.acceleratedGateArmed, gate_active

_at_click: !!(document.documentElement && document.documentElement.classList.contains('stoq-buy-now-pending')), }, }); } catch (err) { /* never break checkout */ } }, true); } } catch (e) { /* fail open */ } 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 locale has translations; drop payload to save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; Oxford Bike Packing Gear Set-up! Please note, this is only available when hiring a bike from us. return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key]; if (value !== null && value !== undefined && value !== '') { settings[key] = value; } }); } else { console.debug('STOQ - No translated fields found for locale:', normalizedLocale); } delete settings.translations; return settings; } catch (e) { console.debug('STOQ - error applying translations:', e); return settings; } } // Setup event listener for cart selling plan updates // This must be called before any scripts are loaded to avoid race conditions function setupCartSellingPlanUpdater(settings) {

// Setup listener regardless - updateCartSellingPlans has its own guards // This ensures cleanup happens even when preorders are disabled globally // Listen for stoq:inventory-data-loaded event dispatched by api.js window.addEventListener('stoq:inventory-data-loaded', function(event) { console.debug('STOQ - Inventory data loaded, updating cart selling plans'); if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => { if (hasUpdates) { console.debug('STOQ - cart selling plans updated successfully'); } else { console.debug('STOQ - no cart selling plan updates needed'); } }) .catch(error => { console.error('STOQ - error updating cart selling plans:', error); }); } }); } // ---- Live settings via the Storefront API (additive, does not gate init) ---- // The inli ned `cachedSettings` comes from the app-embed Liquid render, which // Shopify edge-caches and can serve stale. Reading the same `settings` metafield // back over the Storefront API is a POST to /api/

/graphql.json — never // CDN-cached — so it returns the live value on every page load. We fetch it // best-effort and stash it on `window._RestockRocketConfig.storefrontSettings` // so individual behaviours can migrate onto the fresh value over time. This is // PURELY ADDITIVE: it does NOT change the resolution flow below, never blocks // init, and silently no-ops on any failure / missing token. (function loadStorefrontSettings() { const cfg = window._RestockRocketConfig; if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) return; // Deferred to browser idle so this best-effort read runs strictly AFTER the // critical init flow and never competes with it for a connection — the call // is a live, uncached Storefront round-trip and can be slow (multi-second // TTFB observed). Nothing on the critical path waits for it. function run() { const query = 'query StoqSettings($namespace: String!) { shop { metafield(namespace: $namespace, key:

"settings") { value } } }'; fetch( `https://${cfg.shop}/api/2025-07/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken, }, body: JSON.stringify({ query: query, variables: { namespace: cfg.metafieldNamespace } }), } ) .then(function(response) { if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } return response.json(); }) .then(function(body) { if (body && body.errors && body.errors.length) { throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', ')); } const value = body && body.data && body.data.shop && body.data.shop.metafield && body.data.shop.metafield.value; if (!value) { throw new Error('Storefront API returned no settings metafield value'); } cfg.sto refrontSettings = JSON.parse(value); console.debug('STOQ - stored live settings from Storefront API on config.storefrontSettings'); }) .catch(function(e) { console.debug('STOQ - Storefront settings fetch failed (non-fatal):', e && e.message); }); } if (typeof window.requestIdleCallback === 'function') { window.requestIdleCallback(run, { timeout: 5000 }); } else { setTimeout(run, 0); } })(); // First try to get settings from metafields with expiry check const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializeScripts(validCachedSettings); } else { console.debug('STOQ - fetching fresh settings'); const headers = { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'ski

p' }; if (window.Shopify?.theme?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; } fetch( `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, { headers } ) .then(function(response) { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(function(settings) { initializeScripts(settings); }) .catch(function(error) { // If request failed and we have cached settings (even if expired), use them as fallback if (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function fetchEmbedConfig(endpoint, apply) { return fetch( `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`, { headers: { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' } } ) .then(function(response) { if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`); return response.json(); }) .then(function(data) { try { apply(data); } catch (applyError) { // Apply failures are programming bugs (e.g. response shape changed // server-side and the assignment threw). Surface them as console.error // so they're visible in browser logs, then re-throw to fall through // to the same Liquid-cached fallback as a fetch failure. console.error('STOQ - apply failed for ' +• Universal frame fitting endpoint + ':', applyError); throw applyError; } }) .catch(function(error) { console.debug(`STOQ - using cached ${endpoint}:`, error.message); }); } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); // Stale-Liquid resilience (default-on, per-shop opt-out via the // `disable_refresh_on_stale_liquid` Toggle, surfaced as the negative // `disable_refresh_on_stale_liquid` flag in settings.json so that // `undefined` -- in CDN-cached metafield payloads that predate this // key -- reads as `!undefined === true` and gets default-on behavior // immediately, no metafield rewrite required). // When the Liquid CDN cache is older than LIQUID_CACHE_MAX_AGE the in-page // selling_plans / integrations metafields can be wrong; refresh both from // the API before launching scr
ipts. Race against a 1000ms timeout so a slow // API can't block init indefinitely. If the timeout wins, the in-flight // fetches still complete and update window._RestockRocketConfig — the // bundle re-reads sellingPlans/integrations on every interaction, so the // late-arriving values benefit subsequent renders even though the first // paint may use the Liquid-cached values. On any failure the existing // Liquid-loaded values stay in place via fetchEmbedConfig's catch. if (!window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_refresh_on_stale_liquid) { console.debug('STOQ - Liquid cache stale, refreshing selling_plans + integrations'); Promise.race([ Promise.all([ fetchEmbedConfig('selling_plans', function(data) { if (data && Array.isArray(data.plans)) { window._RestockRocketConfig.sellingPlans = data.plans; window._RestockRocketConfig.disabledSellingPlanIds = data.disabled_plan_ids || []; • Twin chamber storage with pockets } }), fetchEmbedConfig('integrations', function(data) { if (Array.isArray(data)) { window._RestockRocketConfig.integrations = data; } }) ]), new Promise(function(resolve) { setTimeout(resolve, 1000); }) ]).then(function() { loadScripts(settings); }); return; } loadScripts(settings); } function loadScripts(settings) { // Setup cart selling plan updater BEFORE loading any scripts to avoid race conditions setupCartSellingPlanUpdater(settings); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) // STOQ-1520: serve the lean back-in-stock-only build (no preorder/hijack code) // only to shops with NO preorder plans. Use the full build if preorder is o
n, // an enabled offer exists, or a disabled-but-kept plan id remains (cart sweep // must still strip those). Rationale in the PR. const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans) && window._RestockRocketConfig.sellingPlans.some(function(plan) { return plan && plan.enabled; }); const hasDisabledPlanIds = Array.isArray(window._RestockRocketConfig.disabledSellingPlanIds) && window._RestockRocketConfig.disabledSellingPlanIds.length > 0; const usePreorderBuild = settings.preorder_enabled || hasEnabledOffer || hasDisabledPlanIds; const collectionScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlCollection : window._RestockRocketConfig.scriptUrlCollectionBis; const productScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlProduct : window._RestockRocketConfig.scriptUrlProductBis; const pageType = window._RestockRocketConfig.pageType; const collecti• 4 litre capacityonPageTypes = ['collection', 'index', 'search', 'page']; if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) { createRestockRocketScript(collectionScriptUrl); } else if(pageType === 'product') { createRestockRocketScript(productScriptUrl); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(usePreorderBuild) { // cart/article/blog/list-collections: full build so the cart sweep runs. createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enabled for ${pageType}`); } // Dispatch custom event when app is loaded // Cart selling plan updates will be triggered by stoq:inventory-data-loaded event const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockR

html.stoq-buy-now-pending .shopify-payment-button{pointer-events:none!important}.stoq-hide-buy-now .shopify-payment-button,.stoq-hide-buy-now shopify-payment-terms,.stoq-hide-buy-now .shopify-payment-terms{display:none!important}.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:noneOxford Aqua Evo Seat Pack:;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-le



• Universal seat-post fitting

Oxford Aqua Evo Handlebar Pack:

• Front zip pocket
• External bungee storage
• 9 litre capacity
• Dual ended roll closure
• Weight: 450g
• Dimensions 35 x 15cm (LxD)
• Max load recommendation: 4kg

Oxford Aqua Evo Top Tube Pack:

• Universal top-tube fitting
• Top zip opening
• 1.5 litre capacity
• Weight: 60g
• Dimensions 35 x 15cm (LxD)


Bike Hire With ProjektRide

Here at ProjektRide, we rent out our in-house built Surly and Brothers bike packing bikes. These have been custom-built with care and attention to ensure you have an awesome and hassle-free time on your bike trip!

bike_490f99ba-a097-4bd4-9ba6-e1e4b7c61178.png

1. Choose Bike

Choose your preferred bike from our collection of in-house custom-builds
and add to your basket. Bikes can also be hired in store.

equipment.png

2. Choose Equipment (Optional)

Choose any optional free equipment - shown in the hire section - and add
it to your basket so it's ready for you when you pick up your bike.
This can also be done in store.

pay.png

3. Pay Online or In-Store

Checkout the hire items in your basket and pay with all major credit cards, PayPal or Klarna. Payments can be made in store without going through the online shop. Please call the shop to book out in-person.

confirmation.png

4. Wait For Confirmation

Wait for one of the team to confirm your booking. This is separate from the payment confirmation. A confirmation email will be sent within 24 hours, during shop opening times.

collection.png

5. Collect In Store

Collect your bike in store alongside all optional equipment. Please bring a form of identification (Driver's licence or Passport) to complete the booking.

ride_confident.png

6. Ride Confident!

Enjoy your bike for the hire period! The bike must be returned to the store during opening hours of the return date.Enjoy your bike for the hire period! The bike must be returned to the store during opening hours of the return date.

Frequently Asked Questions

  • We will require your full name, address and any suitable form of identification such as a passport or a driver's license.

    This will be collected in store when you come to collect the bike.

  • Yes - you can come in store to hire a bike and can even pay with cash too! However, it would be best to call in advance to ensure we have a suitable bike for you to rent.

  • We offer free quipment hire with a valid bike hire. You can see our range of equipment for hire here.

  • We like to keep things simple here at ProjektRide, we don't take any form of security deposit.

    If you happen to damage the bike, our insurance will cover it fully! We do ask for a valid passport document upon collection.

  • If you are looking for a custom bike for your tour, please get in touch. We can do full custom-builds at a higher rental rate.

  • We are happy to keep your belongings safe, including suitcases etc. whilst you are out in one of our rental bikes.

  • You can pick up your bike as soon as the shop opens on your collection date. Please review our working hours here.

  • You must return your bike before the shop closes on your return date. Please review our working hours here. Failure to do so in time may result in additional charges. Please see our Bike Hire Terms & Conditions
    for more information. If you are returning your bike on a Sunday,
    please add a note to your order with your number and your ETA return
    date so we can arrange your drop off out-of-hours.

  • You can cancel your bike hire at any time. Please contact us to cancel your booking.

    If a cancellation is received within 5 days of your collection date, you will not receive a refund.

  • Yes, depending on where and when you’d like the bikes dropped off, we may charge a small delivery fee. The best option is to get in touch with us, and we’ll do our best to make it work.