< p class="result__title">
< a href="{{ it.product.url }}">{{ it.product.title }} Open search bar < li class="result result--full"> { "@context": "http://schema.org", "@type": "Organization", "name": "ProjektRide","sameAs": [ null, null, null, null, null, null, null ], "url": "https:\/\/projektride.co.uk" }
console.log("pr-product-page");
<
Header Image

£3,750.00<

bled":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_a t":"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_
plans from old format (max updated_at: ' + maxUpdatedAt + ')'); } } })();window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfig.product = {"id":8055080190178,"title":"Brooks B17 Short (Ladies)","handle":"brooks-b17-short-ladies","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp\u003eThe flagship model in the Brooks range. Best seller for decades!\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eRails: Black Steel\u003c\/li\u003e\n\u003cli\u003eWeight: 455g\u003c\/li\u003e\n\u003cli\u003eWidth: 177mm, Length: 242mm\u003c\/li\u003e\n\u003c\/ul\u003e","published_at":"2025-01-07T16:36:56+00:00","created_at":"2023-03-18T12:59:48+00:00","vendor":"brooks","type":"","tags":["brooks","Finishing Kit","Saddles","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":13499,"price_min":13499,"price_max":13499,"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":43936184271074,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"B211DA07202","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Brooks B17 Short (Ladies)","public_title":null,"options":["Default Title"],"price":13499,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/produc
ts\/25653-pm.png?v=1679144390","\/\/projektride.co.uk\/cdn\/shop\/products\/25652-pm.png?v=1679144390","\/\/projektride.co.uk\/cdn\/shop\/products\/25655-pm.png?v=1679144391"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/25653-pm.png?v=1679144390","options":["Title"],"media":[{"alt":null,"id":31694797144290,"position":1,"preview_image":{"aspect_ratio":1.0,"height":776,"width":776,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/25653-pm.png?v=1679144390"},"aspect_ratio":1.0,"height":776,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/25653-pm.png?v=1679144390","width":776},{"alt":null,"id":31694797177058,"position":2,"preview_image":{"aspect_ratio":1.0,"height":776,"width":776,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/25652-pm.png?v=1679144390"},"aspect_ratio":1.0,"height":776,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/25652-pm.png?v=1679144390","width":776},{"alt":null,"id":31694797209826,"position":3,"preview_image":{"aspect_ra tio":1.0,"height":776,"width":776,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/25655-pm.png?v=1679144391"},"aspect_ratio":1.0,"height":776,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/25655-pm.png?v=1679144391","width":776}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp\u003eThe flagship model in the Brooks range. Best seller for decades!\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eRails: Black Steel\u003c\/li\u003e\n\u003cli\u003eWeight: 455g\u003c\/li\u003e\n\u003cli\u003eWidth: 177mm, Length: 242mm\u003c\/li\u003e\n\u003c\/ul\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {43936184271074 : "continue",}; window._RestockRocketConfig.variantsInventoryQuantity = {43936184271074 : parseInt("3"),}; window._RestockRocketConfig.variantsPreorderCount = {43936184271074 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {43936184271074 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {43936184271074 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {43936184271074 : null,}; window._RestockRocketConfig.variantsShippingText = {43936184271074 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {43936184271074 : null,}; window._RestockRocketConfig.selected_variant_id = 43936184271074; 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/019cb0b4-f8c1-740a-9811-1284dd89b0c8/restock-rocket-shopify-464/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019cb0b4-f8c1-740a-9811-1284dd89b0c8/restock-rocket-shopify-464/assets/restockrocket-collection.js' window._RestockRocketConfig.sc riptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds const LIQUID_CACHE_MAX_AGE = 2 * 60 * 60; // 2 hours in seconds // Calculate Liquid cache freshness once at initialization const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; // Validate timestamp and calculate cache age if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { const now = Math.floor(Date.now() / 1000); // Current time in seconds const liquidCacheAge = now - liquidRenderedAt; // Age 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 translation data in metafield // Metafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const age = Date.now() - updatedAt.getTime(); if (age && 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 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(cachedSettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); // 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 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

Product Details

Steel is real. Especially when the Hook EXT Rival AXS comes equipped as standard with Sram’s electronic Rival AXS 1x12 groupset and hydraulic brakes. The drivetrain comes finished with the Sram Rival Wide 38T direct mount chainring for consistent chain control. 

The Columbus Cromor double-butted frame with tapered head tube and rear light mount will last longer than the test of time. So you can hit the road less travelled, wider rims improve tyre performance. You’ll also have more mounting options than to shake a fist at: top tube direct mounts, triple cage mounts on the down tube and seat tube for cargo positions of your choice, as well as underneath the down tube and rear rack mounts for those adventures that delve deep into unknown territory.

 

Fork Seido 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
Handlebar Bombtrack Beaufort drop bar, 31.8 mm, 16° flare
Grips Bombtrack Escape bar tape
Stem Seido Chase forged aluminium stem, 0°
Headset Sealed external aheadset, 1.1/2'' - 1.1/8''
Levers Sram Rival eTap AXS double tap hydraulic
Shifter Sram Rival eTap AXS double tap 1 x 12
Brakes Sram Rival flat mount hydraulic disc brakes
Rotor Sram Centerline 180 mm front and 160 mm rear rotor
Crankset Sram Rival Wide, DUB spindle
BB Sram DUB T47 85.5 mm
Pedals -
Chain Sram Rival, flattop, 1/2'' x 11/128'', 112L
Chainring Sram Rival, 12-speed, 38 T
Cassette Sram XPLR XG-1251 12-speed, 10 - 44 T
Front derailleur -
Rear derailleur Sram Rival XPLR eTap AXS, clutch, medium cage
Front hub Bombtrack Tau sealed hub, 6-bolt disc
Rear hub Bombtrack Tau sealed hub, XD driver, 6-bolt disc
Through axle 12 x 100 mm / 12 x 142 mm
Front rim WTB ST Light i25 double wall, TCS 2.0, 32h
Rear rim WTB ST Light i23 double wall, TCS 2.0, 32h
Saddle Bombtrack Dart saddle
Seat post Bombtrack Yew aluminium seatpost, 27.2 mm x 300 mm
Seat clamp Bombtrack Prime 29.8 mm
Front tire WTB Ranger TCS Light / Fast Rolling 27.5'' x 2.0'', tubeless ready
Rear tire WTB Ranger TCS Light / Fast Rolling 27.5'' x 2.0'', tubeless ready
Fender -
Rack -
Kickstand -
Light -
Weight 12.1 (size M)
Weight frameset 2710 g frame (size L, incl. TA, hanger) / 550 g fork (300 mm steerer, incl. TA)
Maximum rider weight 130 kg incl. Luggage
ASTM riding condition 2

FAQ

Questions and answers