cale) {
if (!locale || locale.trim() === '') {
return '';
}
return locale.toString().toLowerCase().replace(/-/g, '_');
}
window._RestockRocketConfig.locale = 'en';
window._RestockRocketConfig.normalizedLocale = normalizeLocale('en');
window._RestockRocketConfig.shop = 'projektride.myshopify.com';
window._RestockRocketConfig.pageType = 'product';
window._RestockRocketConfig.liquidRenderedAt = 1770945346;window._RestockRocketConfig.marketId = 382140642;window._RestockRocketConfig.countryName = 'United Kingdom';
window._RestockRocketConfig.countryIsoCode = 'GB';window._RestockRocketConfig.cartInventoryQuantity = {};window._RestockRocketConfig.cachedSettings = {"id":38500,"shop_id":38436,"currency":"GBP","created_at":"2025-07-26T09:13:57.337Z","updated_at":"2025-12-28T14:44:23.508Z","enable_app":true,"enable_signup_widget":false,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_elector":null,"preorder_search_badge_selector":null,"preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"span","preorder_button_disclaimer_insert_selector":"","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_container_selector":"","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":"","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":null,"inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":0,"mark43936142393570,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,4398976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2026-02-13T00:58:34Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-02-13T01:06:03Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"update
ping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item8-16T12:10:29+01:00","created_at":"2024-08-16T12:10:29+01:00","vendor":"ortlieb","type":"Apparel \u0026 Accessories","tags":["Bike Packing","pannier","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":20000,"price_min":20000,"price_max":20000,"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":45820633120994,"title":"Green","option1":"Green","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Bike-Packer Plus - Green","public_title":"Green","options":["Green"],"price":20000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820633153762,"title":"Red","option1":"Red","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortl
ping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item8-16T12:10:29+01:00","created_at":"2024-08-16T12:10:29+01:00","vendor":"ortlieb","type":"Apparel \u0026 Accessories","tags":["Bike Packing","pannier","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":20000,"price_min":20000,"price_max":20000,"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":45820633120994,"title":"Green","option1":"Green","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlieb Bike-Packer Plus - Green","public_title":"Green","options":["Green"],"price":20000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45820633153762,"title":"Red","option1":"Red","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Ortlplan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/5987.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/5988.jpg?v=1723806598","\/\/projektride.co.uk\/cdn\/shop\/files\/5989.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8158.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8159.jpg?v=1723806598","\/\/projektride.co.uk\/cdn\/shop\/files\/8160.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8161.jpg?v=1723806598","\/\/projektride.co.uk\/cdn\/shop\/files\/8162.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8163.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8164.jpg?v=1723806598","\/\/projektride.co.uk\/cdn\/shop\/files\/8165.jpg?v=1723806598","\/\/projektride.co.uk\/cdn\/shop\/files\/8166.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8167.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8168.jpg?v=1723806597","\/\/projektride.co.uk\/cdn\/shop\/files\/8169.jpg?v=1723806597","\/\/projektride/files\/5987.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/5987.jpg?v=1723806597","width":1200},{"alt":null,"id":34468001087714,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/5988.jpg?v=1723806598"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/5988.jpg?v=1723806598","width":1200},{"alt":null,"id":34468001120482,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/5989.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/5989.jpg?v=1723806597","width":1200},{"alt":null,"id":34468001153250,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8158.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1200,"m
8161.jpg?v=1723806598","width":1200},{"alt":null,"id":34468001284322,"position":8,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8162.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8162.jpg?v=1723806597","width":1200},{"alt":null,"id":34468001317090,"position":9,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8163.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8163.jpg?v=1723806597","width":1200},{"alt":null,"id":34468001349858,"position":10,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8164.jpg?v=1723806598"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8164.jpg?v=1723806598","width":1200},{"alt":null,"id":34468001382614,"position":27,"preview_image":{"aspect_ratio":1.0,"height":1000,"width":1000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8181.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8181.jpg?v=1723806597","width":1000}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\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\u003e\u003cspan\u003eThe perfect pair of bags for any adventure: you’ll be astonished at how much gear fits in the Ortlieb Bike-Packer Plus! The classic flap closure is easy to operate and provides a maximum of stowage on top. The waterproof, three dimensional front compartment offers additional space for many of the small items you may need to access quickly while en route. The durable, high quality Cordura fabric provides optimal protection against water, dust and abrasion.\u003cbr\
8161.jpg?v=1723806598","width":1200},{"alt":null,"id":34468001284322,"position":8,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8162.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8162.jpg?v=1723806597","width":1200},{"alt":null,"id":34468001317090,"position":9,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8163.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8163.jpg?v=1723806597","width":1200},{"alt":null,"id":34468001349858,"position":10,"preview_image":{"aspect_ratio":1.0,"height":1200,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8164.jpg?v=1723806598"},"aspect_ratio":1.0,"height":1200,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8164.jpg?v=1723806598","width":1200},{"alt":null,"id":34468001382614,"position":27,"preview_image":{"aspect_ratio":1.0,"height":1000,"width":1000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8181.jpg?v=1723806597"},"aspect_ratio":1.0,"height":1000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/8181.jpg?v=1723806597","width":1000}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\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\u003e\u003cspan\u003eThe perfect pair of bags for any adventure: you’ll be astonished at how much gear fits in the Ortlieb Bike-Packer Plus! The classic flap closure is easy to operate and provides a maximum of stowage on top. The waterproof, three dimensional front compartment offers additional space for many of the small items you may need to access quickly while en route. The durable, high quality Cordura fabric provides optimal protection against water, dust and abrasion.\u003cbr\mal; 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"};
window._RestockRocketConfig.variantsInventoryPolicy = {45820633120994 : "deny",45820633153762 : "deny",45820633186530 : "deny",45820633219298 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {45820633120994 : parseInt("2"),45820633153762 : parseInt("1"),45820633186530 : parseInt("1"),45820633219298 : parseInt("1"),};
window._RestockRocketConfig.variantsPreorderCount = {45820633120994 : parseInt(""),45820633153762 : parseInt(""),45820633186530 : parseInt(""),45820633219298 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCount;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019c4de0-280f-760f-b566-2e2f8e837eb8/restock-rocket-shopify-454/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019c4de0-280f-760f-b566-2e2f8e837eb8/restock-rocket-shopify-454/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
const LIQUID_CACHE_MAX_AGE = 2 * 60 * 60; // 2 hours in seconds
// Calculate Liquid cache freshness once at initialization
const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt;
// Validate timestamp and calculate cache age
if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedA
<<
<<!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[keyOQ - error applying translations:', e);
return settings;
}
}
// Setup event listener for cart selling plan updates
// This must be called before any scripts are loaded to avoid race conditions
function setupCartSellingPlanUpdater(settings) {
if (!settings || !settings.preorder_enabled) {
return;
}
// Listen for stoq:preorder-api-ready event dispatched by preorder.js
window.addEventListener('stoq:preorder-api-ready', function(event) {
console.debug('STOQ - Preorder API ready, updating cart selling plans');
if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) {
window._RestockRocket.updateCartSellingPlans()
.then(hasUpdates => {
if (hasUpdates) {
console.debug('STOQ - cart selling plans updated successfully');
} else {
console.debug('STOQ - no cart selling plan updates needed');
}
})
.catch(error => {
console.error('STOQ - e
ting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`,
{ headers }
)
.then(function(response) {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(function(settings) {
initializeScripts(settings);
})
.catch(function(error) {
// If request failed and we have cached settings (even if expired), use them as fallback
if (cachedSettings) {
console.debug('STOQ - using expired cached settings as fallback');
initializeScripts(cachedSettings);
} else {
console.error('STOQ - failed to load settings:', error);
}
})
.catch(function(e) {
console.error(e)
})
}
function initializeScripts(settings) {
settings = applyTranslations(settings);
window._RestockRocketConfig.settings = settings;
console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`);
// Setup cart selling plan up
<
ting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`,
{ headers }
)
.then(function(response) {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(function(settings) {
initializeScripts(settings);
})
.catch(function(error) {
// If request failed and we have cached settings (even if expired), use them as fallback
if (cachedSettings) {
console.debug('STOQ - using expired cached settings as fallback');
initializeScripts(cachedSettings);
} else {
console.error('STOQ - failed to load settings:', error);
}
})
.catch(function(e) {
console.error(e)
})
}
function initializeScripts(settings) {
settings = applyTranslations(settings);
window._RestockRocketConfig.settings = settings;
console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`);
// Setup cart selling plan up
<
img src="//pr
ojektride.co.uk/cdn/shop/files/equipment_512x512.png?v=1690612532" alt="" class="icons-row__image">
div class="rich-text__image-bg bg-pos-center-center no-js-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/734fd3b23d9b8a66554f32ebac946bc9_2048x.webp?v=1749545811);">
Choose any optional free equipment - shown in the hire section - and add it to your basket so it's ready for you when you pick up your bike. This can also be done in store.
img src="//pr
ojektride.co.uk/cdn/shop/files/equipment_512x512.png?v=1690612532" alt="" class="icons-row__image">
div class="rich-text__image-bg bg-pos-center-center no-js-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/734fd3b23d9b8a66554f32ebac946bc9_2048x.webp?v=1749545811);">
Choose any optional free equipment - shown in the hire section - and add it to your basket so it's ready for you when you pick up your bike. This can also be done in store.
div class="rich-text__image-bg bg-pos-center-center no-js-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/c237a3028adf44c75cf255f7e8b1c7cb_2048x.webp?v=1749546142);">
Walk Mode features Auto Hold to prevent rollback on slopes as well as Hill Start Assist and stationary gear shifting for a smooth experience.div class="image-column__image image-column__image--mobile no-js-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/e3e7598221646e007559ff7b25c1184b_2048x.webp?v=1749546061);">
>
[email protected]
) where on of the team will be more than happy to help.
Custom Builds) where on of the team will be more than happy to help.
a href="{{ it.product.url }}" class="result__image-link" aria-label='{{ it.product.title }}'>




Shop All Second-Hand
Custom Builds for sale
Custom Build Inspiration label for="quantity--template--16831240536290__main">Quantity
ServicesAdd to cart
Submit/Workshop Prices
Amflow PL Carbon Pro (800 Wh) - Free Front LightBook a Service
Cycle To Work SchemesIncludes 120cm x 10mm Kryptoflex double looped cable to secure your front wheel or accessoriesLargeInsure Your Bike


