#FeaturedImage--template--24610452406655__1645734801adfd4c07 { --overlay-opacity: 0.2; }Shop by Brand
div class="featured-image__bg bg-pos-center-center" style="background-image: url('//projektride.co.uk/cdn/shop/files/2571D9FF-E9AE-4004-9A55-C7FD4DD999D6_2048x.jpg?v=1640941114');">Gloria>
We also have a physical store, if you are local please pop in -Workshop Prices
ProjektRide Bike Shop Edinburgh
Cycle to Work 82 Newington Road, EH91QN, Edinburgh.BrotherDelivery & Returns
// Calculate Liquid cache freshness once at initialization
const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt;
// Validate timestamp and calculate cache age
if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) {
console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh');
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else {
const now = Math.floor(Date.now() / 1000); // Current time in seconds
const liquidCacheAge = now - liquidRenderedAt; // Age in seconds
// Handle client clock ahead of server
if (liquidCacheAge Email 0) {
console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else if (liquidCacheAge
= 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
[email protected]age = Date.now() - updatedAt.getTime();
if (age
SETTINGS_CACHE_DURATION) {
console.debug('STOQ - settings changed r
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[key];
if (value !== null && value !== undefined && value !== '') {
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;
}
const
The Allant+ 6 Lowstep is a deluxe e-bike for soaring through commutes and exploring gravel paths. It's equipped with the new Bosch Smart System motor that offers more connectivity than ever before. Pair your smartphone with your bike to log activities, plan routes and more. Available with your choice of battery size, ranging from 400 Wh to 800 Wh, so you can cruise comfortably the whole way home. Plus, it's topped off with upgraded components where it matters most.1Black
Brakes
*Please note – spec applies to all sizes unless listed separately
Complete Brakes
ratio":1.111,"height":720,"width":800,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/oneup-components-comp-flat-mtb-pedals-internal-rednotset-1c0399grn.jpg?v=1639047586"},"aspect_ratio":1.111,"height":720,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/oneup-components-comp-flat-mtb-pedals-internal-rednotset-1c0399grn.jpg?v=1639047586","width":800},{"alt":null,"id":32239621079266,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_TURQUOISE_Top.jpg?v=1693837209"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_TURQUOISE_Top.jpg?v=1693837209","width":1600},{"alt":null,"id":32239621406946,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_BLUE_Top.jpg?v=1693837235"},"aspect_ratio":1.0,"height":1600,"media_typProjektRide MerchandiseEra White
e.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_PURPLE_Top.jpg?v=1693837304"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_PURPLE_Top.jpg?v=1693837304","width":1600}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003eThe \u003cstrong data-mce-fragment=\"1\"\u003eOneUp Flat Composite Pedals\u003c\/strong\u003e\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003efeatures a huge super grippy platform with 10 rear-loading steel pins per side to keep your feet planted on even the roughest of trails. With a weight of only 355g, they won't slow you down on the climbs. Designed from stealth rubber down and shaped with a subtle convex profile to provide you with more grip thanks to the pedal sitting in the natural arch of your foot. The thin leading edge chamfered design gives you maximum clearance to reduce pedal strikes and deflect
Helmets
Gloves
Pedals",
"url": "https:\/\/projektride.co.uk\/products\/one-up-components-composite-pedals","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/products\/oneup-composite-pedals-p56008-179347_image_1000x.jpg?v=1639047569"
],"description": "\nThe OneUp Flat Composite Pedals features a huge super grippy platform with 10 rear-loading steel pins per side to keep your feet planted on even the roughest of trails. With a weight of only 355g, they won't slow you down on the climbs. Designed from stealth rubber down and shaped with a subtle convex profile to provide you with more grip thanks to the pedal sitting in the natural arch of your foot. The thin leading edge chamfered design gives you maximum clearance to reduce pedal strikes and deflect off trail obstacles.\nOneUp Flat Composite Pedals Features\n\n10 rear-loading Steel pins\/side, with Nyloc nuts\nDU plus cartridge bearing axle system\nThin leading edge chamfered design to deflect off obstacles\nWide platform design for increased stability\nC
Fjord Blue
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/one-up-components-composite-pedals?variant=44329993470178"
},
{
"@type" : "Offer","availability" : "http://schema.org/InStock",
"price" : 49.5,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/one-up-components-composite-pedals?variant=44329993502946"
},
{
"@type" : "Offer","availability" : "http://schema.org/InStock",
"price" : 49.5,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/one-up-components-composite-pedals?variant=44329993535714"
},
{
"@type" : "Offer","availability" : "http://schema.org/InStock",
"price" : 49.5,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/one-up-components-composite-pedals?variant=44329993568482"
}
]
}
div class="featured-image__bg bg-pos-center-center" style="background-image: url('//projektride.co.uk/cdn/shop/files/2571D9FF-E9AE-4004-9A55-C7FD4DD999D6_2048x.jpg?v=1640941114');">
ue \/ 44","option1":"Blue","option2":"44","option3":null,"sku":"5280451","requires_shipping":true,"taxable":true,"featured_image":{"id":72853013332351,"product_id":14907862712703,"position":1,"created_at":"2025-01-11T12:24:15+00:00","updated_at":"2025-01-11T12:24:18+00:00","alt":null,"width":1920,"height":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/DomaneSLFrameset_23_37302_B_Primary.webp?v=1736598258","variant_ids":[54945337540991,54945337573759,54945337606527,54945337639295,54945337672063,54945337704831,54945337737599,54945337770367,54945337803135]},"available":true,"name":"Trek Domane SL Gen 4 Frame Set - Blue \/ 44","public_title":"Blue \/ 44","options":["Blue","44"],"price":297500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":63841740063103,"position":1,"preview_image":{"aspect_ratio":1.333,"height":1440,"width":1920,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/DomaneSLFrameset_23_37302_B_Primary.webp?v=1736598258"}},"requir
div class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/DualSportPlus2Stagger_23_35855_B_Primary_600x.webp?v=1724192002)">.uk\/cdn\/shop\/files\/DomaneSLFrameset_23_37302_B_Primary.webp?v=1736598258"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":54945337606527,"title":"Blue \/ 50","option1":"Blue","option2":"50","option3":null,"sku":"5280453","requires_shipping":true,"taxable":true,"featured_image":{"id":72853013332351,"product_id":14907862712703,"position":1,"created_at":"2025-01-11T12:24:15+00:00","updated_at":"2025-01-11T12:24:18+00:00","alt":null,"width":1920,"height":1440,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/DomaneSLFrameset_23_37302_B_Primary.webp?v=1736598258","variant_ids":[54945337540991,54945337573759,54945337606527,54945337639295,54945337672063,54945337704831,54945337737599,54945337770367,54945337803135]},"available":false,"name":"Trek Domane SL Gen 4 Frame Set - Blue \/ 50","public_title":"Blue \/ 50","options":["Blue","50"],"price":297500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":63841740063103,"position":1,"pr