Apple Pay
Header Image
Diners Club
Discover
Klarna
Maestro

SPO-filter-in-stock-821277b37d3d6ac1b891520564c66300Mastercard

PayPal
Shop Pay
Visa
  • ,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_enabled":true,"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":tr ue,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS" ,"countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];(function() { const cachedData = {"plans":[{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,555fied_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_ radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}],"disabled_plan_ids":[713813721471,713176482175,714631872895],"cached_at":"2026-04-09T09:16:46Z"}; if (cachedData && typeof cachedData
  • === 'object' && cachedData.cached_at) { // Find the maximum updated_at from all items in old array const oldPlans = window._RestockRocketConfig.sellingPlans; const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0 ? oldPlans.reduce(function(max, plan) { // Parse dates for proper comparison (handles mixed ISO formats) if (plan.updated_at) { const planDate = new Date(plan.updated_at); const maxDate = max ? new Date(max) : null; return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max; } return max; }, '') : null; // Use cached if old array is empty/has no timestamps, or cached is newer // Parse dates for comparison to handle format differences (+00:00 vs .000Z) const cachedDate = new Date(cachedData.cached_at); const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : nu ll; const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate)); if (useCached) { if (Array.isArray(cachedData.plans)) { window._RestockRocketConfig.sellingPlans = cachedData.plans; // Only use disabled_plan_ids when using cached plans window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || []; console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')'); } } else { // When using old format (stale cache), don't trust disabled_plan_ids window._RestockRocketConfig.disabledSellingPlanIds = []; console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')'); } } })();window._RestockRocketConfig.enabledNotifyMeVariantIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfig.product = {"id":15240055587199,"title":"Brothers Cycles Pinecone","handle":"pinecone","description":"\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003eThe Pinecone is the brand-new, all-steel, all-terrain bike from Brother Cycles. Its design takes clear inspiration from the retro mountain bikes of the ’80s and ’90s – which we’ve found ourselves increasingly drawn to in recent years — blended with some modern features to create our ultimate do-it-all bike. Sure, the Pinecone makes a great pub bike, but put your faith in it and you’ll discover a surprisingly capable all-terrain machine that’ll keep you smiling in the saddle all day long.\u003c\/p\u003e\n\u003cp\u003eAt 440mm the chainstays are short and nimble enough to get loose on the trails whilst still being nice and planted for longer rides. This pairs perfectly with a 70 degree head angle, just the right amount of slack for varied riding and terrain. We’ve constructed the Pinecone out of skinny chromo steel tubing, to avoid it being overly stiff, which has been heat treated to make it ‘Extra Tough’. This gives the frame a perfect amount of flex – the Pinecone has a super fun and forgiving feel on rough surfaces. Finally, quick release dropouts, a 1 1\/8 headtube and relatively level top tube add to the Pinecone’s retro feel.\u003c\/p\u003e\n\u003cp\u003eTo make the Pinecone as versatile and u{"id":55877830541695,"title":"Small","option1":"Small","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Brothers Cycles Pinecone - Small","public_title":"Small","options":["Small"],"price":84900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55877830574463,"title":"Medium","option1":"Medium","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Brothers Cycles Pinecone - Medium","public_title":"Medium","options":["Medium"],"price":84900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55877830607231,"title":"Large","option1":"Large","option2":null,"option3":null, "sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Brothers Cycles Pinecone - Large","public_title":"Large","options":["Large"],"price":84900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55877830639999,"title":"Extra Large","option1":"Extra Large","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Brothers Cycles Pinecone - Extra Large","public_title":"Extra Large","options":["Extra Large"],"price":84900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-11-26at17.45.02.png?v=1764179121","\/\/projektride.co.uk\/cdn\/shop\/files\/S
  • creenshot2025-08-16at10.12.19.png?v=1764179121","\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.29.png?v=1764179121","\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.37.png?v=1764179121","\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.46.png?v=1764179121","\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.55.png?v=1764179121","\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.13.10.png?v=1764179121"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-11-26at17.45.02.png?v=1764179121","options":["Size"],"media":[{"alt":null,"id":68851346309503,"position":1,"preview_image":{"aspect_ratio":1.598,"height":1810,"width":2892,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-11-26at17.45.02.png?v=1764179121"},"aspect_ratio":1.598,"height":1810,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-11-26at17.45.02.png?v=1764179121","width":2892},{"alt":nu ll,"id":67340350521727,"position":2,"preview_image":{"aspect_ratio":1.34,"height":1578,"width":2114,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.19.png?v=1764179121"},"aspect_ratio":1.34,"height":1578,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.19.png?v=1764179121","width":2114},{"alt":null,"id":67340351144319,"position":3,"preview_image":{"aspect_ratio":1.34,"height":1578,"width":2114,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.29.png?v=1764179121"},"aspect_ratio":1.34,"height":1578,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.29.png?v=1764179121","width":2114},{"alt":null,"id":67340352127359,"position":4,"preview_image":{"aspect_ratio":1.34,"height":1578,"width":2114,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.37.png?v=1764179121"},"aspect_ratio":1.34,"height":1578,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.37.png?v=1764179121","width":2114},{"alt":null,"id":67340352979327,"position":5,"preview_image":{"aspect_ratio":1.34,"height":1578,"width":2114,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.46.png?v=1764179121"},"aspect_ratio":1.34,"height":1578,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.46.png?v=1764179121","width":2114},{"alt":null,"id":67340353503615,"position":6,"preview_image":{"aspect_ratio":1.34,"height":1578,"width":2114,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.55.png?v=1764179121"},"aspect_ratio":1.34,"height":1578,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.12.55.png?v=1764179121","width":2114},{"alt":null,"id":67340355109247,"position":7,"preview_image":{"aspect_ratio":1.34,"height":1578,"width":2114,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.13.10.png? v=1764179121"},"aspect_ratio":1.34,"height":1578,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2025-08-16at10.13.10.png?v=1764179121","width":2114}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003eThe Pinecone is the brand-new, all-steel, all-terrain bike from Brother Cycles. Its design takes clear inspiration from the retro mountain bikes of the ’80s and ’90s – which we’ve found ourselves increasingly drawn to in recent years — blended with some modern features to create our ultimate do-it-all bike. Sure, the Pinecone makes a great pub bike, but put your faith in it and you’ll discover a surprisingly capable all-terrain machine that’ll keep you smiling in the saddle all day long.\u003c\/p\u003e\n\u003cp\u003eAt 440mm the chainstays are short and nimble enough to get loose on the trails whilst still being nice and planted for longer rides. This pairs perfectly with a 70 degree head angle, just the rig\/\"\u003e\u0026gt;\u0026gt; HERE \u0026lt;\u0026lt;\u003c\/a\u003e\u003c\/p\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {55877830541695 : "continue",55877830574463 : "continue",55877830607231 : "continue",55877830639999 : "continue",}; window._RestockRocketConfig.variantsInventoryQuantity = {55877830541695 : parseInt("4"),55877830574463 : parseInt("4"),55877830607231 : parseInt("4"),55877830639999 : parseInt("4"),}; window._RestockRocketConfig.variantsPreorderCount = {55877830541695 : parseInt(""),55877830574463 : parseInt(""),55877830607231 : parseInt(""),55877830639999 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {55877830541695 : null,55877830574463 : null,55877830607231 : null,55877830639999 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {55877830541695 : parseInt(""),55877830574463 : parseInt(""),55877830607231 : parseInt(""),55877830639999 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCount ForMarket = {55877830541695 : null,55877830574463 : null,55877830607231 : null,55877830639999 : null,}; window._RestockRocketConfig.variantsShippingText = {55877830541695 : "",55877830574463 : "",55877830607231 : "",55877830639999 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {55877830541695 : null,55877830574463 : null,55877830607231 : null,55877830639999 : null,}; window._RestockRocketConfig.selected_variant_id = 55877830541695; 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/019d9ac9-5dee-74e9-8643-e17aaa8798db/restockrocket-1-482/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019d9ac9-5dee-74e9-8643-e17aaa8798db/restockrocket-1-482/assets/restockrocket-col
lection.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(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { const now = Math.floor(Date.now() / 1000); // Current time in seconds const liquidCacheAge = now - liquidRenderedAt; // Age in seconds // Handle client clock ahead of server if (liquidCacheAge
< 0) { console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else if (liquidCacheAge
< = LIQUID_CACHE_MAX_AGE) { console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`); window._RestockRocketConfig.isLiquidCacheFresh = false; } } function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Check if translations are enabled but missing from cache // This handles the backfill period where DB has translations but metafield doesn't if (settings.multi_language_enabled) { if (!settings.translations) { // Translations enabled but no
translation data in metafield // Metafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const age = Date.now() - updatedAt.getTime(); if (age
  •  
     
     
    £
    £