span>{{ it.product.badgeText | safe }}Yes
input type="number" name="quantity" id="quantity--template--15326745395426__main" value="1" min="1">
>
p class="result__title">
>
>
)
<
{
"@context": "http://schema.org",
"@type": "Organization",
"name": "ProjektRide","sameAs": [
null,
null,
null,
null,
null,
null,
null
],
"url": "https:\/\/projektride.co.uk"
}
e Frameset - 50cm","public_title":"50cm","options":["50cm"],"price":270000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45610939121890,"title":"52cm","option1":"52cm","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Enigma Titanium Gravel Edge Frameset - 52cm","public_title":"52cm","options":["52cm"],"price":270000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45610939154658,"title":"54cm","option1":"54cm","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Enigma Titanium Gravel Edge Frameset - 54cm","public_title":"54cm","options":["54cm"],"price":270000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":
a href="https://projektride.co.uk/search?q=muc-off&type=product" class="logo-list__slide-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot_2021-12-30_at_20.49.50_360x.png?v=1640897415); width: 150px; padding-top: 47.7%;">
> Clear filters (
Logo image0
Date, old to new
span class="visually-hidden">Specialized Rockhopper Hardtail Mountain Bike - SmallLogo image
>
Date, new to old>
> < >
Logo image
button type="submit" class="btn">Sort
> a href="https://shopify.projektride.co.uk/collections/bikes?filter.p.vendor=Surly,surly,Surly+Bikes,surly+bikes" class="logo-list__slide-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot_2022-02-06_at_16.13.48_360x.png?v=1644164045); width: 160px; padding-top: 55.8%;">
>
Logo image
| ) > | Logo imageClear filters ( | 0a class="product__media product__media--featured" href="/collections/second-hand-bikes/products/specialized-turbo-levo-alloy-oasis-black-size-s3-medium" title="Specialized Turbo Levo Alloy Oasis/Black Size S3 2022 - Medium - Second Hand" aria-label="Specialized Turbo Levo Alloy Oasis/Black Size S3 2022 - Medium - Second Hand" style="background-image: url(//projektride.co.uk/cdn/shop/files/DSC02285_600x.jpg?v=1764873083)"> Boardman Comp X7 - Small) span class="visually-hidden">Specialized Turbo Levo Alloy Oasis/Black Size S3 2022 - Medium - Second Handa href="https://shopify.projektride.co.uk/collections/all-products?filter.p.vendor=Hope,hope,HOPE" class="logo-list__slide-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot_2022-02-06_at_16.21.05_360x.png?v=1644164480); width: 160px; padding-top: 23.0%;"> | Close filters> > £300.00
|---|---|---|
| Sorry, there are no products in this collection > | div class="product__media-hover-img product__media" style="background-imaLogo imageReturn to home
a class="product__media product__media--featured"
href="/collections/second-hand-bikes/products/boardman-urb-8-9-small"
title="Boardman URB 8.9 - Small"
aria-label="Boardman URB 8.9 - Small"
style="background-image: url(//projektride.co.uk/cdn/shop/files/IMG_5209_70aaaff5-1408-4acb-af6e-c3803365a289_600x.jpg?v=1762355269)">
a href="https://www.ortlieb.com/en_us/" class="logo-list__slide-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot_2022-07-06_at_22.44.45_360x.png?v=1657143901); width: 170px; padding-top: 32.4%;">span class="visually-hidden">Boardman URB 8.9 - Small > > Logo image> |
a href="https://projektride.co.uk/collections/bikes?filter.p.vendor=Kona,KONA,Kona+Bikes,kona" class="logo-list__slide-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/KonaLogoOrbitVertBlack_360x.png?v=1672678563); width: 120px; padding-top: 112.5%;"> >Logo imagediv class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/IMG_5210_3b79585f-a51c-413e-90cb-25a2e0a56743_600x.jpg?v=1762355269)"> > |
|
Logo imagespan class="visually-hidden">Genesis Croix De Fer 10 Ex Demo Bike - Medium< | ||
|
a class="product__media product__media--featured"
href="/collections/second-hand-bikes/products/nukeproof-digger-gravel-bike-medium"
title="Nukeproof Digger Comp Gravel Bike - Medium"
aria-label="Nukeproof Digger Comp Gravel Bike - Medium"
style="background-image: url(//projektride.co.uk/cdn/shop/files/DSC02196_600x.jpg?v=1764776282)">
span class="visually-hidden">Nukeproof Digger Comp Gravel Bike - Medium >> |
||
| ProjektRide | .
Website by Juan 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) fun nt_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 na | front_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_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 f
| 94440930,44155594473698,44155594506466,44195991847138,44195991945442,44329993437410,44329993470178,44329993502946,44329993535714,44329993568482,44957136584930,44957136781538,44957136945378,45068753961186,45068753993954,45069622640866,45069622903010,45069622968546,45069750730978,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],"updated_at":"2025-12-14T00:26:35Z","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.cachedOutOfStockVariantId | "preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_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_char"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","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_t ac7fea6dd8f/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 - 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 ; if (ageSETTINGS_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 || ]; 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 (win | ettings:', 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._Rest
// Dispatch custom event when app is loaded
const appLoadedEvent = 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 => {
< | tock-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:10