Edinburgh Bike Shop
82 Newington Road

Edinburgh

EH9 1QN
Mon-Fri: 9:00 - 18:30
Increase quantity
  • input type="number" name="quantity" id="quantity--template--15326745395426__main" value="1" min="1">
  • nfig.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","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_interval
    ":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
    nfig":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.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 - Invalid settings data structure');
    ale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const age = Date.now() - updatedAt.getTime(); if (age
    SETTINGS_CACHE_DURATION) { console.debug('STOQ - settings changed recently, skipping cache'); return null; } return settings; } catch (error) { console.debug('STOQ - Error checking settings cache:', error); return null; } } function createRestockRocketContainer() { const restockRocketContainer = document.createElement('div'); restockRocketContainer.id = 'restock-rocket'; document.body.appendChild(restockRocketContainer); } function createRestockRocketScript(scriptU 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: { 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 atte
    <
    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(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:

    ),46025371517154 : parseInt("0"),46025371549922 : parseInt("0"),46025371582690 : parseInt("0"),46025371615458 : parseInt("0"),46025382002914 : parseInt("0"),46025371648226 : parseInt("0"),46025371680994 : parseInt("0"),46025371713762 : parseInt("0"),46025371746530 : parseInt("5"),46025371779298 : parseInt("0"),46025382035682 : parseInt("0"),46025371812066 : parseInt("0"),46025371844834 : parseInt("0"),46025371877602 : parseInt("0"),46025371910370 : parseInt("5"),46025371943138 : parseInt("0"),46025382068450 : parseInt("0"),46025371975906 : parseInt("0"),46025372008674 : parseInt("0"),46025372041442 : parseInt("1"),46025372074210 : parseInt("5"),46025372106978 : parseInt("0"),46025382101218 : parseInt("0"),46025372139746 : parseInt("0"),46025372172514 : parseInt("0"),46025372205282 : parseInt("1"),46025372238050 : parseInt("0"),46025372270818 : parseInt("0"),46025382133986 : parseInt("0"),46025372303586 : parseInt("0"),46025372336354 : parseInt("0"),46025372369122 : parseInt("1"),46025372401890 : parseInt("5") ,46025372434658 : parseInt("0"),46025382166754 : parseInt("0"),46025372467426 : parseInt("0"),46025372500194 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {46025371386082 : parseInt(""),46025371418850 : parseInt(""),46025371451618 : parseInt(""),46025381970146 : parseInt(""),46025371484386 : parseInt(""),46025371517154 : parseInt(""),46025371549922 : parseInt(""),46025371582690 : parseInt(""),46025371615458 : parseInt(""),46025382002914 : parseInt(""),46025371648226 : parseInt(""),46025371680994 : parseInt(""),46025371713762 : parseInt(""),46025371746530 : parseInt(""),46025371779298 : parseInt(""),46025382035682 : parseInt(""),46025371812066 : parseInt(""),46025371844834 : parseInt(""),46025371877602 : parseInt(""),46025371910370 : parseInt(""),46025371943138 : parseInt(""),46025382068450 : parseInt(""),46025371975906 : parseInt(""),46025372008674 : parseInt(""),46025372041442 : parseInt(""),46025372074210 : parseInt(""),46025372106978 : parseInt(""),46025382101218 : parseInt("")6025371910370 : parseInt(""),46025371943138 : parseInt(""),46025382068450 : parseInt(""),46025371975906 : parseInt(""),46025372008674 : parseInt(""),46025372041442 : parseInt(""),46025372074210 : parseInt(""),46025372106978 : parseInt(""),46025382101218 : parseInt(""),46025372139746 : parseInt(""),46025372172514 : parseInt(""),46025372205282 : parseInt(""),46025372238050 : parseInt(""),46025372270818 : parseInt(""),46025382133986 : parseInt(""),46025372303586 : parseInt(""),46025372336354 : parseInt(""),46025372369122 : parseInt(""),46025372401890 : parseInt(""),46025372434658 : parseInt(""),46025382166754 : parseInt(""),46025372467426 : parseInt(""),46025372500194 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {46025371386082 : null,46025371418850 : null,46025371451618 : null,46025381970146 : null,46025371484386 : null,46025371517154 : null,46025371549922 : null,46025371582690 : null,46025371615458 : null,46025382002914 : null,46025371648226 : null,46025371680994 : null ,46025371713762 : null,46025371746530 : null,46025371779298 : null,46025382035682 : null,46025371812066 : null,46025371844834 : null,46025371877602 : null,46025371910370 : null,46025371943138 : null,46025382068450 : null,46025371975906 : null,46025372008674 : null,46025372041442 : null,46025372074210 : null,46025372106978 : null,46025382101218 : null,46025372139746 : null,46025372172514 : null,46025372205282 : null,46025372238050 : null,46025372270818 : null,46025382133986 : null,46025372303586 : null,46025372336354 : null,46025372369122 : null,46025372401890 : null,46025372434658 : null,46025382166754 : null,46025372467426 : null,46025372500194 : null,}; window._RestockRocketConfig.variantsShippingText = {46025371386082 : "",46025371418850 : "",46025371451618 : "",46025381970146 : "",46025371484386 : "",46025371517154 : "",46025371549922 : "",46025371582690 : "",46025371615458 : "",46025382002914 : "",46025371648226 : "",46025371680994 : "",46025371713762 : "",46025371746530 : "",46025371779298 : "",4602
    5382035682 : "",46025371812066 : "",46025371844834 : "",46025371877602 : "",46025371910370 : "",46025371943138 : "",46025382068450 : "",46025371975906 : "",46025372008674 : "",46025372041442 : "",46025372074210 : "",46025372106978 : "",46025382101218 : "",46025372139746 : "",46025372172514 : "",46025372205282 : "",46025372238050 : "",46025372270818 : "",46025382133986 : "",46025372303586 : "",46025372336354 : "",46025372369122 : "",46025372401890 : "",46025372434658 : "",46025382166754 : "",46025372467426 : "",46025372500194 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {46025371386082 : null,46025371418850 : null,46025371451618 : null,46025381970146 : null,46025371484386 : null,46025371517154 : null,46025371549922 : null,46025371582690 : null,46025371615458 : null,46025382002914 : null,46025371648226 : null,46025371680994 : null,46025371713762 : null,46025371746530 : null,46025371779298 : null,46025382035682 : null,46025371812066 : null,46025371844834 : null,46025371877602 : null,46 025371910370 : null,46025371943138 : null,46025382068450 : null,46025371975906 : null,46025372008674 : null,46025372041442 : null,46025372074210 : null,46025372106978 : null,46025382101218 : null,46025372139746 : null,46025372172514 : null,46025372205282 : null,46025372238050 : null,46025372270818 : null,46025382133986 : null,46025372303586 : null,46025372336354 : null,46025372369122 : null,46025372401890 : null,46025372434658 : null,46025382166754 : null,46025372467426 : null,46025372500194 : null,}; window._RestockRocketConfig.selected_variant_id = 46025371746530; 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 = 'h
    ttps://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 - 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) { // Transla tions 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;