recommended these guys by a passing cyclist when I had an embarrassing wardrobe+ bike mishap on my way home from work. Once that was sorted, they also spotted that my rear tyre was ripped and likely to catastrophically fail on me if I wasn't careful. They were speedy, kind and generous with their time and advice. Wouldn't hesitate to recommend themBUY
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.Bike HireWim Lintermans
★★★★★Servicing of my titanium road bike. Great friendly and knowledgable service from Andy and his team. Thoroughly recommended as my LBS of choice
Mark Dunn
ising through scenic countryside paths, EDGE delivers an unparalleled riding experience.'\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eBuilds start from £4500 and are available to be purchased through the cycle-to-work schemes.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eEnigma Edge Custom Build Example\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eThis ones built up with Shimano 1X12 Speed GRX 610 groupset, Hope RX24 Wheelset and a range of Hope \/ Easton Finishing kit.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eGet in touch to start your custom build process now!\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eFor more information regarding the frmae specification, head over to Enigma Bikes :\u003c\/p\u003e\n\u003cp\u003ehttps:\/\/www.enigmabikes.com\/products\/edge-readytoride\u003c\/p\u003e"}
,"storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":null,"show_button_on_page":false,"insert_button_after_selector_search":null,"show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-production","collection_link_selector":"","index_link_selector":"","page_link_selector":"","search_link_selector":"","collection_check_link_visibility":true,"collection_buttons_container":null,"index_buttons_container":null,"page_buttons_container":null,"search_buttons_container":null,"extension_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is
ng 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.debug('STOQ - locale not explicitly translated, will use default language from cache');
}
// Don't return null - continue using cache even for untranslated lo
<
Loading more
nt.body.appendChild(restockRocketScriptElement);
}
createRestockRocketContainer()
console.debug('STOQ - extension activated')
function applyTranslations(settings) {
try {
// Skip translation logic entirely if multi-language is not enabled
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) {
// 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:Bags and Transportation.
Scripts(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');
}
return response.json();
})
.then(function(settings) {
initializeScripts(settings);
})
.catch(function(error) {
// If request failed and we ha
.
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.preorder_page_enabled)) {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
} else if(window._RestockRocketConfig.pageType === 'product') {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlProduct);
} else if(hijackIntegration) {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
.
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);
});
} else if (attempt Phone Holders
maxRetries) {
console.debug(`STOQ - API not ready, retry ${attempt}/${maxRetries}`);
setTimeout(() => attemptCartCheck(attempt + 1), retryDelay);
} else {
console.debug('STOQ - API not loaded after max retries, skipping cart selling plan check');
}
}
attemptCartCheck();
}
Would you like to add on any equipment?img src="//projektride.co.uk/cdn/shop/files/Screenshot_2024-06-21_at_20.21.17_98x.png?v=1718997714" alt="" class="product-single__thumbnail-img">
Enigma
Please get in touch with a member of the team either by phone (401313745324
) or email (Brakes
[email protected]
) where on of the team will be more than happy to help.Complete Brakes
ProjektRide Bike Shop Edinburgh
5+
Brake Rotors
Brake PadsDecrease quantity
If the item is showing in stock, we aim to post the product within 24 hours. Please allow 5 working days to receive the item.
Postage is free on orders over £50. Orders under £50, our postage charge is £3.99.Brake Spares
We also have a physical store, if you are local please pop in -
Increase quantity