Ethiopia (ETBBr) Klarna
I'm looking to buy this product, when will it arrive and how much does postage cost?
Maestro Maintenance
Faroe Islands (DKKkr.) MastercardIf the item is showing in stock, we aim to post the product within 24 hours. Please allow 5 working days to receive the item. Header Image Postage is free on orders over £50. Orders under £50, our postage charge is £3.99.
PayPalWe also have a physical store, if you are local please pop in - ProjektRide Bike Shop Edinburgh
Finland (EUR€) 82 Newington Road, EH91QN, Edinburgh.Shop Pay
Visa
Contact Us #relatedProducts--template--26482384994687__related { --PT: 60px; --PB: 60px; } #relatedProducts--template--26482384994687__related .tabs__nav { --text-size: calc(var(--adjust-heading) * 1.35); } @media screen and (max-width: 767px) { #relatedProducts--template--26482384994687__related .grid--mobile, #relatedProducts--template--26482384994687__related .carousel--mobile { grid-template-columns: repeat(1, minmax(0, 1fr)); } }
French Southern Territories (EUR€) Gambia (GMDD)
Recently viewed
Georgia (GBP£)
Germany (EUR€)

Isle of Man (GBP£)
Italy (EUR€)
Terms of Service Jersey (GBP£)
Refund policy Kenya (KESKSh)
Service Latvia (EUR€) Workshop Prices Search for products on our siteLiberia (GBP£)
Information
Liechtenstein (CHFCHF) Edinburgh= 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
EH9 1QNage = Date.now() - updatedAt.getTime(); if (age
[email protected] 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 || Suggested search terms
]; 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; } } // Setup event listener for cart selling plan updates // This must be called before any scripts are loaded to avoid race conditions function setupCartSellingPlanUpdater(settings) { // Setup listener regardless - updateCartSellingPlans has its own guards // This ensures cleanup happens even when preorders are disabled globally // Listen for stoq:inventory-data-loaded event dispatched by api.js window.addEventListener('stoq:inventory-data-loaded', function(event) { console.debug('STOQ - Inventory data loaded, updating cart selling plans'); if (window._RestockRocket Lithuania (EUR€) hopify.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(cac fig.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._RestockRocketConfig.pageType === 'product') { createRestockRocketScript(window._RestockRocketConfig.scriptUrlProduct); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enab About Us
Contact UsMadagascar (GBP£) Blog Country Track Service Progress Building Your Bike From the Box Mali (XOFFr) Åland Islands (EUR€) Insure Your BikeMalta (EUR€) Privacy Policy Albania (ALLL) Cookie Policy Terms of Service
Mauritius (MUR₨)
Andorra (EUR€) Refund policy
Mayotte (EUR€)
Angola (GBP£)
Romania (RONLei) Chad (XAFCFA) Comoros (KMFFr)
São Tomé & Príncipe (STDDb)
Congo - Brazzaville (XAFCFA) See More Hire
Senegal (XOFFr) Congo - Kinshasa (CDFFr) BikesGloria
See More
Serbia (RSDРСД) Trek
Côte d’Ivoire (XOFFr) New Bikes
South Africa (GBP£) Frog
Egypt (EGPج.م)
South Sudan (GBP£)
Spain (EUR€)
Eritrea (GBP£)
St. Helena (SHP£)

Estonia (EUR€)

Sudan (GBP£)
Eswatini (GBP£)

Svalbard & Jan Mayen (GBP£)

Ethiopia (ETBBr)



Sweden (SEKkr)
Faroe Islands (DKKkr.)


Switzerland (CHFCHF)
Finland (EUR€)


Tanzania (TZSSh)
France (EUR€)


Togo (XOFFr)
French Southern Territories (EUR€)

Tristan da Cunha (GBP£)
Gabon (XOFFr)

Tunisia (GBP£)

Gambia (GMDD)
Georgia (GBP£)
United States (GBP£)

Vatican City (EUR€)

  • Western Sahara (MADد.م.)

    Zambia (GBP£) Zimbabwe (USD$)