46cm
Header Image
50cm
52cm
  • {"id":56279203742079,"title":"38cm","option1":"38cm","option2":null,"option3":null,"sku":"5SUGR1B38K","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Straggler 1x - 650b Black - 38cm","public_title":"38cm","options":["38cm"],"price":184999,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}
  • Quantity
1
1 3
5
6
Ghana (GBP£) Gibraltar (GBP£) Luxembourg (EUR€) Madagascar (GBP£) #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; } Greenland (DKKkr.) 9 Guadeloupe (EUR€) 10 + Buy, sell and ride in confidence on ProjektRide’s premium bikes Mali (XOFFr) Malta (EUR€)
Quantity Guinea (GNFFr) About Us
Decrease QuantityMauritania (GBP£) Contact Us
Guinea-Bissau (XOFFr)
BlogIncrease QuantityMauritius (MUR₨)
Mayotte (EUR€)
Portugal (EUR€)
Luxembourg (EUR€) Country GBP£ Rwanda (RWFFRw) Early Rider Bella Velio Ivory – ProjektRide
Mali (XOFFr)
Åland Islands (EUR€)
San Marino (EUR€)
Malta (EUR€) Albania (ALLL)
São Tomé & Príncipe (STDDb)
Mauritania (GBP£)
Algeria (DZDد.ج)
Seychelles (GBP£)
Moldova (MDLL) Armenia (AMDդր.) Ascension Island (SHP£) Slovakia (EUR€) Montenegro (EUR€)
Austria (EUR€)
Slovenia (EUR€)
Morocco (MADد.م.)
Belarus (GBP£)
Somalia (GBP£) Belgium (EUR€)
South Africa (GBP£)

Namibia (GBP£)

Benin (XOFFr)

South Sudan (GBP£)

Netherlands (EUR€)

Bosnia & Herzegovina (BAMКМ)

Spain (EUR€)

Niger (XOFFr)

Botswana (BWPP)

St. Helena (SHP£)
    Nigeria (NGN₦)
  • British Indian Ocean Territory (USD$)

    Sudan (GBP£)

    North Macedonia (MKDден)

    Bulgaria (EUR€)

    Svalbard & Jan Mayen (GBP£)
  • Norway (GBP£)
  • Burkina Faso (XOFFr)

    Sweden (SEKkr)

    Poland (PLNzł)

    Burundi (BIFFr)

    Switzerland (CHFCHF)
  • Portugal (EUR€)
  • Cameroon (XAFCFA)

    Tanzania (TZSSh)

    Réunion (EUR€)

    Cape Verde (CVE$)

    Togo (XOFFr)
  • Romania (RONLei)
  • Central African Republic (XAFCFA)

    Tristan da Cunha (GBP£)

    Rwanda (RWFFRw)

    Chad (XAFCFA)

    Tunisia (GBP£)
  • San Marino (EUR€)
  • Comoros (KMFFr)

    Türkiye (GBP£)

    São Tomé & Príncipe (STDDb)

    Congo - Brazzaville (XAFCFA)

    Uganda (UGXUSh)
  • Senegal (XOFFr)
  • Congo - Kinshasa (CDFFr)

    Ukraine (UAH₴)

    Serbia (RSDРСД)

    Côte d’Ivoire (XOFFr)

    United Kingdom (GBP£)
  • Seychelles (GBP£)
  • Croatia (EUR€)

    United States (GBP£)

    Sierra Leone (SLLLe)

    Cyprus (EUR€)

    Vatican City (EUR€)
  • Slovakia (EUR€)
  • Czechia (CZKKč)

    Western Sahara (MADد.م.)

    Slovenia (EUR€)

    Denmark (DKKkr.)

    Zambia (GBP£)
  • Somalia (GBP£)
  • Djibouti (DJFFdj)

    Zimbabwe (USD$)

    South Africa (GBP£)

    Egypt (EGPج.م)

  • South Sudan (GBP£)
  • Equatorial Guinea (XAFCFA)

    Spain (EUR€)

    Eritrea (GBP£) © 2026,

    ProjektRide
    .
  • St. Helena (SHP£)
  • Estonia (EUR€) Powered by
    Shopify

    .

    Sudan (GBP£)

    Eswatini (GBP£)

    American Express
  • Svalbard & Jan Mayen (GBP£)
  • Ethiopia (ETBBr)
    Apple Pay

    Sweden (SEKkr)

    Faroe Islands (DKKkr.) Diners Club

    Discover
  • Switzerland (CHFCHF)
  • Finland (EUR€) Google Pay

    KlarnaTanzania (TZSSh)

    France (EUR€)

    Maestro
  • MastercardTogo (XOFFr)
  • French Southern Territories (EUR€)

    PayPal

    Tristan da Cunha (GBP£)

    Gabon (XOFFr) Satispay

    Shop Pay
  • Tunisia (GBP£)
  • Gambia (GMDD)
    Union Pay

    VisaTürkiye (GBP£)

    Georgia (GBP£)

  • Uganda (UGXUSh)
  • Germany (EUR€)

    Ukraine (UAH₴)

    Ghana (GBP£)

  • United Kingdom (GBP£)
  • Gibraltar (GBP£)

    United States (GBP£)

    Greece (EUR€)

  • Vatican City (EUR€)
  • Greenland (DKKkr.)

    Western Sahara (MADد.م.)

    Guadeloupe (EUR€)

  • Zambia (GBP£)
  • Guernsey (GBP£)

    Zimbabwe (USD$)

    Guinea (GNFFr)

  • Guinea-Bissau (XOFFr)

    Hungary (HUFFt)

    © 2026,
    ProjektRide
  • .
  • Iceland (ISKkr)
    Powered by

    CloseShopify

    .

    Ireland (EUR€)

  • American Express
  • Isle of Man (GBP£)

    Apple Pay

    Italy (EUR€)

    Diners Club
  • Discover
  • Jersey (GBP£)
    Google Pay

    Kenya (KESKSh) Klarna

    Maestro
  • Kosovo (EUR€) Mastercard

    PayPal

    Latvia (EUR€)

    Satispay
  • Shop Pay
  • Lesotho (GBP£)

    Union Pay

    Liberia (GBP£) Visa

    Libya (GBP£)

  • Close
