Custom Builds
front_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":true,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":fa
eld
// 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 age = Date.now() - updated
Buy, sell and ride in confidence on ProjektRide’s premium bikes, with over 10 years of experience in the Edinburgh Bike shop cycling industry. Our goal is to provide the cycling community with a resource to buy and sell premium, recognized brands of bikes and to support the expansion of our shared passion. We also offer full custom builds and have a comprehensive workshop to keep your bike running sweet. The main brands we offer are Surly, Brothers Cycles, Genesis, Benno, Kona and Singular Bikes.
- BUILD IT YOUR WAY -
BUY YOUR NEXT BIKEGloves
div class="list-collections__item__image-bg" style="background-image: url( //projektride.co.uk/cdn/shop/files/23-Slash-MN-NOEX-Aosta_218_1_2048x.jpg?v=1751449244 );">
<
Lights
Introducing Stock Builds!
We are really excited to be offering these stock Brothers Mehteh, Big Bro, and Gloria Complete bikes that have been assembled right here in Edinburgh!
★★★★★Absolutely fantastic bike shop. Always willing to help you out when you’re having a problem. Bought many bike components from them over the years and every time they go out of their way to fit them!
Would recommend wholeheartedly for any biking needs!Max McMullon
I have taken several bikes here for servicing and repairs and been consistently impressed by their friendly and helpful advice, and the quality of their repair works. They seem to give a very honest opinion on whether work is required or not.
Robert Moreton
★★★★★These fantastic guys saved our holiday. We were bike trekking around Scotland, and after 3 days, we had serious brake problems. The oil was coming out of the calliper. I called 2 days before our arrival, and they promised to make some time for us. They fixed the problem very fast and they totally didn't take advantage of our situation. I know the prices very well, because I have done all my maintenance myself for many years, and I was surprised by the low cost. Thanks a lot guys.
a class="product__media product__media--featured"
href="/products/life-systems-pocket-first-aid-kit-hire"
title="Life Systems Pocket First Aid Kit - HIRE"
aria-label="Life Systems Pocket First Aid Kit - HIRE"
style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-02-24at21.18.22_5c0e6e2d-1913-4fd1-a90d-b486895960b6_600x.png?v=1691610357)">
electric
StemsComponents
span class="visually-hidden">Life Systems Pocket First Aid Kit - HIRE
Custom BuildsCockpit
Brake Pads>
electric bikes
See More
Genesis Croix De Fer 10 Ex Demo Bike - MediumCreate account
Search
a class="product__media product__media--featured"
href="/collections/second-hand-bikes/products/genesis-tour-de-fer-10-ex-demo-bike-medium"
title="Genesis Croix De Fer 10 Ex Demo Bike - Medium"
aria-label="Genesis Croix De Fer 10 Ex Demo Bike - Medium"
style="background-image: url(//projektride.co.uk/cdn/shop/files/FDFCFA79-1A88-4006-911A-D4F6ABA62399-min_600x.png?v=1727259386)">
span class="visually-hidden">Genesis Croix De Fer 10 Ex Demo Bike - MediumCart>
>
","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfig.product = {"id":8157067411682,"title":"ESI Ribbed Extra Chunky","handle":"ribbed-extra-chunky","description":"\u003cdiv data-mce-fragment=\"1\"\u003e\n\u003cdiv\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cp\u003e\u003cspan class=\"il\"\u003eRibbed\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003ehas 8 distinct ribs that optimize shock absorption and grip! - 34mm\u003c\/p\u003e\n\u003cul\u003e\n\u003cul\u003e\n\u003cli\u003e80 Grams\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/ul\u003e\n\u003cul\u003e\n\u003cul\u003e\n\u003cli\u003eStandard Grip Length - 5 1\/8\"\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/ul\u003e\n\u003cul\u003e\n\u003cul\u003e\n\u003cli\u003eInstalled Dia. 34mm\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/ul\u003e\n\u003cul\u003e\n\u003cul\u003e\n\u003cli\u003eWeight plus or minus 5%\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/ul\u003e\n\u003cul\u003e\n\uHoy Road Bike - Extra Large
max":0,"compare_at_price_varies":false,"variants":[{"id":44365529743586,"title":"Black","option1":"Black","option2":null,"option3":null,"sku":"RBXCB","requires_shipping":true,"taxable":true,"featured_image":{"id":39685253202146,"product_id":8157067411682,"position":1,"created_at":"2023-09-27T10:23:09+01:00","updated_at":"2023-09-27T10:23:11+01:00","alt":null,"width":1134,"height":1266,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-09-27at10.22.05.png?v=1695806591","variant_ids":[44365529743586]},"available":false,"name":"ESI Ribbed Extra Chunky - Black","public_title":"Black","options":["Black"],"price":2100,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":null,"id":32291994665186,"position":1,"preview_image":{"aspect_ratio":0.896,"height":1266,"width":1134,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-09-27at10.22.05.png?v=1695806591"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":44365529776354,"
requires_shipping":true,"taxable":true,"featured_image":{"id":39685253234914,"product_id":8157067411682,"position":2,"created_at":"2023-09-27T10:23:09+01:00","updated_at":"2023-09-27T10:23:11+01:00","alt":null,"width":1134,"height":1266,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-09-27at10.22.09.png?v=1695806591","variant_ids":[44365529809122]},"available":false,"name":"ESI Ribbed Extra Chunky - Red","public_title":"Red","options":["Red"],"price":2100,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":null,"id":32291994697954,"position":2,"preview_image":{"aspect_ratio":0.896,"height":1266,"width":1134,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-09-27at10.22.09.png?v=1695806591"}},"requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-09-27at10.22.05.png?v=1695806591","\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-09-27at10.22.09.png?
}
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 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.span class="visually-hidden">Hoy Road Bike - Extra Large
<>
dCachedSettings = 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;
}
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');
}
Open navigation menu
!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
Contact UsSocksdow.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;
}
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 request failed and we have cached settings (even if expired), use them as fallback
if (cachedSettings) {
console.debug('STOQ - using expired cached settings as fallback');
initializeScripts(cachedSettings);
} else {
console.error('STOQ - failed to load s
be covered! Install Benno Wheel Guards or Utility Pannier Bags. Failure to do so could result in serious injury! Make sure that no parts of the body, clothing or load come near moving parts on the bicycle, such as chain, spokes, tyres or brakes.
Do not exceed individual load ratings and max gross weight.
Size
Bloginput type="number" name="quantity" id="quantity--template--15326745395426__main" value="1" min="1">
Juan Borges Designs
Track Service Progress
.