Are you heading down the path least travelled? For a drop handlebar bike, the Hook EXT seldom faces terrain it cannot handle. A Columbus steel frame, a dedicated carbon fork and a sturdy 27.5’’ wheelset equip the EXT with an armoury to ride where other bikes would surely suffer. A Sram 1x11 Rival groupset suitably gives this machine the gears and brakes to match.
Kona
Fork
TubelessSeido 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
/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"BBB\"}'\u003eZipp Service Course Stem\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Tyre\"}'\u003eTyre\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Schwalbe Racing Ralph Tubeless\"}'\u003eSchwalbe Racing Ralph Tubeless\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Wheel Pair\"}'\u003eWheel Pair\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"E 1900 wheel, 30 mm rim ,29 inch \"}'\u003eE 1900 wheelset, 30 mm rim ,29 inch\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Bottom Bracket\"}'\u003eBottom Bracket\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"BB-RS501 bottom bracket cups, English thread cups\"}'\u003eBB-RS501 bottom bracket cups, English thread cups\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Seat Post\"}
td data-sheets-value='{\"1\":2,\"2\":\"Crank Set\"}'\u003eCrank Set\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"FC-M7100 SLX Crank set without ring, 12-speed, 52 mm chainline\"}'\u003eFC-M6100 Crankset without ring, 12-speed, 52 mm chainline\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Head Set\"}'\u003eHead Set\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Gloria ZS44\/EC44\"}'\u003eGloria ZS44\/EC44\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Head Set spacer\"}'\u003eHead Set spacer\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\" Headset Spacer Set \/ 1 1\/8\\\" \/ 2 x 10mm \/ Black\"}'\u003eHeadset Spacer Set \/ 1 1\/8\" \/ 2 x 10mm \/ Black\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Breaks\"}'\u003eBrakes\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"BR-M7120\/BL-M7100 SLX 4 pot bled brak
a class="product__media product__media--featured"
href="/products/life-systems-pocket-first-aid-kit-hire"
title="Life Systems Pocket First Aid Kit - HIRE"
aria-label="Life Systems Pocket First Aid Kit - HIRE"
style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-02-24at21.18.22_5c0e6e2d-1913-4fd1-a90d-b486895960b6_600x.png?v=1691610357)">
<_plan_allocations":[]},{"id":45661615522018,"title":"Matt charcoal grey \/ Medium - 53","option1":"Matt charcoal grey","option2":"Medium - 53","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT RIVAL AXS Complete Bike - Matt charcoal grey \/ Medium - 53","public_title":"Matt charcoal grey \/ Medium - 53","options":["Matt charcoal grey","Medium - 53"],"price":375000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45661615554786,"title":"Matt charcoal grey \/ Large - 57","option1":"Matt charcoal grey","option2":"Large - 57","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Bombtrack HOOK EXT RIVAL AXS Complete Bike - Matt charcoal grey \/ Large - 57","public_title":"Matt charcoal grey \/ Large - 57","options":["Matt charcoal grey","Large - 57"],"price":375000,"weight":0,"co
>
<
\/cdn\/shop\/files\/ftp_f_freewheel_imagessportlinefwbikesrb21790_detail_02.webp?v=1722607120"},"aspect_ratio":1.534,"height":1000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/ftp_f_freewheel_imagessportlinefwbikesrb21790_detail_02.webp?v=1722607120","width":1534},{"alt":null,"id":34382302806242,"position":9,"preview_image":{"aspect_ratio":1.534,"height":1000,"width":1534,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/ftp_f_freewheel_imagessportlinefwbikesrb21790_detail_01.webp?v=1722607120"},"aspect_ratio":1.534,"height":1000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/ftp_f_freewheel_imagessportlinefwbikesrb21790_detail_01.webp?v=1722607120","width":1534}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp\u003e \u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe Ridgeback Destiny is a girl's mountain bike perfect for heading off the beaten track and designed to fit heights 140-160cm.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u0\u003cli\u003eHeight range 140cm - 150cm\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!----\u003e"}<<
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Ridgeback Destiny",
"url": "https:\/\/projektride.co.uk\/products\/ridgeback-destiny","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/files\/ftp_f_freewheel_imagessportlinefwbikesrb21791_detail_01_1534x.webp?v=1722607119"
],"description": " \n\nThe Ridgeback Destiny is a girl's mountain bike perfect for heading off the beaten track and designed to fit heights 140-160cm.\n\n\n\nWide knobbly tyres, a suspension fork and a range of 21 gears make the Destiny ready to take on any terrain.\n\n\n\nThe upright position is designed to give confidence when riding off road, with the semi slick tyres giving good speed on smoother surfaces and plenty of traction when cornering on loose ground.\n\n\n\nThe suspension fork smooths the ride over lumps and bumps and the 21-speed Shimano drivetrain gives plenty of options for steep climbs and fast descents.\n\n\n\nWeight - 12.85kg\n\n\n\nHeight range 140cm - 150cm\n\n","sku": "RB21791","brand": {
"@type": "Thing",
"name": "Ridgeback"
},"gtin8": "","offers": [{
"@type" : "Offer","sku": "RB21791","availability" : "http://schema.org/OutOfStock",
"price" : 399.99,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/ridgeback-destiny?variant=45764609868002"
},
{
"@type" : "Offer","availability" : "http://schema.org/OutOfStock",
"price" : 399.99,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/ridgeback-destiny?variant=45764609900770"
}
]
}
#FeaturedImage--template--24610452406655__1645734801adfd4c07 { --overlay-opacity: 0.2; }
a class="product__media product__media--featured"
href="/collections/accessories/products/backcountry-long-top-tube-pack-1-8l"
title="BACKCOUNTRY LONG TOP TUBE PACK (1.8L)"
aria-label="BACKCOUNTRY LONG TOP TUBE PACK (1.8L)"
style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2023-06-25at11.49.37_600x.png?v=1687690182)">
[]
span class="visually-hidden">BACKCOUNTRY LONG TOP TUBE PACK (1.8L)
>
>
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Brooks Microfibre bar tape",
"url": "https:\/\/projektride.co.uk\/products\/brooks-microfibre-bar-tape-black","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-04-10at11.20.21_1394x.png?v=1652171669"
],"description": "\nLightweight, Durable, Tight-Handling.\nBrooks Microfibre Bar Tape is a handlebar tape manufactured from a synthetic textile for road bikes or any other drop-bar bike. Durable and waterproof.\n\n\n\nFor grip and control\n\n\n\n\nMicrofiber Bar Tape provides excellent grip so that riders can exert maximum control.\n\n\n\n\n\nLightweight\n\n\n\n\nMaterials specially chosen for their remarkable strength-to-weight ratio.\n\n\n\n\n\nMade to last\n\n\n\n\nDurable materials are chosen for long life and excellent wearing properties.\n \nIf any more information is needed, please don't hesitate to get in touch with one of the team:\nProjektRide Bike shop Edinburgh.\nedinburgh@projektride.co.uk\nT- 01313745324\n \n\n","sku": "BT03000A15202","brand": {
"@type": "Thing",
"name": "ProjektRide"
},"gtin8": "","offers": [{
"@type" : "Offer","sku": "BT03000A15202","availability" : "http://schema.org/InStock",
"price" : 24.99,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/produ
£70.00
a class="product__media product__media--featured"
href="/collections/accessories/products/backcountry-rear-top-tube-pack-1l"
title="BACKCOUNTRY REAR TOP TUBE PACK (1L)"
aria-label="BACKCOUNTRY REAR TOP TUBE PACK (1L)"
style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2023-06-25at11.47.50_600x.png?v=1687690143)">
<>
0.0}}' id=\"block-c1f294fc4d200eec65d0\"\u003e\n\u003cdiv class=\"sqs-block-content\"\u003e\n\u003cdiv class=\"sqs-html-content\"\u003e\n\u003cp class=\"preFade fadeIn\"\u003eSteel 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. \u003c\/p\u003e\n\u003cp class=\"preFade fadeIn\"\u003eThe 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.\u003c\/p\u003e\n\u003cp class=\"pr
ttings || !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
<
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 ||
!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 sa
ve 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];
if (value !== null && value !== undefined && value !== '') {
settings[key] = value;
}
});
} else {
console.debug('STOQ - No translated fields found for locale:', normalizedLocale);
}
delete settings.translations;
return settings;
} catch (e) {
console.debug('STOQ - error applying translations:', e);
return settings;
}
}
// First try to get
settings from metafields with expiry check
const cachedSettings = window._RestockRocketConfig.cachedSettings;
const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null;
if (validCachedSettings) {
console.debug('STOQ - using cached settings');
initializeScripts(validCachedSettings);
} else {
console.debug('STOQ - fetching fresh settings');
const headers = {
'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.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 }