Kona
Header ImageSurly
UTO (ex Eovolt)
Argon 18
Shop All Second-Hand
Custom Builds See More
Workshop
See More
Workshop Prices
Book a ServiceTrack Your Service See More Cycle To Work Schemes Book a Service Parts & Components See More
Brands
Tubeless
Saddles Pedals
Gears & Drivetrain
Components
E-bike Batteries and chargers
Complete Wheels
<
See Moreons/01a1bb99-5192-7a53-8683-13acad609f70/restockrocket-1-637/assets/restockrocket-collection-full.js' window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/01a1bb99-5192-7a53-8683-13acad609f70/restockrocket-1-637/assets/restockrocket-product-bis.js' window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/extensions/01a1bb99-5192-7a53-8683-13acad609f70/restockrocket-1-637/assets/restockrocket-collection-bis.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://ext.stoqapp.com' try { const _stoqVersionMatch = window._RestockRocketConfig.scriptHost.match(/(\d+)\/?(?:assets\/?)?$/); window._RestockRocketConfig.appVersion = (_stoqVersionMatch && _stoqVersionMatch[1]) || ''; } catch (Tubeless
& !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } } 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
Complete Wheels 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.crossOrigin = 'anonymous'; restockRocketScriptElement.onerror = function () { restockRocketScriptElement.onerror = null; const plainScriptElement = document.createElement('script'); plainScriptElement.setAttribute('defer', 'defer'); plainScriptElement.src = scriptUrl; documentProjektRide Merchandise
shop_domain: _stoqInitConfig.shop || '', market_id: _stoqInitConfig.marketId || '', country_code: _stoqInitConfig.countryIsoCode || '', detected_variant_ids: _stoqDetectedVariantIds, selected_variant_id: _stoqSelectedVariantId || '', page_load_seq: _stoqPageSeq, liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0, app_version: _stoqInitConfig.appVersion || '', liquid_cache_age: _stoqInitConfig.liquidCacheAge, inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], }); } catch (e) { console.debug('STOQ - stoq_initialized publish failed:', e); } try { var _sqTrack = window._RestockRocketConfig; if (_sqTrack.preordersConfigured) { document.addEventListener('click', function (e) { try { var t = e.target; if (!t || !t.closest) return; var host = t
{ var ids = [pl.shopify_selling_plan_id, pl.default_shopify_selling_plan_id]; (Array.isArray(pl.payment_options) ? pl.payment_options : []).forEach(function (o) { ids.push(o && o.shopify_selling_plan_id); }); return ids.filter(function (id) { return id != null; }).map(Number); }; var _sqForVariant = function (pl) { if (!pl || !pl.enabled) return false; if (Array.isArray(_sqAlloc)) { var ids = _sqPlanIds(pl); return _sqAlloc.some(function (id) { return ids.indexOf(Number(id)) !== -1; }); } return Array.isArray(pl.variant_ids) && pl.variant_ids.indexOf(_sqVidNum) !== -1; }; _sqPlans.forEach(function (pl) { if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled && Array.isArray(pl.shopify_market_ids) && pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; } }); if (!_sqPlan) {
_sqTrack.cachedPreorderVariantIds.preorder_variant_ids) || (_sqTrack.inlinePreorderIdsDropped === true && (_sqTrack.variantsInventoryPolicy || {})[vid] === 'continue' && (_sqTrack.variantsInventoryQuantity || {})[vid] Helmets

= 0); })(), in_enabled_plan: !!_sqPlan, is_instock_variant: (function () { var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; }; return has(_sqTrack.inStockVariantIds) || has(_sqTrack.cachedInStockVariantIds && _sqTrack.cachedInStockVariantIds.in_stock_variant_ids); })(), enrolled_plan_id: (_sqPlan && (_sqPlan.shopify_selling_plan_id || _sqPlan.shopify_selling_plan_group_id)) || '', enrolled_plan_provider: (_sqPlan && _sqPlan.inventory_provider) || '', block_enabled: !(_sqTrack.cachedSettings && _sqTrack.cachedSettings.block_accelerated_checkout === false) && !(_sqTrack.readFlags && _sqTrack.readFlags.accelerated_block_off === true), gate_armed: !!_sqTrack.acceleratedGateArmed, gate_active_at_click: !!(document.documentElement && document.documentElement.c
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[key]; 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; } } function setupCartSellingPlanUpdater(settings) { window.addEventListener('stoq:inventory-data-loaded', function(event) { console.debug(
ication/json', 'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken, }, body: JSON.stringify({ query: query, variables: variables }), } ) .then(function(response) { if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } return response.json(); }) .then(function(body) { if (body && body.errors && body.errors.length) { throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', ')); } return body && body.data; }); } function fetchStorefrontShopMetafield(key) { const cfg = window._RestockRocketConfig; const query = 'query StoqShopMetafield($namespace: String!, $key: String!) { shop { metafield(namespace: $namespace, key: $key) { value } } }'; return storefrontGraphql(query, { namespace: cfg.metafieldNamespace, key: key }) .then(function(data) { const value = data && data.shop && data.shop.metafield && data.shop.metaGloves

Tubeless settings; }); } 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 (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; } const storefrontRead = window._RestockRocketConfig.readFlags?.enable_storefront_settings_read === true ? Promise.race([ fetchStorefrontSettings(), new Promi

} }) .catch(function(e) { console.error(e) }) } function fetchEmbedConfig(endpoint, apply) { return fetch( `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`, { headers: { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' } } ) .then(function(response) { if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`); return response.json(); }) .then(function(data) { try { apply(data); } catch (applyError) { console.error('STOQ - apply failed for ' + endpoint + ':', applyError); throw applyError; } }) .catch(function(error) { console.debug(`STOQ - using cached ${endpoint}:`, error.message); }); } function refreshShopConfig(source) { const cfg = window._RestockRocketConfig; const viaEmbed = function() { return fetchEmbedConfig(source.endpoint,
a) { cfg.integrations = data; } }); } function refreshSellingPlans(embedOnly) { const cfg = window._RestockRocketConfig; return refreshShopConfig({ embedOnly: embedOnly === true, endpoint: 'selling_plans', metafieldKey: 'cachedSellingPlans', flag: 'enable_storefront_selling_plans_read', isValid: function(value) { return !!value && Array.isArray(value.plans); }, apply: function(data) { cfg.sellingPlans = data.plans; cfg.disabledSellingPlanIds = data.disabled_plan_ids || []; if (data && data.read_flags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) { cfg.readFlags = data.read_flags; } } }); } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); const forceEmbedSellingPlans = settings.foClothing ncludes(window._RestockRocketConfig.pageType); }) const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans) && window._RestockRocketConfig.sellingPlans.some(function(plan) { return plan && plan.enabled; }); const hasDisabledPlanIds = Array.isArray(window._RestockRocketConfig.disabledSellingPlanIds) && window._RestockRocketConfig.disabledSellingPlanIds.length > 0; const usePreorderBuild = settings.preorder_enabled || hasEnabledOffer || hasDisabledPlanIds; const pageType = window._RestockRocketConfig.pageType; const preorderUiOnPage = (settings.preorder_enabled && settings[`preorder_${pageType}_enabled`]) || window._RestockRocketConfig.integrations.some(function(integration) { return (integration.type === 'quick_buy' || integration.type === 'featured_product') && integration.enabled && integration.page_types.includes(pageType); }) || /\b(renderPreorderButton|updateAddToCartButton|updateAddToC tion) { createRestockRocketScript(preorderCollectionScriptUrl); } else if(usePreorderBuild) { createRestockRocketScript(preorderCollectionScriptUrl); } else { console.debug(`STOQ - no scripts enabled for ${pageType}`); } const wishlistIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'wishlist' && integration.enabled; }); if (wishlistIntegration) { if (localStorage.getItem('stoq_wl_host') !== window._RestockRocketConfig.scriptHost) localStorage.setItem('stoq_wl_host', window._RestockRocketConfig.scriptHost); } catch (e) {} try { const guestWishlist = window._RestockRocketConfig.customer && !localStorage.getItem('stoq_wl_c') && JSON.parse(localStorage.getItem('stoq_wl')); if (Array.isArray(guestWishlist) && guestWishlist.length) { createRestockRocketScript(window._RestockRocketConfig.scriptHost + 'restockrocket-wishlist-prompt.js'); } } catch (e) {} } const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings, preorderEnabled: settings.preorder_enabled } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } } Socks Essentials Cleaners, Degreasers and Lubrication MaintenanceHelmets Sell Your BikeClothingContact Us Finance Open search barEssentials See More Cleaners, Degreasers and Lubrication Accessories Maintenance Sell Your Bike Suggested search termsContact Us FinanceAbout Us Contact Us Blog Track Service Progress Building Your Bike From the BoxCreate accountInsure Your Bike Privacy PolicySearchCookie Policy Terms of ServiceCountryRefund policyGBP£ Åland Islands (EUR€) My AccountAlbania (ALLL) Algeria (DZDد.ج) Andorra (EUR€) Open search bar Angola (GBP£) Armenia (AMDդր.) Ascension Island (SHP£) Austria (EUR€) Belarus (GBP£) Belgium (EUR€) Benin (XOFFr) Bosnia & Herzegovina (BAMКМ) Yeti Cycle MTe T-Series T3 29" Bike – ProjektRideBotswana (BWPP) British Indian Ocean Territory (USD$) Bulgaria (EUR€) Burkina Faso (XOFFr) Burundi (BIFFr) Cameroon (XAFCFA) Cape Verde (CVE$) Central African Republic (XAFCFA) Chad (XAFCFA) { "@context": "http://schema.org", "@type": "Organization", "name": "ProjektRide","logo": "https:\/\/projektride.co.uk\/cdn\/shop\/files\/logo-svg-white_1592x.svg?v=1676480383","sameAs": [ null, null, null, null, null, null, null ], "url": "https:\/\/projektride.co.uk" } Comoros (KMFFr) CloseCongo - Brazzaville (XAFCFA) Congo - Kinshasa (CDFFr) Côte d’Ivoire (XOFFr) HireCroatia (EUR€) Cyprus (EUR€) Czechia (CZKKč)
Tools & Maintenancehtml.stoq-buy-now-pending .shopify-payment-button{pointer-events:none!important}
Clothing and ProtectionAccessories See More
ProjektRide Merchandise
Gloves
Socks
Search for products on our site
Log in
Open cart
Search for products on our site
Home
Bikes See More

