See More Complete Wheels img src="//projektride.co.uk/cdn/shop/files/17601_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img">
Handlebars
StemsEssentials   Grips & Bar-Tape Open search bar HeadsetsAccessories Brakes See MoreLocks
img src="//projektride.co.uk/cdn/shop/files/17610_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img"> img src="//projektride.co.uk/cdn/shop/files/17613_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img">
<
Header Image
<
<
  • <

img src="//projektride.co.uk/cdn/shop/files/17623_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img">
img src="//projektride.co.uk/cdn/shop/files/17624_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img">
Clothing and Protection See More
img src="//projektride.co.uk/cdn/shop/files/17626_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img"> ProjektRide Merchandise <
< Helmets < div class="result__image-img product__media lazyload fade-in" data-bgset="{{ it.product.image.thumb }}" data-aspectratio="{{ it.product.image.aspectRatio }}" data-sizes="auto"> {{@if(it.product.badgeText)}} Gloves
div class="product__tag{{ it.product.badgeClasses }}"> span>{{ it.product.badgeText | safe }} > {{/if}}
img src="//projektride.co.uk/cdn/shop/files/17628_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img">
Socks>
li class="result result--full"> Create account { "@context": "http://schema.org", "@type": "Organization", "name": "ProjektRide","sameAs": [ null, null, null, null, null, null, null ], "url": "https:\/\/projektride.co.uk" } img src="//projektride.co.uk/cdn/shop/files/17841_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img"> to qualify for free shipping
SELL
RIDE CONFIDENT img src="//projektride.co.uk/cdn/shop/files/17844_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img"> #ProductTemplate--template--15326745395426__main { background: #ffffff; } .shop-pay-terms { --payment-terms-background-color: #ffffff } img src="//projektride.co.uk/cdn/shop/files/17845_98x.jpg?v=1723802375" alt="" class="product-single__thumbnail-img">
Open search bar