ider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":true,"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}
flags":{},"cached_at":"2026-10-10T11:02:02Z"}; if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) { window._RestockRocketConfig.readFlags = cachedData.read_flags || {}; const oldPlans = window._RestockRocketConfig.sellingPlans; const maxUpdatedAt = Array.isArray(oldPlans) && 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) {
guration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.product = { id: 15327698616703, title: "Marin Alcatraz 24\"", handle: "marin-alcatraz-24", vendor: "Marin", tags: ["Alcatraz 24"], available: true, options: ["Size"], selling_plan_groups: [], featured_image: "\/\/projektride.co.uk\/cdn\/shop\/files\/ALCATRAZ-24-25-P_4107c575-22eb-40a9-bade-3829a4b4b15a.jpg?v=1760008442\u0026width=800", variants: [{ id: 56189673734527, title: "One Size", available: true, sku: "739060001", price: 84900 } ] };window._RestockRocketConfig.variantsInventoryPolicy = {56189673734527 : "deny",}; window._RestockRocketConfig.varian
, 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.cachedPreorderVariantIds && _sqc.cachedPreorderVariantIds.preorder_variant_ids) || []; var _sqAlways = []; var _sqAlwaysPlanIds = []; var _sqGateAlloc = (_sq

pageType === 'product' && _sqc.product && _sqc.product.variants) { _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1 || _sqAlways.indexOf(Number(v.id)) !== -1 || _sqAllocAlways(Number(v.id)) || (_sqc.inlinePreorderIdsDropped === true && (_sqc.variantsInventoryPolicy || {})[v.id] === 'continue' && (_sqc.variantsInventoryQuantity || {})[v.id]

= 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
e) { window._RestockRocketConfig.appVersion = ''; } const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; const LIQUID_CACHE_MAX_AGE = 15 * 60; const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); window._RestockRocketConfig.isLiquidCacheFresh = true; window._RestockRocketConfig.liquidCacheAge = null; } else { const now = Math.floor(Date.now() / 1000); const liquidCacheAge = now - liquidRenderedAt; window._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge); if (liquidCacheAge 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; } 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 & .body.appendChild(plainScriptElement); }; restockRocketScriptElement.src = scriptUrl; document.body.appendChild(restockRocketScriptElement); } createRestockRocketContainer() console.debug('STOQ - extension activated') try { const _stoqInitConfig = window._RestockRocketConfig; const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.product.variants)) ? _stoqInitConfig.product.variants.map(function(v) { return v.id }) : []; const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id; var _stoqPageSeq = 0; try { _stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1; window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq)); } catch (e) { } Shopify?.analytics?.publish?.('stoq_initialized', { cart_token: _stoqInitConfig.cartToken || '', page_url: window.location.origin + window.location.pathname, page_type: _stoqInitConfig.pageType || '',
    .closest('.shopify-payment-button, shopify-payment-terms'); if (!host) return; var channel = host.matches && host.matches('shopify-payment-terms') ? 'shop_pay_installments' : 'buy_now'; var form = host.closest('form'); var vidEl = form && form.querySelector('[name="id"]'); var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || ''; var _sqVidNum = Number(variantId); var _sqPlan = null; var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; var _sqMktId = Number(_sqTrack.marketId); var _sqOffersOn = !!(_sqTrack.readFlags && _sqTrack.readFlags.enable_storefront_plan_offers === true); var _sqAlloc = _sqOffersOn ? ((_sqTrack.offerAllocations && _sqTrack.offerAllocations[_sqVidNum]) || (_sqTrack.variantSellingPlanIds && _sqTrack.variantSellingPlanIds[_sqVidNum])) : null; var _sqPlanIds = function (pl)

    _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 && < 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 || {})); '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('Storefro 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

    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
    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) && w
  • 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