YETI CARBON E-ROUTING 35X800MM

,{"id":56242623840639,"title":"Taupe","option1":"Taupe","option2":null,"option3":null,"sku":"PR16-TS-V0-UK","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"UTO Morning Pro16 Electric Bike - Taupe","public_title":"Taupe","options":["Taupe"],"price":279900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-OPEN-BIKE-rack-arriere17392_600x375_47f802c2-e639-4edf-a3d9-3830eac93bd4.png?v=1760794147","\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-FOLD-BIKE16462_600x375_aee5b070-cbe2-4621-9cdb-8b9f8af68f77.png?v=1760794157","\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-OPEN-BIKE-rack-arriere17393_1200x750_31b8530d-1195-4fab-93b0-88a7bce6aca3.png?v=1760794279","\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-OPEN-BIKE-rack-arriere17391_600x375_eabf2011-58bd-48dd-b602-ee304274454b.png?v=1760794291"],"featured_image":"\/\/proje
8af68f77.png?v=1760794157","width":600},{"alt":null,"id":68214796353919,"position":3,"preview_image":{"aspect_ratio":1.6,"height":750,"width":1200,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-OPEN-BIKE-rack-arriere17393_1200x750_31b8530d-1195-4fab-93b0-88a7bce6aca3.png?v=1760794279"},"aspect_ratio":1.6,"height":750,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-OPEN-BIKE-rack-arriere17393_1200x750_31b8530d-1195-4fab-93b0-88a7bce6aca3.png?v=1760794279","width":1200},{"alt":null,"id":68214799565183,"position":4,"preview_image":{"aspect_ratio":1.6,"height":375,"width":600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-OPEN-BIKE-rack-arriere17391_600x375_eabf2011-58bd-48dd-b602-ee304274454b.png?v=1760794291"},"aspect_ratio":1.6,"height":375,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/16-PRO-OPEN-BIKE-rack-arriere17391_600x375_eabf2011-58bd-48dd-b602-ee304274454b.png?v=1760794291","width":600}],"requires_selling_plan":false,"selling_plan_group
<

!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) { // No matching locale has translations; drop payload to save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); 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[keyeCartSellingPlans() .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); }); } }); } // First try to get settings from metafields with expiry check 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.Shopi
ettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); // Setup cart selling plan updater BEFORE loading any scripts to avoid race conditions 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); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketConfig.
for ${window._RestockRocketConfig.pageType}`); } // Dispatch custom event when app is loaded // Cart selling plan updates will be triggered by stoq:preorder-api-ready event 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); } }
ock-rocket-shopify-436/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) { // Translations enabled but no translation data in metafield // Metafield h
Integration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketConfig.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.pr
Early Rider
Second-Hand Bikes
See MoreHeader Image
Shop All Second-Hand
See More
Services

See More
E-bike Batteries and chargers
Wheels
See More Complete Wheels Tubeless
Clothing and Protection
See More

Product DetailsProjektRide Merchandise

Helmets

Made for years of hard riding. The Cambium All Weather is a durable and comfortable saddle that is “ready to ride”, thanks to a vulcanised natural rubber top for flexible performance requiring no breaking in period. From freezing rain to blazing sunshine, the waterproof, weatherproof nylon cover is made to perform flawlessly in all conditions. Additionally the updated back plate has loops for a saddle bag or other accessory.

This carved model features a hole for pressure relief helping to eliminate contact point discomfort.Gloves

  • Rails: Black SteelClothing
  • Lx283mm, Wx140mm, Hx52mm
  • Socks
  • Weight: 432g
Essentials
See More
Cleaners, Degreasers and Lubrication

Forks