window.appBlockPlacements ||= []; if (window.klarnaAppBlocksManager) { window.klarnaAppBlocksManager.push({ productVariants: [{"id":45820546908386,"title":"Green","option1":"Green","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Back-Roller Plus - Green","public_title":"Green","options":["Green"],"price":10000,"weight":0,"compare_at_price":nul TECHNICAL l,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820546941154,"title":"Blue","option1":"Blue","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Back-Roller Plus - Blue","public_title":"Blue","options":["Blue"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820546973922,"title":"Black","option1":"Black","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Ortlieb Back-Roller Plus - Black","public_title":"Black","options":["Black"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820547006690,"title":"Red","option1":"Red","option2":null,"option3":null,"sku":"","Product Designed to fit the demands of off-road riding, these materials offer full waterproofing, light weight, low stretch, and high abrasion and tear resistance. Notably, it’s welded together at the seams, creating a watertight seal that ensures the Accessory Pocket remains completely waterproof. Details Care Hand wash, using a mild diluted soap if necessary. Afterwards, let it air dry. Do not machine wash, machine dry, or iron. {"id":8108877676770,"title":"BACKCOUNTRY ACCESSORY POCKET (4L)","handle":"backcountry-accessory-pocket-4l","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cdiv class=\"wrap-details read-more\" data-mce-fragment=\"1\"\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eConvenience without compromise – just clip and go.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eClipping securely to Apidura’s Backcountry Handlebar Pack, the Backcountry Accessory Pocket is a convenient, removable compartment for storing anything you might need at a moment’s notice on the trail.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eWeighing only 155 grams, the Pocket keeps favourite snacks, a phone, or a small camera within arm’s reach. A velcro closure provides easy access, while an internal anti-rattle mesh pocket keeps contents secure. A reflective design and a light attachment help to increase visibility in low light.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cem data-mce-fragment=\"1\"\u003ePlease note: This bag does not function as a standalone product.\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"wrap-details read-more\" data-mce-fragment=\"1\"\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003eTECHNICAL\u003ci class=\"tab-arrow\" data-mce-fragment=\"1\"\u003e\u003c\/i\u003e\n\u003c\/h3\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eMaterials \u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eThe Backcountry Accessory Pocket is made from Dimension-Polyant VX21, a four-layer laminated fabric originally developed for the maritime industry and our proprietary 420D nylon; a rugged fabric made to our own exacting specifications for durability and waterproofing.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eDesigned to fit the demands of off-road riding, these materials offer full waterproofing, light weight, low stretch, and high abrasion and tear resistance. Notably, it’s welded together at the seams, creating a watertight seal that ensures the Accessory Pocket remains completely waterproof.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eCare\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eHand wash, using a mild diluted soap if necessary. Afterwards, let it air dry.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eDo not machine wash, machine dry, or iron.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","published_at":"2023-06-25T11:56:44+01:00","created_at":"2023-06-25T11:56:44+01:00","vendor":"Apidura","type":"bags","tags":["Apidura","Bags and Transportation","Bike Packing","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":5800,"price_min":5800,"price_max":5800,"available":true,"price_varies":false,"compare_at_price":null,"com a-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eMaterials \u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eThe Backcountry Accessory Pocket is made from Dimension-Polyant VX21, a four-layer laminated fabric originally developed for the maritime industry and our proprietary 420D nylon; a rugged fabric made to our own exacting specifications for durability and waterproofing.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eDesigned to fit the demands of off-road riding, these materials offer full waterproofing, light weight, low stretch, and high abrasion and tear resistance. Notably, it’s welded together at the seams, creating a watertight seal that ensures the Accessory Pocket remains completely waterproof.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eCare\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eHand wash, using a mild diluted soap if necessary. Afterwards, let it air dry.\u00OtherCustom BuildsInsure Your Bike < < { "@context": "http://schema.org/", "@type": "Product", "name": "Ortlieb Back-Roller Plus", "url": "https:\/\/projektride.co.uk\/products\/ortlieb-back-roller-plus","image": [ "https:\/\/projektride.co.uk\/cdn\/shop\/files\/17603_2000x.jpg?v=1723802375" ],"description": " \n\n\nThe Back-Roller Plus is more than just a rear pannier. It's the original, reimagined and perfected to meet all your requirements. Made from waterproof, durable Cordura fabric in an elegant textile look, it not only protects against moisture but also against dust and dirt - no matter what adventure you choose.\nThe waterproof outer pocket with a roll-top closure keeps smaller contents dry and safe yet easily accessible. Thanks to the side reflector, you'll be visible even in poor lighting conditions. And with the Quick-Lock mounting system, the durable rear pannier can be effortlessly attached to and removed from the bicycle.\nThe organizer inside allows for orderly storage of your belongings. And when you're not on the bike, you can conveniently transport the Back-Roller Plus with the shoulder carrying strap.\nWhether in everyday life or on extended bike tours, the sustainably produced Back-Roller Plus, made in Germany is ready for your next adventure!\n\nFabric: PS36C\nFeatures: QL2.1\nHeight: 42cm\nWidth: 23 \/ 32cm\nDepth: 17cm\nVolume: 23L\nWeight: 1680g\n\n\n\n\n","brand": { "@type": "Thing", "name": "ortlieb" },"gtin8": "","offers": [{ "@type" : "Offer","availability" : "http://schema.org/InStock", "price" : 100.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/ortlieb-back-roller-plus?variant=45820546908386" }, { "@type" : "Offer","availability" : "http://schema.org/InStock", "price" : 100.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/ortlieb-back-roller-plus?variant=45820546941154" }, { "@type" : "Offer","availability" : "http://schema.org/InStock", "price" : 100.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/ortlieb-back-roller-plus?variant=45820546973922" }, { "@type" : "Offer","availability" : "http://schema.org/InStock", "price" : 100.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/ortlieb-back-roller-plus?variant=45820547006690" } ] } <a class="product__media product__media--featured" href="/collections/bags-transportation/products/hire-ortlieb-40l-pannier-bags" title="Hire Ortlieb 40L Pannier Bags" aria-label="Hire Ortlieb 40L Pannier Bags" style="background-image: url(//projektride.co.uk/cdn/shop/files/resize_width_1000_600x.jpg?v=1741085512)"> <a class="product__media product__media--featured" href="/collections/accessories-bike-packing/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)"> span class="visually-hidden">Life Systems Pocket First Aid Kit - HIRE> >
requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Back-Roller Plus - Red","public_title":"Red","options":["Red"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}], templateName: 'product', dataKey: 'top-strip-promotion-badge', storefrontCurrency: 'GBP', storefrontCountry: 'GB', storefrontLanguage: 'en', shopLocale: 'en', shopDomain: 'projektride.co.uk', variantPrice: '10000', cartPrice: '0', selector: 'shopify-osm-ASUorQUNvQS9uckFQO__klarna_on_site_messaging_app_block_8gNReH', topPadding: '0', bottomPadding: '0', }); } else { window.appBlockPlacements.push({ productVariants: [{"id":45820546908386,"title":"Green","option1":"Green","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":trSHIFTERS Custom Builds for saleue,"name":"Ortlieb Back-Roller Plus - Green","public_title":"Green","options":["Green"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820546941154,"title":"Blue","option1":"Blue","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Back-Roller Plus - Blue","public_title":"Blue","options":["Blue"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820546973922,"title":"Black","option1":"Black","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Ortlieb Back-Roller Plus - Black","public_title":"Black","options":["Black"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling
TRP Spyre C Flat mount   
Services  
Workshop Workshop Pricest2023-06-25at11.57.19.png?v=1687690645"},"aspect_ratio":1.31,"height":942,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-06-25at11.57.19.png?v=1687690645","width":1234},{"alt":null,"id":31960272535778,"position":2,"preview_image":{"aspect_ratio":1.31,"height":942,"width":1234,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-06-25at11.57.38.png?v=1687690663"},"aspect_ratio":1.31,"height":942,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-06-25at11.57.38.png?v=1687690663","width":1234}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cdiv class=\"wrap-details read-more\" data-mce-fragment=\"1\"\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eConvenience without compromise – just clip and go.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eClipping securely to Api
Cycle To Work Schemes
> display: block; margin-bottom: 20px; color: rgb(0, 0, 0); font-family: 'Open Sans', Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\"\u003e\u003c\/div\u003e\n\u003c!----\u003e","published_at":"2024-08-16T11:03:38+01:00","created_at":"2024-08-16T11:03:38+01:00","vendor":"ortlieb","type":"Apparel \u0026 Accessories","tags":["Bike Packing","pannier","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":10000,"price_min":10000,"price_max":10000,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":fa
span class="visually-hidden">Hire Ortlieb 40L Pannier BagsGRIPS >
£0.00
>

Sat: 9:00 - 16:00Helmets Clothing0131 374 5324EdinburghProjektRideJuan Borges Designs window._RestockRocketConfig = window._RestockRocketConfig || {} // Helper function to normalize locale format from hyphen to underscore (e.g., 'en-US' -> 'en_us') // This matches the backend's Mobility.normalize_locale behavior // Returns empty string if locale is empty or invalid (matches original behavior) function normalizeLocale(locale) { if (!locale || locale.trim() === '') { return ''; } return locale.toString().toLowerCase().replace(/-/g, '_'); } window._RestockRocketConfig.locale = 'en'; window._RestockRocketConfig.normalizedLocale = normalizeLocale "collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":null,"show_button_on_page":false,"insert_button_after_selector_search":null,"show_button_on_search":false,"app_proxy_path_prefix":"/appsOpen search bar22757602,43936022790370,43936022823138,43936022855906,43936056115426,43936061030626,43936064930018,43936070631650,43936078037218,43936078069986,43936088195298,43936093470946,43936101138658,43936107266274,43936124076258,43936124109026,43936124141794,43936124174562,43936129941730,43936129974498,43936130007266,43936142393570,43936142426338,43936142459106,43936152060130,43936152092898,43936152125666,43936193118434,43936250429666,43936255803618,43936266682594,43936266715362,43936293978338,43936294011106,43936316424418,43936316457186,43936320880866,43936320913634,43936320946402,43936327041250,43936327074018,43936327106786,43936331661538,43936332349666,43936333103330,43936351224034,43936353714402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936401522914,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,4393830881 ext_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 ecurely to Apidura’s Backcountry Handlebar Pack, the Backcountry Accessory Pocket is a convenient, removable compartment for storing anything you might need at a moment’s notice on the trail.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eWeighing only 155 grams, the Pocket keeps favourite snacks, a phone, or a small camera within arm’s reach. A velcro closure provides easy access, while an internal anti-rattle mesh pocket keeps contents secure. A reflective design and a light attachment help to increase visibility in low light.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cem data-mce-fragment=\"1\"\u003ePlease note: This bag does not function as a standalone product.\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"wrap-details read-more\" data-mce-fragment=\"1\"\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003eTECHNICAL\u003ci class=\"tab-arrow\" data-mce-fragment=\"1\"\u003e\u003c\/i\u003e\n\u003c\/h3\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003 shop\/files\/Screenshot2023-06-25at11.57.38.png?v=1687690663","width":1234}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cdiv class=\"wrap-details read-more\" data-mce-fragment=\"1\"\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eConvenience without compromise – just clip and go.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eClipping securely to Apidura’s Backcountry Handlebar Pack, the Backcountry Accessory Pocket is a convenient, removable compartment for storing anything you might need at a moment’s notice on the trail.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eWeighing only 155 grams, the Pocket keeps favourite snacks, a phone, or a small camera within arm’s reach. A velcro closure provides easy access, while an internal anti-rattle mesh pocket keeps contents secure. A reflective design and a light attachment help to inOpen cart window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Check if translations are enabled but missing from 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. !settings.multi_language_enabled) { return settings; } if (!settings.translations) { console.debug('STOQ - No translations found, skipping translation'); return settings; } const normalizedLocale = window._RestockRocketConfig.normalizedLocale; const translations = settings.translations; if (!normalizedLocale) { // No matching locale has translations; drop payload to save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key or(e) }) } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketC nt = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } } function updateCartSellingPlans() { // Wait for the API to be available with retries const maxRetries = 10; const retryDelay = 500; function attemptCartCheck(attempt = 1) { if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => { if (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); < -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:10 window._RestockRocketConfig = window._RestockRocketConfig || {} // Helper function to normalize locale format from hyphen to underscore (e.g., 'en-US' -> 'en_us') // This matches the backend's Mobility.normalize_locale behavior // Returns empty string if locale is empty or invalid (matches original behavior) function normalizeLocale(locale) { if (!locale || locale.trim() === '') { return ''; } return locale.toString().toLowerCase().replace(/-/g, '_'); } window._RestockRocketConfig.locale = 'en'; window._RestockRocketConfig.normalizedLocale = normalizeLocale('en'); window._RestockRocketConfig.shop = 'projektride.myshopify.com'; window._RestockRocketConfig.pageType = 'product';window._RestockRocketConfig.marketId = 382140642;window._RestockRocketConfig.countryName = 'United Kingdom'; window._RestockRocketConfig.countryIsoCode = 'GB';window._RestockRocketConfig.cartInventoryQuantity = {};window._RestockRocketConfig.cachedSettings = {"id":38500,"shop_id":38436,"currency":"GBP","created_at":"2025-07-26T09:13:57.337Z","updated_at":"2025-11-11T14:27:02.312Z","enable_app":true,"enable_signup_widget":false,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":true,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":false,"css_config":"","js_config":null,"collect_promotion_consent":false,"storefront_form_promotion_consent_label":"Notify me about other news, sales, discounts & offers too","show_button_on_collection":false,"sms_default_country":"us","sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_t ext_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":null,"show_button_on_page":false,"insert_button_after_selector_search":null,"show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-productionr_selector":"","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":"","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":null,"inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"market_setup_type":"single_market","shopify_app_id":5940125,"cache":true,"cached_at":"2025-11-11T14:27:02.333Z","multi_language_enabled":false,"translation_locale":"en"};window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[42167799447778,43590980075746,43916521013474,43934694998242,43934695031010,43934695620834,43935975440610,43935975473378,43935989399778,43935989432546,43935990284514,43935994118370,43935995625698,43935995855074,43936000835810,43936003195106,43936003227874,43936008012002,43936008044770,43936022757602,43936022790370,4 3936022823138,43936022855906,43936056115426,43936061030626,43936064930018,43936070631650,43936078037218,43936078069986,43936088195298,43936093470946,43936101138658,43936107266274,43936124076258,43936124109026,43936124141794,43936124174562,43936129941730,43936129974498,43936130007266,43936142393570,43936142426338,43936142459106,43936152060130,43936152092898,43936152125666,43936193118434,43936250429666,43936255803618,43936266682594,43936266715362,43936293978338,43936294011106,43936316424418,43936316457186,43936320880866,43936320913634,43936320946402,43936327041250,43936327074018,43936327106786,43936331661538,43936332349666,43936333103330,43936351224034,43936353714402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936401522914,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,43938308817122,43938322612450,43938322645218,43938322677986,43981336051938,43981336084706,43981336117474,43981336150242,43981345587426,43981345620194,43981345652962,43981345685730,43981357580514,43981357613282,43981362462946,43981362495714,43981362528482,43981369016546,43981369049314,43981374914786,43981374947554,43981374980322,43981392904418,43981695844578,43981695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,44052906967266,44052907327714,44052907360482,44052907393250,44052907426018,44052907458786,44052907491554,44052909097186,44052909129954,44140302827746,44140302893282,44140317016290,44155590508770,44155590541538,44155594211554,44155594244322,44155594277090,44155594309858,44155594342626,44155594375394,44155594440930,44155594473698,44155594506466,44195991847138,44195991945442,44329993437410,44329993470178,44329993502946,44329993535714,44329993568482,44957136584930,44957136781538,44957136945378,45068753961186,45068753993954,45069622640866,45069622903010,45069622968546,45069750730978,45069750763746,453530109 21698,45353010954466,45353010987234,45353018261730,45353018294498,45353018327266,55569712382335,55569712447871,55569712480639,55569933074815,55570550194559,55570550227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2025-12-15T14:52:15Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2025-12-15T14:53:22Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2025-12-15T14:53:22Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569933140351,55569712382335,55569712415103,55569712480639,55569933173119,55570017616255,55569933074815,55570017550719,55569712447871,55569933107583,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","pre View allorder_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":":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":8677938069730,"title":"Ortlieb Back-Roller Plus","handle":"ortlieb-back-roller-plus","description":"\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"tab-pane fade in active\" id=\"description\" role=\"tabpanel\"\u003e\n\u003cdiv class=\"product-description\"\u003e\n\u003cp\u003eThe Back-Roller Plus is more than just a rear pannier. It's the original, reimagined and perfected to meet all your requirements. Made from waterproof, durable Cordura fabric in an elegant textile look, it not only protects aga inst moisture but also against dust and dirt - no matter what adventure you choose.\u003c\/p\u003e\n\u003cp\u003eThe waterproof outer pocket with a roll-top closure keeps smaller contents dry and safe yet easily accessible. Thanks to the side reflector, you'll be visible even in poor lighting conditions. And with the Quick-Lock mounting system, the durable rear pannier can be effortlessly attached to and removed from the bicycle.\u003c\/p\u003e\n\u003cp\u003eThe organizer inside allows for orderly storage of your belongings. And when you're not on the bike, you can conveniently transport the Back-Roller Plus with the shoulder carrying strap.\u003c\/p\u003e\n\u003cp\u003eWhether in everyday life or on extended bike tours, the sustainably produced Back-Roller Plus, made in Germany is ready for your next adventure!\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFabric: PS36C\u003c\/li\u003e\n\u003cli\u003eFeatures: QL2.1\u003c\/li\u003e\n\u003cli\u003eHeight: 42cm\u003c\/li\u003e\n\u003cli\u003eWidth: 23 \/ 32cm\tions":["Blue"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820546973922,"title":"Black","option1":"Black","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Ortlieb Back-Roller Plus - Black","public_title":"Black","options":["Black"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820547006690,"title":"Red","option1":"Red","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Back-Roller Plus - Red","public_title":"Red","options":["Red"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk Loading more\/cdn\/shop\/files\/17603.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17597.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17598.jpg?v=1723802376","\/\/projektride.co.uk\/cdn\/shop\/files\/17599.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17600.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17601.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17602.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17596.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17604.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17605.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17606.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17607.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17608.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17609.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17610.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17611.jpg?v=17 ":34467845505250,"position":5,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17600.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17600.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845538018,"position":6,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17601.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17601.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845570786,"position":7,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17602.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17602.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845374178,"position":8,"preview_image":{"aspect_ratio". ktride.co.uk\/cdn\/shop\/files\/17612.jpg?v=1723802376","width":2000},{"alt":null,"id":34467845931234,"position":18,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17613.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17613.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845964002,"position":19,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17614.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17614.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845996770,"position":20,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17615.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17615.jpg?v=1723802375","w .jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17625.jpg?v=1723802375","width":2000},{"alt":null,"id":34467846357218,"position":31,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17626.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17626.jpg?v=1723802375","width":2000},{"alt":null,"id":34467846389986,"position":32,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17627.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17627.jpg?v=1723802375","width":2000},{"alt":null,"id":34467846422754,"position":33,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17628.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"medi oof, durable Cordura fabric in an elegant textile look, it not only protects against moisture but also against dust and dirt - no matter what adventure you choose.\u003c\/p\u003e\n\u003cp\u003eThe waterproof outer pocket with a roll-top closure keeps smaller contents dry and safe yet easily accessible. Thanks to the side reflector, you'll be visible even in poor lighting conditions. And with the Quick-Lock mounting system, the durable rear pannier can be effortlessly attached to and removed from the bicycle.\u003c\/p\u003e\n\u003cp\u003eThe organizer inside allows for orderly storage of your belongings. And when you're not on the bike, you can conveniently transport the Back-Roller Plus with the shoulder carrying strap.\u003c\/p\u003e\n\u003cp\u003eWhether in everyday life or on extended bike tours, the sustainably produced Back-Roller Plus, made in Germany is ready for your next adventure!\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFabric: PS36C\u003c\/li\u003e\n\u003cli\u003eFeatures: QL2.1\u003c\/li\u00 ll,}; window._RestockRocketConfig.variantsShippingText = {45820546908386 : "",45820546941154 : "",45820546973922 : "",45820547006690 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {45820546908386 : null,45820546941154 : null,45820546973922 : null,45820547006690 : null,}; window._RestockRocketConfig.selected_variant_id = 45820546908386; 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/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.s< criptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Check if translations are enabled but missing from 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, li class="result"> 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 save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[keya href="{{ it.product.url }}" class="result__image-link" aria-label='{{ it.product.title }}'> ]; 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-Th div class="result__image-img product__media lazyload fade-in" data-bgset="{{ it.product.image.thumb }}" data-aspectratio="{{ it.product.image.aspectRatio }}" data-sizes="auto"> {{@if(it.product.badgeText)}} eme-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}`); 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._RestockRocketConfig.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 || setti div class="product__tag{{ it.product.badgeClasses }}">ngs.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 enabled for ${window._RestockRocketConfig.pageType}`); } // Check and update cart selling plans after scripts are loaded if (settings.preorder_enabled) { updateCartSellingPlans(); } // Dispatch custom event when app is loaded const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageT< p class="result__title">{{ it.item.text }} { "@context": "http://schema.org", "@type": "Organization", "name": "ProjektRide","sameAs": [ null, null, null, null, null, null, null ], "url": "https:\/\/projektride.co.uk" } BUY SELL RIDE CONFIDENT #ProductTemplate--template--15326745395426__main { background: #ffffff; } .shop-pay-terms { --payment-terms-background-color: #ffffff }
ProjektRide
Mon - Fri: 09:00 - 18:30 Sun: Closed Gloves Tel
Location 82 Newington RoadEH9 1QN Email [email protected]
© 2025, . Website by .
Open navigation menurms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":true,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":false,"css_config":"","js_config":null,"collect_promotion_consent":false,"storefront_form_promotion_consent_label t/add\"] button","preorder_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":null,"preorder_index_badge_selector":null,"preorder_page_badge_selector":null,"preorder_search_badge_selector":null,"preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"span","preorder_button_disclaimer_insert_selector":"","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend" ,45069750763746,45353010921698,45353010954466,45353010987234,45353018261730,45353018294498,45353018327266,55569712382335,55569712447871,55569712480639,55569933074815,55570550194559,55570550227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2025-12-15T14:52:15Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2025-12-15T14:53:22Z","shopify_market_id":382140642,"market_locations_enabled":false}; win ing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","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,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true}];window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9b t air dry.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eDo not machine wash, machine dry, or iron.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","published_at":"2023-06-25T11:56:44+01:00","created_at":"2023-06-25T11:56:44+01:00","vendor":"Apidura","type":"bags","tags":["Apidura","Bags and Transportation","Bike Packing","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":5800,"price_min":5800,"price_max":5800,"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":44140340543714,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"BBF","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"BACKCOUNTRY ACCESSORY POCKET (4L)","public_title":null,"options":["Default Title"],"price":5800,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"sel s of off-road riding, these materials offer full waterproofing, light weight, low stretch, and high abrasion and tear resistance. Notably, it’s welded together at the seams, creating a watertight seal that ensures the Accessory Pocket remains completely waterproof.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eCare\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eHand wash, using a mild diluted soap if necessary. Afterwards, let it air dry.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eDo not machine wash, machine dry, or iron.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {44140340543714 : "continue",}; window._RestockRocketConfig.variantsInventoryQuantity = {44140340543714 : parseInt("100"),}; window._RestockRocketConfig.variantsPreorderCount = {44140340543714 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {441403405 < e?.role === 'main') { headers['X-Shopify-Theme-Schema
t-right{right:0;transform:translateX(100%);-webkit-transform:translateX(100%);border-radius:10px 0 0 10px}.restock-rocket-toast-right.slide-out{-webkit-animation:.5s forwards slide-out-right;animation:.5s forwards slide-out-right}@keyframes slide{100%{transform:translateX(0)}}@-webkit-keyframes slide{100%{-webkit-transform:translateX(0)}}@keyframes slide-out-left{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}@-webkit-keyframes slide-out-left{0%{-webkit-transform:translateX(0)}100%{-webkit-transform:translateX(-100%)}}@keyframes slide-out-right{0%{transform:translateX(0)}100%{transform:translateX(100%)}}@-webkit-keyframes slide-out-right{0%{-webkit-transform:translateX(0)}100%{-webkit-transform:translateX(100%)}} Search text field ","collection_link_selector":"","index_link_selector":"","page_link_selector":"","search_link_selector":"","collection_check_link_visibility":true,"collection_buttons_container":null,"index_buttons_container":null,"page_buttons_container":null,"search_buttons_container":null,"extension_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is out of stock. Get notified when it's restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":null,"preorder_add_to_cart_button_selector":"","preorder_badge_selector":"","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_enabled":false,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorde205 r_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":null,"preorder_index_badge_selector":null,"preorder_page_badge_selector":null,"preorder_search_badge_selector":null,"preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"span","preorder_button_disclaimer_insert_selector":"","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_containe
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"8 ,"billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","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,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true}];window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_idu003c\/li\u003e\n\u003cli\u003eDepth: 17cm\u003c\/li\u003e\n\u003cli\u003eVolume: 23L\u003c\/li\u003e\n\u003cli\u003eWeight: 1680g\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"tab-pane fade\" id=\"product-details\" role=\"tabpanel\" style=\"box-sizing: inherit; opacity: 1; transition: opacity 0.15s linear 0s; display: block; margin-bottom: 20px; color: rgb(0, 0, 0); font-family: 'Open Sans', Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\"\u003e\u003c\/div\u003e\n\u003c!----\u003e","published_at":"2024-08-16T11:03:38+01:00","created_at":"2024-08-16T11:03:38+0ST ANGLE 1:00","vendor":"ortlieb","type":"Apparel \u0026 Accessories","tags":["Bike Packing","pannier","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":10000,"price_min":10000,"price_max":10000,"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":45820546908386,"title":"Green","option1":"Green","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Back-Roller Plus - Green","public_title":"Green","options":["Green"],"price":10000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820546941154,"title":"Blue","option1":"Blue","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Back-Roller Plus - Blue","public_title":"Blue","op23802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17612.jpg?v=1723802376","\/\/projektride.co.uk\/cdn\/shop\/files\/17613.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17614.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17615.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17616.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17617.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17618.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17619.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17620.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17621.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17622.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17623.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17624.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17625.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17626.jpg?v=1723802375","\/\/projektride.co.uk\/75cdn\/shop\/files\/17627.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17628.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17838.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17839.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17840.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17841.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17842.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17843.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17844.jpg?v=1723802375","\/\/projektride.co.uk\/cdn\/shop\/files\/17845.jpg?v=1723802375"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/17603.jpg?v=1723802375","options":["Color"],"media":[{"alt":null,"id":34467845603554,"position":1,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17603.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\.74.5k\/cdn\/shop\/files\/17606.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17606.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845734626,"position":12,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17607.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17607.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845767394,"position":13,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17608.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17608.jpg?v=1723802375","width":2000},{"alt":null,"id":34467845800162,"position":14,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17609.jpg?v=1723802375"},"aspect_rati.74"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17619.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17619.jpg?v=1723802375","width":2000},{"alt":null,"id":34467846160610,"position":25,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17620.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17620.jpg?v=1723802375","width":2000},{"alt":null,"id":34467846193378,"position":26,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17621.jpg?v=1723802375"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17621.jpg?v=1723802375","width":2000},{"alt":null,"id":34467846226146,"position":27,"preview_image":{"aspect_ratio":1.0,"height":2000,"width": 73.5es\/17840.jpg?v=1723802375","width":1200},{"alt":null,"id":34467846553826,"position":37,"preview_image":{"aspect_ratio":0.667,"height":1200,"width":800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17841.jpg?v=1723802375"},"aspect_ratio":0.667,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17841.jpg?v=1723802375","width":800},{"alt":null,"id":34467846586594,"position":38,"preview_image":{"aspect_ratio":1.5,"height":800,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17842.jpg?v=1723802375"},"aspect_ratio":1.5,"height":800,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17842.jpg?v=1723802375","width":1200},{"alt":null,"id":34467846652130,"position":39,"preview_image":{"aspect_ratio":0.667,"height":1200,"width":800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17843.jpg?v=1723802375"},"aspect_ratio":0.667,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/17843.jpg?v=1723802375","width":800},{"alt":null,"i 73"}; window._RestockRocketConfig.variantsInventoryPolicy = {45820546908386 : "deny",45820546941154 : "deny",45820546973922 : "deny",45820547006690 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {45820546908386 : parseInt("1"),45820546941154 : parseInt("1"),45820546973922 : parseInt("0"),45820547006690 : parseInt("1"),}; window._RestockRocketConfig.variantsPreorderCount = {45820546908386 : parseInt(""),45820546941154 : parseInt(""),45820546973922 : parseInt(""),45820547006690 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {45820546908386 : null,45820546941154 : null,45820546973922 : null,45820547006690 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {45820546908386 : parseInt(""),45820546941154 : parseInt(""),45820546973922 : parseInt(""),45820547006690 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {45820546908386 : null,45820546941154 : null,45820546973922 : null,45820547006690 : nu 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 <72.5
{ 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); }); } else if (attempt 9span>{{ it.product.badgeText | safe }}< .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%}.rest> 445ock-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-preor> der-countdown-timer .countdown-label{font-size:10px}}.restock-rocket-toast{position:fixed;cursor:pointer;background:#fff;border:0;min-width:40px;min-height:40px;box-shadow:0 0 15px rgba(0,0,0,.1)!important;z-index:622004;padding:20px 30px;font-family:inherit;font-size:inherit;color:#000;display:flex;justify-content:center;align-items:center}.restock-rocket-toast a{text-decoration:none;font-weight:700;color:#000}.restock-rocket-toast .dismiss{margin-left:15px;z-index:1;font-size:20px;}.restock-rocket-toast-top{top:60px}.restock-rocket-toast-bottom{bottom:75px}.restock-rocket-toast-left,.restock-rocket-toast-right{-webkit-animation:.5s forwards slide;animation:.5s forwards slide}.restock-rocket-toast-left{left:0;transform:translateX(-100%);-webkit-transform:translateX(-100%);border-radius:0 10px 10px 0}.restock-rocket-toast-left.slide-out{-webkit-animation:.5s forwards slide-out-left;animation:.5s forwards slide-out-left}.restock-rocket-toast-right{right:0;transform:translateX(100%);-webkit-transform:translateX<<> 445

445 <445li class="result result--full">
10 72 72 70 70
11 BB HEIGHT 281 281 283 283 285 285
12 1035 1047 <1061img src="//projektride.co.uk/cdn/shop/files/Screenshot2023-10-23at12.14.56_2048x2048.png?v=1698059839" alt="Surly Nice Rack - Rear" class="mfp-zoom-in-cur" id="32381231431906"> 1073 1086 <1099img src="//projektride.co.uk/cdn/shop/files/Screenshot2023-10-23at12.14.50_98x.png?v=1698059840" alt="" class="product-single__thumbnail-img">
FRONT CENTER<
KONA Geometry

5+< label for="quantity--template--15326745395426__main">Quantity Notify me when this product is available: Submit window.appBlockPlacements ||= []; if (window.klarnaAppBlocksManager) { window.klarnaAppBlocksManager.push({ productVariants: [{"id":44441822789858,"title":"BLACK","option1":"BLACK","option2":null,"option3":null,"sku":"RASUNRRK","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Surly Nice Rack - Rear - BLACK","public_title":"BLACK","options":["BLACK"],"price":16000,"weight":0,"compare_at_price":17000,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":44441822822626,"title":"SILVER","option1":"SILVER","option2":null,"option3":null,"sku":"RASUNRRS","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Nice Rack - Rear - SILVER","public_title":"SILVER","options":["SILVER"],"price":16000,"weight":0,"compare_at_price":17000,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}], templateName: 'product', dataKey: 'top-strip-promotion-badge', storefrontCurrency: 'GBP', storefrontCountry: 'GB', storefrontLanguage: 'en', shopLocale: 'en', shopDomain: 'projektride.co.uk', variantPrice: '16000', cartPrice: '0', selector: 'shopify-osm-ASUorQUNvQS9uckFQO__klarna_on_site_messaging_app_block_8gNReH', topPadding: '0', bottomPadding: '0', }); } else { window.appBlockPlacements.push({ productVariants: [{"id":44441822789858,"title":"BLACK","option1":"BLACK","option2":null,"option3":null,"sku":"RASUNRRK","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Surly Nice Rack - Rear - BLACK","public_title":"BLACK","options":["BLACK"],"price":16000,"weight":0,"compare_at_price":17000,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":44441822822626,"title":"SILVER","option1":"SILVER","option2":null,"option3":null,"sku":"RASUNRRS","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Nice Rack - Rear - SILVER","public_title":"SILVER","options":["SILVER"],"price":16000,"weight":0,"compare_at_price":17000,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}], templateName: 'product', shopLocale: 'en', dataKey: 'top-strip-promotion-badge', storefrontCurrency: 'GBP', storefrontCountry: 'GB', storefrontLanguage: 'en', shopDomain: 'projektride.co.uk', variantPrice: '16000', cartPrice: '0', selector: 'shopify-osm-ASUorQUNvQS9uckFQO__klarna_on_site_messaging_app_block_8gNReH', topPadding: '0', bottomPadding: '0', }); } Product Details Our Rear Rack is made of tubular CroMoly steel and is designed for expedition touring. We’re not saying you should quit your job, but if you did and needed a bike rack to haul your belongings this would be one that could stand up to the rigors of jobless wandering via bicycle. It is easily repairable on the road and strong enough that you’ll likely never have to worry. The Rear Rack is also height adjustable and can fit a wide selection of wh Not recommended with Disc brakes* and/or suspension. * Rear rack WILL work with disc brakes on Surly Troll, Ogre, and Disc Trucker frames. This is accomplished by moving the rear caliper inside the rear triangle. It does limit you to a 160mm rotor but what the hell? Brakes only slow you down. We also have aftermarket upper tubes available in longer 240mm length so you can fit the Rear Rack to smaller frames and still keep things level. {"id":8182070149346,"title":"Surly Nice Rack - Rear","handle":"surly-nice-rack","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003eOur Rear Rack is made of tubular CroMoly steel and is designed for expedition touring. We’re not saying you should quit your job, but if you did and needed a bike rack to haul your belongings this would be one that could stand up to the rigors of jobless wandering via bicycle. It is easily repairable on the road and strong enough that you’ll likely never have to worry.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eThe Rear Rack is also height adjustable and can fit a wide selection of wheel sizes while allowing you to keep the center of gravity as low as possible for a stable ride. There’s plenty of room up top to lash all kinds of things: small travel guitars, large bongs, medium pizzas, tents, camping chairs, cinder blocks, it’s really up to you. The stainless steel hardware we provide will enable you to fit them to most rigid 26\", 700c and some 29+ frames, and forks equipped with drum, caliper, or cantilever brakes. Disc brakes and suspension are generally not compatible with our rear Racks, though there is an increasing number of frames designed to allow the use of racks and disc brakes.\u003c\/p\u003e\n\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003eStrong, reliable, repairable cro-moly. \u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eHeight-adjustable.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eFits most 26\"\/700c Touring frames 42 to 62cm.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eWide Cargo platform.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eNot recommended with Disc brakes* and\/or suspension.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003ePowder coat black or silver.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003e* Rear rack WILL work with disc brakes on Surly Troll, Ogre, and Disc Trucker frames. This is accomplished by moving the rear caliper inside the rear triangle. It does limit you to a 160mm rotor but what the hell? Brakes only slow you reenshot2023-10-23at12.14.50.png?v=1698059840","options":["Color"],"media":[{"alt":null,"id":32381231399138,"position":1,"preview_image":{"aspect_ratio":0.99,"height":1338,"width":1324,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.50.png?v=1698059840"},"aspect_ratio":0.99,"height":1338,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.50.png?v=1698059840","width":1324},{"alt":null,"id":32381231431906,"position":2,"preview_image":{"aspect_ratio":0.99,"height":1338,"width":1324,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.56.png?v=1698059839"},"aspect_ratio":0.99,"height":1338,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.56.png?v=1698059839","width":1324}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003eOur Rear Rack is made of tubular CroMoly steel and is designed for expedition touring. We’re not saying you should quit your job, but if you did and needed a bike rack to haul your belongings this would be one that could stand up to the rigors of jobless wandering via bicycle. It is easily repairable on the road and strong enough that you’ll likely never have to worry.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eThe Rear Rack is also height adjustable and can fit a wide selection of wheel sizes while allowing you to keep the center of gravity as low as possible for a stable ride. There’s plenty of room up top to lash all kinds of things: small travel guitars, large bongs, medium pizzas, tents, camping chairs, cinder blocks, it’s really up to you. The stainless steel hardware we provide will enable you to fit them to most rigid 26\", 700c and some 29+ frames, and forks equipped with drum, caliper, or cantilever brakes. Disc brakes and suspension are generally not compatible with our rear Racks, though there is an increasing number of frames designed to a { "@context": "http://schema.org/", "@type": "Product", "name": "Surly Nice Rack - Rear", "url": "https:\/\/projektride.co.uk\/products\/surly-nice-rack","image": [ "https:\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.50_1324x.png?v=1698059840" ],"description": "\nOur Rear Rack is made of tubular CroMoly steel and is designed for expedition touring. We’re not saying you should quit your job, but if you did and needed a bike rack to haul your belongings this would be one that could stand up to the rigors of jobless wandering via bicycle. It is easily repairable on the road and strong enough that you’ll likely never have to worry.\nThe Rear Rack is also height adjustable and can fit a wide selection of wheel sizes while allowing you to keep the center of gravity as low as possible for a stable ride. There’s plenty of room up top to lash all kinds of things: small travel guitars, large bongs, medium pizzas, tents, camping chairs, cinder blocks, it’s really up to you. The stainless steel hardware we provide will enable you to fit them to most rigid 26\", 700c and some 29+ frames, and forks equipped with drum, caliper, or cantilever brakes. Disc brakes and suspension are generally not compatible with our rear Racks, though there is an increasing number of frames designed to allow the use of racks and disc brakes.\n\nStrong, reliable, repairable cro-moly. \nHeight-adjustable.\nFits most 26\"\/700c Touring frames 42 to 62cm.\nWide Cargo platform.\nNot recommended with Disc brakes* and\/or suspension.\nPowder coat black or silver.\n\n* Rear rack WILL work with disc brakes on Surly Troll, Ogre, and Disc Trucker frames. This is accomplished by moving the rear caliper inside the rear triangle. It does limit you to a 160mm rotor but what the hell? Brakes only slow you down. We also have aftermarket upper tubes available in longer 240mm length so you can fit the Rear Rack to smaller frames and still keep things level.","sku": "RASUNRRS","brand": { "@type": "Thing", "name": "ProjektRide" },"gtin8": "","offers": [{ "@type" : "Offer","sku": "RASUNRRK","availability" : "http://schema.org/InStock", "price" : 160.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/surly-nice-rack?variant=44441822789858" }, { "@type" : "Offer","sku": "RASUNRRS","availability" : "http://schema.org/InStock", "price" : 160.0, Would you like to add on any equipment? <span class="visually-hidden">Hire Ortlieb 40L Pannier Bags > 54-56cm £0.00 Life Systems Pocket First Aid Kit - HIRE< a class="product__media product__media--featured" href="/collections/accessories-bags-and-transportation/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)"> <a class="product__media product__media--featured" href="/collections/accessories-bags-and-transportation/products/kryptolok-standard-u-lock-with-4-foot-kryptoflex-cable-hire" title="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" aria-label="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-03-09at20.04.46_560e2033-8232-4bd3-a423-3ce8c9f11849_600x.png?v=1691610428)">
INSEAM/METRIC ROVE LIBRE SUTRADecrease quantity Increase quantity
<4'10"-5'1"input type="number" name="quantity" id="quantity--template--15326745395426__main" value="1" min="1"> 147-155cm 24”-27”Add to cart61-69cm 48cm 50cm 48cm N/A XS
5'0"-5'3" 152-160cm 26"-29" 66-74cm Wide Cargo platform.
5'2"-5'7"Powder coat black or silver. 157-170cm 27"-30" 69-76cm 48-52cm 50-52cm down. We also have\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003ca title=\"Surly XL rack struts\" href=\"https:\/\/www.ison-distribution.com\/english\/product.php?part=RASUNRSX\" data-mce-fragment=\"1\" data-mce-href=\"https:\/\/www.ison-distribution.com\/english\/product.php?part=RASUNRSX\"\u003eaftermarket upper tubes\u003c\/a\u003e\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003eavailable in longer 240mm length so you can fit the Rear Rack to smaller frames and still keep things level.\u003c\/p\u003e","published_at":"2023-10-23T12:17:17+01:00","created_at":"2023-10-23T12:17:17+01:00","vendor":"ProjektRide","type":"","tags":["Bags and Transportation","Bike Packing","pannier rack","surly"],"price":16000,"price_min":16000,"price_max":16000,"available":true,"price_varies":false,"compare_at_price":17000,"compare_at_price_min":17000,"compare_at_price_max":17000,"compare_at_price_varies":false,"variants":[{"id":44441822789858,"title":"BLACK","option1":"BLACK","option2":null,"option3"48-52cm:null,"sku":"RASUNRRK","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Surly Nice Rack - Rear - BLACK","public_title":"BLACK","options":["BLACK"],"price":16000,"weight":0,"compare_at_price":17000,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":44441822822626,"title":"SILVER","option1":"SILVER","option2":null,"option3":null,"sku":"RASUNRRS","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Nice Rack - Rear - SILVER","public_title":"SILVER","options":["SILVER"],"price":16000,"weight":0,"compare_at_price":17000,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.50.png?v=1698059840","\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.56.png?v=1698059839"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/Scllow the use of racks and disc brakes.\u003c\/p\u003e\n\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003eStrong, reliable, repairable cro-moly. \u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eHeight-adjustable.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eFits most 26\"\/700c Touring frames 42 to 62cm.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eWide Cargo platform.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eNot recommended with Disc brakes* and\/or suspension.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003ePowder coat black or silver.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003e* Rear rack WILL work with disc brakes on Surly Troll, Ogre, and Disc Trucker frames. This is accomplished by moving the rear caliper inside the rear triangle. It does limit you to a 160mm rotor but what the hell? Brakes only slow you down. We also have\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003ca title=\"SurSmall, Mediumly XL rack struts\" href=\"https:\/\/www.ison-distribution.com\/english\/product.php?part=RASUNRSX\" data-mce-fragment=\"1\" data-mce-href=\"https:\/\/www.ison-distribution.com\/english\/product.php?part=RASUNRSX\"\u003eaftermarket upper tubes\u003c\/a\u003e\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003eavailable in longer 240mm length so you can fit the Rear Rack to smaller frames and still keep things level.\u003c\/p\u003e"} Small, Medium[]
168-178cm 29"-31" 74-79cm 52-54cm 52-54cmHire Lazer Compact Helmet 52-54cm Hire Lazer Compact HelmetMedium>
a class="product__media product__media--featured" href="/collections/accessories-bags-and-transportation/products/hire-ortlieb-40l-pannier-bags" title="Hire Ortlieb 40L Pannier Bags" aria-label="Hire Ortlieb 40L Pannier Bags" style="background-image: url(//projektride.co.uk/cdn/shop/files/resize_width_1000_600x.jpg?v=1741085512)"> 54-56cm<
5'11"-6'2" 180-188cm 32"-35" <81-89cmspan class="visually-hidden">Life Systems Pocket First Aid Kit - HIRE 54-58cmdiv class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-02-24at21.18.32_9d81277b-124e-4fdc-8a0f-fbfb40a9343d_600x.png?v=1691610357)">Large, XL
56-58cm<<58cmspan class="visually-hidden">Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable 56-58cm XLHire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable N/A£0.00
#FeaturedImage--template--15326745395426__1645734801adfd4c07 { --overlay-opacity: 0.2; }

 

 

I'm looking to buy this product, when will it arrive and how much does postage cost?
.
.png?v=1698059840","width":1324},{"alt":null,"id":32381231431906,"position":2,"preview_image":{"aspect_ratio":0.99,"height":1338,"width":1324,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.56.png?v=1698059839"},"aspect_ratio":0.99,"height":1338,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-10-23at12.14.56.png?v=1698059839","width":1324}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003eOur Rear Rack is made of tubular CroMoly steel and is designed for expedition touring. We’re not saying you should quit your job, but if you did and needed a bike rack to haul your belongings this would be one that could stand up to the rigors of jobless wandering via bicycle. It is easily repairable on the road and strong enough that you’ll likely never have to worry.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eThe Rear Rack is also height adjustable and can f it a wide selection of wheel sizes while allowing you to keep the center of gravity as low as possible for a stable ride. There’s plenty of room up top to lash all kinds of things: small travel guitars, large bongs, medium pizzas, tents, camping chairs, cinder blocks, it’s really up to you. The stainless steel hardware we provide will enable you to fit them to most rigid 26\", 700c and some 29+ frames, and forks equipped with drum, caliper, or cantilever brakes. Disc brakes and suspension are generally not compatible with our rear Racks, though there is an increasing number of frames designed to allow the use of racks and disc brakes.\u003c\/p\u003e\n\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003eStrong, reliable, repairable cro-moly. \u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eHeight-adjustable.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eFits most 26\"\/700c Touring frames 42 to 62cm.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eWide Cargo
platform.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eNot recommended with Disc brakes* and\/or suspension.\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003ePowder coat black or silver.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003e* Rear rack WILL work with disc brakes on Surly Troll, Ogre, and Disc Trucker frames. This is accomplished by moving the rear caliper inside the rear triangle. It does limit you to a 160mm rotor but what the hell? Brakes only slow you down. We also have\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003ca title=\"Surly XL rack struts\" href=\"https:\/\/www.ison-distribution.com\/english\/product.php?part=RASUNRSX\" data-mce-fragment=\"1\" data-mce-href=\"https:\/\/www.ison-distribution.com\/english\/product.php?part=RASUNRSX\"\u003eaftermarket upper tubes\u003c\/a\u003e\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003eavailable in longer 240mm length so you can fit the Rear Rack to smaller frames and still keep thi ngs level.\u003c\/p\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {44441822789858 : "deny",44441822822626 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {44441822789858 : parseInt("0"),44441822822626 : parseInt("5"),}; window._RestockRocketConfig.variantsPreorderCount = {44441822789858 : parseInt(""),44441822822626 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {44441822789858 : null,44441822822626 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {44441822789858 : parseInt(""),44441822822626 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {44441822789858 : null,44441822822626 : null,}; window._RestockRocketConfig.variantsShippingText = {44441822789858 : "",44441822822626 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {44441822789858 : null,44441822822626 : null,}; window._RestockRocketConfig.selected_variant_id = 44441822822626; wi

ndow._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/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - IFAQnvalid 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 Questions and answers<

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 save memory console.debug('STOQ - No matching locale for tr
anslations. 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 cachedSetting s = 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 } ) .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}`); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enable d && integration.page_types.includes(window._RestockRocketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketConfig.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._RestockRocketConfi