Denmark (DKKkr.)
New Bikes

See More Djibouti (DJFFdj) .cart-collection__title { --text: #ffffff; }

Shop All New Bikes
Egypt (EGPج.م)
Road / Gravel / Touring Bikes Equatorial Guinea (XAFCFA) Items FreeMountain BikesEritrea (GBP£) Estonia (EUR€) Kids Bikes Free Eswatini (GBP£) Ethiopia (ETBBr)  Shop by Brand   Faroe Islands (DKKkr.) Finland (EUR€) Trek France (EUR€) VelduroFrench Southern Territories (EUR€) Yeti Gabon (XOFFr) Ridgeback Gambia (GMDD) .logo__image-link { width: 100px; height: 28px; } .has-scrolled .logo__image-link { width: 100px; height: 28px; }GenesisGeorgia (GBP£) Germany (EUR€) Enigma Ghana (GBP£) Frog Search for products on our siteKonaGibraltar (GBP£) Greece (EUR€) UTO (ex Eovolt) Greenland (DKKkr.) Argon 18Guadeloupe (EUR€) Guernsey (GBP£) Guinea (GNFFr) Contact Us Guinea-Bissau (XOFFr) Track Service Progress Hungary (HUFFt) Iceland (ISKkr) Insure Your Bike Ireland (EUR€) Custom Build Inspiration Cookie Policy Isle of Man (GBP£) ServicesItaly (EUR€) Refund policySee More Jersey (GBP£) Workshop Kenya (KESKSh) Kosovo (EUR€) Book a ServiceLatvia (EUR€) Lesotho (GBP£) Liberia (GBP£) See More Bikes Libya (GBP£) New Bikes Shop All New BikesCycle To Work SchemesLiechtenstein (CHFCHF) Lithuania (EUR€) Hybrid / City Bikes Luxembourg (EUR€) Electric BikesParts & ComponentsMadagascar (GBP£) See More Malawi (MWKMK) Frames Shop by Brand Mali (XOFFr) Gloria Malta (EUR€) Amflow Mauritania (GBP£) VelduroCockpitMauritius (MUR₨) YetiSee More Mayotte (EUR€) Handlebars Brother Moldova (MDLL) Grips & Bar-TapeMonaco (EUR€) SingularHeadsets Enigma Montenegro (EUR€) Frog Morocco (MADد.م.) Brakes See MoreMozambique (GBP£) SurlyComplete BrakesNamibia (GBP£) Early Rider Netherlands (EUR€) Argon 18Brake Pads Niger (XOFFr) Nigeria (NGN₦) North Macedonia (MKDден) Custom Build Inspiration Norway (GBP£) Rear Suspension Poland (PLNzł) Services Portugal (EUR€) Réunion (EUR€) Book a Service Romania (RONLei) Tubes Rwanda (RWFFRw) Tubeless Cycle To Work SchemesSaddlesSan Marino (EUR€) São Tomé & Príncipe (STDDb) Parts & ComponentsTent BoxStemsHeadsetsBrakesComplete BrakesBrake PadsRear SuspensionFinishing KitTyres
Hybrid / City Bikes Electric Bikes Checkout Frames
See More Gloria Shipping & taxes calculated at checkout Amflow :root { --header-height: 60px; --header-sticky-height: 60px; --header-background-height: 60px; } :root { --full-height: calc(100vh - var(--header-sticky-height)); } .main-content > .shopify-section.supports-transparent-header:first-child [data-prevent-transparent-header] { --full-height: var(--content-full); } .site-header--has-border { --border-color: currentcolor; --border-opacity: 0.0; }
Open navigation menuBrother Singular Open search bar
Surly Early Rider Suggested search terms
About Us Second-Hand Bikes See More BlogShop All Second-Hand Custom Builds Building Your Bike From the Box See More
Custom Builds for sale Privacy Policy Terms of Service
See More Open cart Workshop Prices Home Track Your Service Hire Other
Custom Builds Road / Gravel / Touring Bikes Insure Your Bike Book a Service Mountain Bikes
Kids Bikes Brands See More TrekTent Box
Ridgeback Stems Genesis
Kona UTO (ex Eovolt) Brake Rotors
Second-Hand BikesBrake Spares Shop All Second-Hand Custom BuildsForks Custom Builds for sale See More Front Suspension
WorkshopFinishing Kit Workshop Prices See More Tyres Track Your Service Other Custom Builds
Insure Your Bike Seat Posts & Clamps Book a Service Brands
Cockpit Handlebars Grips & Bar-Tape
Brake Rotors Brake Spares Forks Front Suspension
Tubes
KONA Geometry
Tubeless

Saddles

Seat Posts & Clamps

PedalsGears & DrivetrainE-bike Batteries and chargers WheelsComplete WheelsTubelessClothing and ProtectionProjektRide MerchandiseGlovesSocksEssentialsCleaners, Degreasers and LubricationMaintenanceSell Your BikeContact UsFinanceOpen search barSuggested search termsAbout UsBlogBuilding Your Bike From the BoxPrivacy PolicyTerms of ServiceMy AccountOpen search barSuggested search termsAbout UsBlog
Components Tools & Maintenance Helmets
Clothing Accessories
Search for products on our site
Contact Us Track Service Progress Insure Your Bike
Cookie Policy Refund policy
Open cart Search for products on our site
Contact Us


Track Service Progress

  • Open cart
    { "@context": "http://schema.org", "@type": "Organization", "name": "ProjektRide","logo": "https:\/\/projektride.co.uk\/cdn\/shop\/files\/logo-svg-white_1592x.svg?v=1676480383","sameAs": [ null, null, null, null, null, null, null ], "url": "https:\/\/projektride.co.uk" }
  • Close
Home