Header Image

= 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; } if (settings.multi_language_enabled) { if (!settings.translations) { console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } if (window._RestockRocketConfig.normalizedLocale &District+ 3 N7 B LSAlloy, 31.8 mm clamp, 25 mm rise, 630 mm width & !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

< Mayotte (EUR€) 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; document
.body.appendChild(plainScriptElement); }; restockRocketScriptElement.src = scriptUrl; document.body.appendChild(restockRocketScriptElement); } createRestockRocketContainer() console.debug('STOQ - extension activated') try { const _stoqInitConfig = window._RestockRocketConfig; const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.product.variants)) ? _stoqInitConfig.product.variants.map(function(v) { return v.id }) : []; const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id; var _stoqPageSeq = 0; try { _stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1; window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq)); } catch (e) { } Shopify?.analytics?.publish?.('stoq_initialized', { cart_token: _stoqInitConfig.cartToken || '', page_url: window.location.origin + window.location.pathname, page_type: _stoqInitConfig.pageType || '', 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.closest('.shopify-payment-button, shopify-payment-terms'); if (!host) return; var channel = host.matches && host.matches('shopify-payment-terms') ? 'shop_pay_installments' : 'buy_now'; var form = host.closest('form'); var vidEl = form && form.querySelector('[name="id"]'); var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || ''; var _sqVidNum = Number(variantId); var _sqPlan = null; var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; var _sqMktId = Number(_sqTrack.marketId); var _sqOffersOn = !!(_sqTrack.readFlags && _sqTrack.readFlags.enable_storefront_plan_offers === true); var _sqAlloc = _sqOffersOn ? ((_sqTrack.offerAllocations && _sqTrack.offerAllocations[_sqVidNum]) || (_sqTrack.variantSellingPlanIds && _sqTrack.variantSellingPlanIds[_sqVidNum])) : null; var _sqPlanIds = function (pl) { 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) {
_sqPlans.forEach(function (pl) { if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; } }); } Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', { variant_id: variantId, product_id: (_sqTrack.product && _sqTrack.product.id) || '', channel: channel, market_id: _sqTrack.marketId || '', country_code: _sqTrack.countryIsoCode || '', page_type: _sqTrack.pageType || '', cart_token: _sqTrack.cartToken || '', page_url: (window.location && window.location.origin + window.location.pathname) || '', properties: { is_preorder_variant: (function () { var vid = Number(variantId); var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; }; return has(_sqTrack.preorderVariantIds) || has(_sqTrack.cachedPreorderVariantIds && Stem _sqTrack.cachedPreorderVariantIds.preorder_variant_ids) || (_sqTrack.inlinePreorderIdsDropped === true && (_sqTrack.variantsInventoryPolicy || {})[vid] === 'continue' && (_sqTrack.variantsInventoryQuantity || {})[vid] < Moldova (MDLL) = 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
lassList.contains('stoq-buy-now-pending')), blocked: (function () { try { var rr = window._RestockRocket; return !!(rr && typeof rr.willBlockAcceleratedClick === 'function' && rr.willBlockAcceleratedClick(e)); } catch (err) { return false; } })(), }, }); } catch (err) { } }, true); } } catch (e) { } function applyTranslations(settings) { try { if (!settings || !settings.multi_language_enabled) { return settings; } if (!settings.translations) { console.debug('STOQ - No translations found, skipping translation'); return settings; } const normalizedLocale = window._RestockRocketConfig.normalizedLocale; const translations = settings.translations; if (!normalizedLocale) { console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); Bontrager alloy, 31.8 mm clamp, Blendr compatible, 105 mm length 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('STOQ - Inventory data loaded, updating cart selling plans'); if (window._RestockRocket && window._RestockRocket.upd ateCartSellingPlans) { 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 => { console.error('STOQ - error updating cart selling plans:', error); }); } }); } function storefrontGraphql(query, variables) { const cfg = window._RestockRocketConfig; let token = cfg.storefrontAccessToken || null; if (!token && typeof cfg.sk === 'string' && cfg.sk !== '') { try { token = atob(cfg.sk).split('').reverse().join('') || null; } catch (e) { token = null; } } if (!token || cfg.disableStorefrontApi === true) { return Promise.reject(new Error('Storefront API unavailable')); } return fetch( `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Shopify-Storefront-Access-Token': token, }, 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 valueColour = data && data.shop && data.shop.metafield && data.shop.metafield.value; if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); } return JSON.parse(value); }); } function fetchStorefrontSettings() { const query = 'query StoqSettings($namespace: String!) { shop { settings: metafield(namespace: $namespace, key: "settings") { value } translations: metafield(namespace: $namespace, key: "settings_translations") { value } } }'; return storefrontGraphql(query, { namespace: window._RestockRocketConfig.metafieldNamespace }) .then(function(data) { const settings = JSON.parse(data.shop.settings.value); if (!settings.updated_at) { throw new Error('settings metafield is not a settings payload'); } if (settings.single_locale_translations_inline) { settings.translations = data.shop.translations && JSON.parse(data.shop.translations.value); } if (settings.multi_language_enabled && !settings.translations) { throw new Error('settings metafield carries no translations'); } return 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.ra Monaco (EUR€) ce([ fetchStorefrontSettings(), new Promise(function(_, reject) { setTimeout(function() { reject(new Error('timed out')); }, 1500); }) ]).catch(function(error) { console.debug('STOQ - Storefront settings read failed, using setting.json:', error.message); }) : Promise.resolve(); storefrontRead .then(function(settings) { return settings || 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 (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else {
console.error('STOQ - failed to load settings:', error); } }) .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 viaE Grips mbed = function() { return fetchEmbedConfig(source.endpoint, source.apply); }; const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true; if (!flagOn) { return viaEmbed(); } return fetchStorefrontShopMetafield(source.metafieldKey) .then(function(value) { if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); } source.apply(value); console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API'); }) .catch(function(error) { console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message); return viaEmbed(); }); } function refreshIntegrations() { const cfg = window._RestockRocketConfig; return refreshShopConfig({ endpoint: 'integrations', metafieldKey: 'integrations', flag: 'enable_storefront_integrations_read', isValid: function(value) { return Array.isArray(value); }, apply: function(data) { cfg.integrations = data; } }); } function refreshSellingPlans() { const cfg = window._RestockRocketConfig; return refreshShopConfig({ 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 staleRefresh = !window._RestockRocketConfig.isLiqu idCacheFresh && !settings.disable_refresh_on_stale_liquid; if (staleRefresh) { console.debug('STOQ - refreshing selling_plans + integrations (Liquid cache stale)'); Promise.race([ Promise.all([refreshSellingPlans(), refreshIntegrations()]), new Promise(function(resolve) { setTimeout(resolve, 1000); }) ]).then(function() { loadScripts(settings); }); return; } loadScripts(settings); } function loadScripts(settings) { setupCartSellingPlanUpdater(settings); 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); }) 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|updateAddToCartForms|setupAddToCartForm|teardownAddToCartForm|addDiscountedPrice|removeDiscountedPrice)\b/.test(settings.js_config || ''); const preorderCollectionScriptUrl = preorderUiOnPage ? window._RestockRocketConfig.scriptUrlCollectionFull : window._RestockRoc Trek Ergonomic Comp, lock-on ketConfig.scriptUrlCollection; const collectionScriptUrl = usePreorderBuild ? preorderCollectionScriptUrl : window._RestockRocketConfig.scriptUrlCollectionBis; const productScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlProduct : window._RestockRocketConfig.scriptUrlProductBis; const collectionPageTypes = ['collection', 'index', 'search', 'page']; if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) { createRestockRocketScript(collectionScriptUrl); } else if(pageType === 'product') { createRestockRocketScript(productScriptUrl); } else if(hijackIntegration) { createRestockRocketScript(preorderCollectionScriptUrl); } else if(usePreorderBuild) { createRestockRocketScript(preorderCollectionScriptUrl); } else { console.debug(`STOQ - no scripts enabled for ${pageType}`); } const w Morocco (MADد.م.) SKS plastic, rear // SKS plastic, front Namibia (GBP£) Kickstand Niger (XOFFr) Size Chart Rider Height
Inseam - 82.0 - 88.0
[] Norway (GBP£) Size
{"@context":"http:\/\/schema.org\/","@id":"\/products\/verve-equipped-56826#product","@type":"ProductGroup","brand":{"@type":"Brand","name":"Trek"},"category":"Bike","description":"The Verve Equipped is a hybrid bike designed for comfort and fun on commutes, cruises and fitness rides. It's full of thoughtful features that make for a confident and comfortable ride, like a road-smoothing suspension fork and seat post. Plus, it comes equipped with utility features like mudguards, lights and a MIK rear rack.\nTechnologyComfort you can feel - An upright riding position keeps you relaxed and takes pressure off your back, shoulders, and hands. A shorter reach and taller front end add comfort and control for a more confident ride.\nSpecification\n\nFrame\nAlpha Gold Aluminium, internal cable routing, flat-mount disc, rack and mudguard mounts, 135x5 mm QR\n\n\nFrame Material\nALUMINIUM\n\n\nRim Size\n28\n\n\nFork\nSR Suntour\n\n\nFork\nSR Suntour NEX, coil spring, preload, 50 mm travel, 100x5 mm QR SR Suntour NEX, coil spring, preload, 50mm travel, 100x5mm QR\n\n\nTires\nBontrager H2 Comp, reflective strip, wire bead, 30 tpi, 700x40 mm\n\n\nHub Front\nShimano 3.0 watt dynamo hub\n\n\nHub Rear\nShimano QC300-HM, alloy, CentreLock, freewheel, 135x5 mm\n\n\nRims\nBontrager Connection, double-wall, 32-hole, 20 mm width, Presta valve\n\n\nShifter\nShimano\n\n\nDerailleur Rear\nShimano CUES U4000\n\n\nCrank\nProWheel Pro alloy, 40T narrow-wide steel ring, 170 mm length\n\n\nBottom Bracket\nSealed cartridge, 68 mm\n\n\nCassette\nShimano LINKGLIDE LG300, 11-46, 9-speed\n\n\nChain\nShimano LG500\n\n\nBrake\nShimano\n\n\nBrakeset\nShimano MT200 hydraulic disc \/\/ Shimano MT200 hydraulic disc Shimano MT200 hydraulic disc \/\/ Shimano MT200 hydraulic disc\n\n\nBrake Rotor\nShimano RT10, CenterLock, 160 mm\n\n\nPedals\nBontrager City pedals\n\n\nSaddle\nBontrager Boulevard\n\n\nSeatpost\nAlloy, adjustable suspension, 27.2 mm, 350 mm length\n\n\nHandlebar\nAlloy, 31.8 mm clamp, 25 mm rise, 630 mm width\n\n\nStem\nBontrager alloy, 31.8 mm clamp, Blendr compatible, 105 mm length\n\n\nGrips\nTrek Ergonomic Comp, lock-on\n\n\nFenders\nSKS plastic, rear \/\/ SKS plastic, front\n\n\nCarrier Rear\nAlloy rear rack, 25 kg max weight\n\n\nKickstand\nAlloy, rear-mount kickstand\n\n\nSize Chart Rider Height\nRider Height - 175.0 - 186.0\n\n\nSize Chart Rider Inseam\nInseam - 82.0 - 88.0\n\n","hasVariant":[{"@id":"\/products\/verve-equipped-56826?variant=58205564666239#variant","@type":"Product","gtin":"197216282419","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-B-Primary_e1632a62-89b4-43a6-b954-59f1e35a26b4.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Dark Carmine \/ L","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564666239#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564666239"},"sku":"5336441"},{"@id":"\/products\/verve-equipped-56826?variant=58205564699007#variant","@type":"Product","gtin":"197216282402","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-B-Primary_e1632a62-89b4-43a6-b954-59f1e35a26b4.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Dark Carmine \/ M","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564699007#offer","@type":"Offer","availability":"http:\/\/schema.org\/OutOfStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564699007"},"sku":"5336440"},{"@id":"\/products\/verve-equipped-56826?variant=58205564731775#variant","@type":"Product","gtin":"197216282426","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-B-Primary_e1632a62-89b4-43a6-b954-59f1e35a26b4.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Dark Carmine \/ XL","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564731775#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564731775"},"sku":"5336442"},{"@id":"\/products\/verve-equipped-56826?variant=58205564764543#variant","@type":"Product","gtin":"197216282433","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-B-Primary_e1632a62-89b4-43a6-b954-59f1e35a26b4.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Dark Carmine \/ XXL","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564764543#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564764543"},"sku":"5336443"},{"@id":"\/products\/verve-equipped-56826?variant=58205564797311#variant","@type":"Product","gtin":"197216282372","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-A-Primary_a7634848-2f74-49a6-ae9f-2b1c20d30d79.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Lunar Silver \/ L","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564797311#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564797311"},"sku":"5336437"},{"@id":"\/products\/verve-equipped-56826?variant=58205564830079#variant","@type":"Product","gtin":"197216282365","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-A-Primary_a7634848-2f74-49a6-ae9f-2b1c20d30d79.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Lunar Silver \/ M","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564830079#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564830079"},"sku":"5336436"},{"@id":"\/products\/verve-equipped-56826?variant=58205564862847#variant","@type":"Product","gtin":"197216282389","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-A-Primary_a7634848-2f74-49a6-ae9f-2b1c20d30d79.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Lunar Silver \/ XL","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564862847#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564862847"},"sku":"5336438"},{"@id":"\/products\/verve-equipped-56826?variant=58205564895615#variant","@type":"Product","gtin":"197216282396","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/VerveStepoverEQ-26-56826-A-Primary_a7634848-2f74-49a6-ae9f-2b1c20d30d79.jpg?v=1787065738\u0026width=1920","name":"Verve Equipped - Lunar Silver \/ XXL","offers":{"@id":"\/products\/verve-equipped-56826?variant=58205564895615#offer","@type":"Offer","availability":"http:\/\/schema.org\/OutOfStock","price":"800.00","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826?variant=58205564895615"},"sku":"5336439"}],"name":"Verve Equipped","productGroupID":"15846747046271","url":"https:\/\/projektride.co.uk\/products\/verve-equipped-56826"} Poland (PLNzł) #Accordions--template--26482384994687__section_accordions_with_images_kprcYa { --PT: 60px; --PB: 60px; --border-opacity: 0; --border-width: 1px; --MB: 10px; --padding-left: 0; --bg-padded-line: var(--bg); } #Accordions--template--26482384994687__section_accordions_with_images_kprcYa .section__heading { --heading-size: calc(var(--adjust-heading) * 1.2); } #Accordions--template--26482384994687__section_accordions_with_images_kprcYa .accordion__item { --bg-item: #fafafa; } Frequently Asked Questions Réunion (EUR€) I'm looking to find out more information about a product, where can I find this?Romania (RONLei) ) or email ( [email protected]
Tunisia (GBP£)
Insure Your Bike
Privacy PolicyTürkiye (GBP£)
Cookie Policy
Uganda (UGXUSh)
Terms of Service United Kingdom (GBP£)
Western Sahara (MADد.م.)
Cycle to Work
Zambia (GBP£)
Delivery & Returns
InformationZimbabwe (USD$)
Mon - Fri: 08:30 - 17:30

District+ 3 N7 Lowstep is a low-maintenance, easy-to-use city e-bike that’s as comfortable as it is capable. A Gates belt drive delivers a smooth, quiet ride with less upkeep, while a Shimano Nexus 7-speed internal hub gives you plenty of range for hills and flats. A suspension fork helps smooth rough paths, and the Bosch Active Line Plus Smart System motor provides natural-feeling support, paired with a 540Wh removable integrated battery that makes charging easy between rides.Sat: 9:00 - 16:00

Sun: Closed

Technology0131 374 5324

A better way to produce aluminium - Starting in 2024, we began removing high-emission aluminium from our manufacturing and replacing it with low-emission aluminium made with renewable energy. By October 2025, nearly every alloy bike we make – this one included – had made the switch, driving a major drop in our footprint.Newington Road

Edinburgh

SpecificationEH9 1QN

[email protected] await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js"); Country GBP£ Åland Islands (EUR€) Albania (ALLL) Algeria (DZDد.ج) Andorra (EUR€) BUY SELL Angola (GBP£) RIDE CONFIDENT Armenia (AMDդր.) #productTemplate--template--26482384994687__main { --PT: 60px; --PB: 30px; } Ascension Island (SHP£) Austria (EUR€) Belarus (GBP£) Belgium (EUR€) Benin (XOFFr)
Frame Premium Alpha Platinum Aluminium frame, top-load PowerPack, integrated cockpit routing, 135x5 mm QR Shop All
Frame Material ALUMINIUM
Rim Size 29
Fork SR Suntour
Fork SR Suntour NEX-E25, coil spring, preload adjuster, 100mm QR, 63mm travel SR Suntour NEX-E25, coil spring, preload adjuster, 100mm QR, 63mm travel
Tires Bontrager E6 Hard-Case Lite, reflective, wire bead, 60 tpi, 700x50mm
Hub Front Shimano Tourney HB-QC300, centerlock
Hub Rear Shimano Nexus C3001, CenterLock, 7-speed
Rims Bontrager Kovee, double-wall, Tubeless-Ready, 32-hole, 23 mm width, Presta valve
Shifter Shimano
Crank