This site has limited support for your browser. We recommend switching to Edge, Chrome, Safari, or Firefox.Hybrid / City Bikes

<
<
<
Size: 44, 47, 50Clothing
CloseShimano 105 R7100, 50/34, 165 mm length
Home Size:
  Header ImageHire52, 54, 56Essentials
Shimano 105 R7100, 50/34, 170 mm lengthCleaners, Degreasers and Lubrication
Bikes
58, 60, 62Maintenance
New BikesShimano 105 R7100, 50/34, 172.5 mm length
See More
CassetteFinance
Shimano 105 7101, 11-34, 12-speed

>

>

{ "@context": "http://schema.org", "@type": "Organization", "name": "ProjektRide","sameAs": [ null, null, null, null, null, null, null ], "url": "https:\/\/projektride.co.uk" }

console.log("pr-product-page");
BUY
img src="//projektride.co.uk/cdn/shop/files/EmondaSLR7_22_35487_A_Alt1_2048x2048.webp?v=1728735489" alt="Trek Émonda SLR 7" class="mfp-zoom-in-cur" id="34802783060194">

£0.00HIRE - BIKE PACKING BUNDLEa class="product__media product__media--featured" href="/collections/all-products/products/hire-bike-packing-bundle" title="HIRE - BIKE PACKING BUNDLE" aria-label="HIRE - BIKE PACKING BUNDLE" style="background-image: url(//projektride.co.uk/cdn/shop/files/Yourparagraphtext_600x.png?v=1747481130)"> > div class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/resize_width_1000_1296x_d1ffd242-63bc-4a9f-85e2-400f274532d7_600x.jpg?v=1747481423)">
span class="visually-hidden">HIRE - BIKE PACKING BUNDLE>
>
HIRE - BIKE PACKING BUNDLE £0.00

< Delivery & Returns84 - 87 cmSee More < 33" - 34"
Custom Builds for sale<
Custom Build Inspiration Would you like to add on any equipment? 
 < 185 - 190 cm
  See More Stems e=\"region\" aria-hidden=\"false\" aria-labelledby=\"pdl-collapse-head-t1304h\" data-old-padding-top=\"\" data-old-padding-bottom=\"\" data-old-overflow=\"\"\u003e\n\u003cdiv class=\"pdl-collapse-item__content is-active flex-row-reverse items-center font-heading font-bold text-lg border-b-2 focusing\"\u003e\n\u003cdl class=\"font-body flex flex-row flex-wrap text-gray-80 text-lg\" aria-label=\"Specifications\"\u003e\n\u003cdt class=\"flex-none w-full md:w-1\/5 mb-0 py-2 pr-1 font-medium border-b-2 md:border-r-2 border-gray-10\"\u003eFrame\u003c\/dt\u003e\n\u003cdd class=\"flex-none w-full md:w-4\/5 font-normal\"\u003e\n\u003cdiv class=\"p-2 border-b-2 border-gray-10\"\u003e\n\u003cdiv\u003e500 Series OCLV Carbon, IsoSpeed, internal storage, tapered head tube, internal cable routing, 3S chain keeper, mudguard mounts, flat mount disc, 142x12 mm thru axle\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/dd\u003e\n\u003cdt class=\"flex-none w-full md:w-1\/5 mb-0 py-2 pr-1 font-medium border-b-2 md:border-r-2 border-) where on of the team will be more than happy to help. to qualify for free shipping<
ProjektRide Bike Shop Edinburgh < Congratulations! Your order qualifies for free shippingtranslation 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 < !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[key
Open navigation menu

Open search bar