Header Image
Mali (XOFFr)

Mauritania (GBP£)

Mauritius (MUR₨)
We also have a physical store, if you are local please pop in - & oldPlans.length > 0 ? oldPlans.reduce(function(max, plan) { if (plan.updated_at) { const planDate = new Date(plan.updated_at); const maxDate = max ? new Date(max) : null; return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max; } return max; }, '') : null; const cachedDate = new Date(cachedData.cached_at); const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : null; const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate)); if (useCached) { if (Array.isArray(cachedData.plans)) { window._RestockRocketConfig.sellingPlans = cachedData.plans; window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || []; console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cac
ProjektRide Bike Shop EdinburghFrance (EUR€) 8055097098466, title: "Cane Creek eeSilk+ Seat Post Aluminium", handle: "cane-creek-eesilk-seat-post-aluminium", vendor: "Cane Creek", tags: ["components","Seat Posts \u0026 Clamps","seatpost","seatposts and clamps","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"], available: true, options: ["Seat Tube Size"], selling_plan_groups: [], featured_image: "\/\/projektride.co.uk\/cdn\/shop\/products\/33638-pm.png?v=1679146610\u0026width=800", variants: [{ id: 43936266682594, title: "27.2 mm", available: true, sku: "SP8A316", price: 22499 }, { id: 43936266715362, title: "31.6 mm", available: true, sku: "SP8A317", price: 22499 } ] };window._RestockRocketConfig.variantsInventoryPolicy = {43936266682594 : "continue",43936266715362 : "continue",}; window._RestockRocketConfig.var
Guadeloupe (EUR€) 82 Newington Road, EH91QN, Edinburgh. Mozambique (GBP£) }) || {}).available; (function (c) { c.cartInventoryQuantity = {}; function s(k, id, v) { if (v !== null) (c[k] = c[k] || {})[id] = v; } function sm(k, id, v) { if (v !== null) ((c[k] = c[k] || {})[id] = {})[c.marketId] = v; } function p(k, id, v) { if (v !== null) (c[k] = c[k] || []).push(id); } })(window._RestockRocketConfig); try { var _sqCfg = window._RestockRocketConfig; var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) && _sqCfg.sellingPlans.some(function (p) { return p && p.enabled; }); var _sqPreCount = _sqCfg.inlinePreorderIdsDropped ? _sqCfg.cachedPreorderVariantIdsCount : ((_sqCfg.cachedPreorderVariantIds && _sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length; _sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount); } catch (e) { } try { var _sqc = window._RestockRocketConfig; var _sqOn = !(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout === false); var _sqPre = (_sqc.cacRéunion (EUR€) = 0); }); } else { _sqArm = (_sqc.integrations || []).some(function (i) { return i && i.type === 'featured_product' && i.enabled && Array.isArray(i.page_types) && i.page_types.indexOf(_sqc.pageType) !== -1; }); } } if (_sqArm && document.documentElement) { _sqc.acceleratedGateArmed = true; document.documentElement.classList.add('stoq-buy-now-pending'); setTimeout(function () { document.documentElement.classList.remove('stoq-buy-now-pending'); }, 6000); } } catch (e) { } window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/01a1cf87-0c5a-7dbe-b46c-5802cf5d64ec/restockrocket-1-641/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a1cf87-0c5a-7dbe-b46c-5802cf5d64ec/restockrocket-1-641/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptUrlCollectionFull = 'https://cdn.shopify.com/extensi = 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; } if (settings.multi_language_enabled) { if (!settings.translations) { console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } if (window._RestockRocketConfig.normalizedLocale & < _sqPlans.forEach(function (pl) { if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; } }); } Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', { variant_id: variantId, product_id: (_sqTrack.product && _sqTrack.product.id) || '', channel: channel, market_id: _sqTrack.marketId || '', country_code: _sqTrack.countryIsoCode || '', page_type: _sqTrack.pageType || '', cart_token: _sqTrack.cartToken || '', page_url: (window.location && window.location.origin + window.location.pathname) || '', properties: { is_preorder_variant: (function () { var vid = Number(variantId); var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; }; return has(_sqTrack.preorderVariantIds) || has(_sqTrack.cachedPreorderVariantIds && < Gambia (GMDD) lassList.contains('stoq-buy-now-pending')), blocked: (function () { try { var rr = window._RestockRocket; return !!(rr && typeof rr.willBlockAcceleratedClick === 'function' && rr.willBlockAcceleratedClick(e)); } catch (err) { return false; } })(), }, }); } catch (err) { } }, true); } } catch (e) { } function applyTranslations(settings) { try { 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) { console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {}));
Guinea-Bissau (XOFFr) Niger (XOFFr) 'STOQ - Inventory data loaded, updating cart selling plans'); if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .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); }); } }); } function storefrontGraphql(query, variables) { const cfg = window._RestockRocketConfig; let token = cfg.storefrontAccessToken || null; if (!token && typeof cfg.sk === 'string' && cfg.sk !== '') { try { token = atob(cfg.sk).split('').reverse().join('') || null; } catch (e) { token = null; } } if (!token || cfg.disableStorefrontApi === true) { return Promise.reject(new Error('StorefroSan Marino (EUR€)
urn storefrontGraphql(query, { namespace: cfg.metafieldNamespace, key: key }) .then(function(data) { const value = data && data.shop && data.shop.metafield && data.shop.metafield.value; if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); } return JSON.parse(value); }); } function fetchStorefrontSettings() { const query = 'query StoqSettings($namespace: String!) { shop { settings: metafield(namespace: $namespace, key: "settings") { value } translations: metafield(namespace: $namespace, key: "settings_translations") { value } } }'; return storefrontGraphql(query, { namespace: window._RestockRocketConfig.metafieldNamespace }) .then(function(data) { const settings = JSON.parse(data.shop.settings.value); if (!settings.updated_at) { throw new Error('settings metafield is not a settings payload'); } if (settings.single_locale_translations_inline) { settings.translations = data.shop.translations && JSON.parse(data const storefrontRead = window._RestockRocketConfig.readFlags?.enable_storefront_settings_read === true ? Promise.race([ fetchStorefrontSettings(), new Promise(function(_, reject) { setTimeout(function() { reject(new Error('timed out')); }, 1500); }) ]).catch(function(error) { console.debug('STOQ - Storefront settings read failed, using setting.json:', error.message); }) : Promise.resolve(); storefrontRead .then(function(settings) { return settings || 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 (cachedSettings) { console.de
You May Also LikeGeorgia (GBP£) r.message); }); } function refreshShopConfig(source) { const cfg = window._RestockRocketConfig; const viaEmbed = function() { return fetchEmbedConfig(source.endpoint, source.apply); }; const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true; if (!flagOn) { return viaEmbed(); } return fetchStorefrontShopMetafield(source.metafieldKey) .then(function(value) { if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); } source.apply(value); console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API'); }) .catch(function(error) { console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message); return viaEmbed(); }); } function refreshIntegrations() { const cfg = window._RestockRocketConfig; return refreshShopConfig({ endpoint: 'integrations', metafieldKey: 'in
Hungary (HUFFt) Nigeria (NGN₦) ngs configured for ${window._RestockRocketConfig.pageType}`); const staleRefresh = !window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_refresh_on_stale_liquid; if (staleRefresh) { console.debug('STOQ - refreshing selling_plans + integrations (Liquid cache stale)'); Promise.race([ Promise.all([refreshSellingPlans(), refreshIntegrations()]), new Promise(function(resolve) { setTimeout(resolve, 1000); }) ]).then(function() { loadScripts(settings); }); return; } loadScripts(settings); } function loadScripts(settings) { 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); }) const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans) && wSão Tomé & Príncipe (STDDb) ionScriptUrl = preorderUiOnPage ? window._RestockRocketConfig.scriptUrlCollectionFull : window._RestockRocketConfig.scriptUrlCollection; const collectionScriptUrl = usePreorderBuild ? preorderCollectionScriptUrl : window._RestockRocketConfig.scriptUrlCollectionBis; const productScriptUrl = usePreorderBuild ? window._RestockRocketConfig.scriptUrlProduct : window._RestockRocketConfig.scriptUrlProductBis; const collectionPageTypes = ['collection', 'index', 'search', 'page']; if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) { createRestockRocketScript(collectionScriptUrl); } else if(pageType === 'product') { createRestockRocketScript(productScriptUrl); } else if(hijackIntegration) { createRestockRocketScript(preorderCollectionScriptUrl); } else if(usePreorderBuild) { createRestockRocketScript(preorderColl
|| !(wishlistImageHeart || document.querySelector(wishlistHeartTarget))) return; wishlistHeartsRequested = true; createRestockRocketScript(window._RestockRocketConfig.scriptHost + 'restockrocket-wishlist-hearts.js'); }; loadWishlistHearts(); document.addEventListener('shopify:section:load', loadWishlistHearts); } if (document.querySelector('[data-stoq-wishlist-page]')) { createRestockRocketScript(window._RestockRocketConfig.scriptHost + 'restockrocket-wishlist-page.js'); } try { if (localStorage.getItem('stoq_wl_host') !== window._RestockRocketConfig.scriptHost) localStorage.setItem('stoq_wl_host', window._RestockRocketConfig.scriptHost); } catch (e) {} try { const guestWishlist = window._RestockRocketConfig.customer && !localStorage.getItem('stoq_wl_c') && JSON.parse(localStorage.getItem('stoq_wl')); if (Array.isArray(guestWishlist) && guestWishlist.length) {
Senegal (XOFFr)
Greece (EUR€)
Italy (EUR€) Portugal (EUR€) Sierra Leone (SLLLe) Guadeloupe (EUR€) Kenya (KESKSh) Romania (RONLei) Slovenia (EUR€)
#SiteFooter { --PT: 100px; --PB: 10px; --bg-lighten-darken-shimmer-bg: #0d0d0d; --bg-lighten-darken-shimmer-effect: #121212; --text: #ffffff; --text-alpha-15: rgba(255, 255, 255, 0.15); --text-alpha-50: rgba(255, 255, 255, 0.6); --text-alpha-85: rgba(255, 255, 255, 0.85);--border: #ffffff;} #SiteFooter .footer-bottom { --grid-columns: 3; } Guernsey (GBP£)
Kosovo (EUR€) Rwanda (RWFFRw) Somalia (GBP£)
#SiteFooter .footer-block--logo { min-width: calc(160px + calc(var(--gutter) / 2)); } #SiteFooter .footer-block__logo-image { width: 160px; }
Guinea (GNFFr) Buy, sell and ride in confidence on ProjektRide’s premium bikes
Quick LinksGuinea-Bissau (XOFFr)
Lesotho (GBP£) São Tomé & Príncipe (STDDb) South Sudan (GBP£)

The Frame-Pack RC Toptube is the solution for everyone who likes to have access to their water bottles while also carrying gear inside the bike frame triangle. This waterproof frame bag with roll closure is also ideal for full suspension mountain bikes, where space inside the frame’s triangle is limited by the shocks. About UsHungary (HUFFt)

Liberia (GBP£) Senegal (XOFFr) Spain (EUR€)

Part of ORTLIEB’s bikepacking series, this bag with roll closure meets the IP64 standard for waterproofness, meaning your gear is fully protected from an involuntary bath. With its 4 litre volume, the Frame-Pack RC Toptube enables heavy equipment such as tent poles, tools or food to be carried within the frame triangle, maintaining the bike’s low centre of gravity. The customizable, sturdy and strong Velcro fasteners enable simple and easy fastening, and an uncomplicated installation. The frame pack RC Toptube is made in Germany and PVC-free. Together with the other products from the ORTLIEB bikepacking series, the frame pack RC Toptube forms the ideal equipment for an overnighter, a self-supported race or your next big adventure.

Contact Us
    Iceland (ISKkr)
  • Fabric: PS21R/PS33Libya (GBP£) Serbia (RSDРСД) St. Helena (SHP£)
  • Blog
  • Height: 13cm
  • Ireland (EUR€)
  • Width: 50cmLiechtenstein (CHFCHF) Track Service Progress Seychelles (GBP£) Sudan (GBP£)
  • Depth: 6cm
  • Building Your Bike From the BoxIsle of Man (GBP£)
  • Volume: 4LLithuania (EUR€) Sierra Leone (SLLLe) Svalbard & Jan Mayen (GBP£)
  • Weight: 200g Insure Your Bike
  • Italy (EUR€)
Luxembourg (EUR€) Slovakia (EUR€) Sweden (SEKkr)
Privacy Policy
Madagascar (GBP£) Cookie Policy Slovenia (EUR€) Switzerland (CHFCHF)
Malawi (MWKMK) Somalia (GBP£) Tanzania (TZSSh)
Refund policy
Kosovo (EUR€)
Mali (XOFFr) South Africa (GBP£) Togo (XOFFr)

Frequently Asked Questions Service

Latvia (EUR€)
Malta (EUR€) South Sudan (GBP£) Tristan da Cunha (GBP£)
  • Servicing Mauritania (GBP£) Spain (EUR€) Tunisia (GBP£)
    Book a Service

    Please get in touch with a member of the team either by phone ( 01313745324 Liberia (GBP£) ) or email (Mauritius (MUR₨) Workshop Prices St. Helena (SHP£) Türkiye (GBP£) [email protected] ) where on of the team will be more than happy to help.

    ProjektRide Bike Shop Edinburgh Cycle to WorkLibya (GBP£)

    Mayotte (EUR€) Sudan (GBP£) Uganda (UGXUSh)
  • Delivery & Returns Moldova (MDLL) Svalbard & Jan Mayen (GBP£) Ukraine (UAH₴)
    Information

    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. Mon - Fri: 08:30 - 17:30

    Postage is free on orders over £50. Orders under £50, our postage charge is £3.99. Sat: 9:00 - 16:00Lithuania (EUR€)

    We also have a physical store, if you are local please pop in -Monaco (EUR€) Sun: Closed Sweden (SEKkr) United Kingdom (GBP£)

    ProjektRide Bike Shop Edinburgh 0131 374 5324

    82 Newington Road, EH91QN, Edinburgh. Newington Road

    EdinburghLuxembourg (EUR€)
    Montenegro (EUR€) EH9 1QN Switzerland (CHFCHF) United States (GBP£)
[email protected]
Madagascar (GBP£)