BlogThis site has limited support for your browser. We recommend switching to Edge, Chrome, Safari, or Firefox.
  • Track Service Progress Building Your Bike From the Box Insure Your Bike Terms of Service
    Refund policy _timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true}];window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"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.obfuscateInventoryQuantity = false;window._RestockRocketConfig
    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
  • <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:our BikeFrog ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key]; if (value !== null && value !== undefined && value !== '') { settings[key] = value; } }); } else { console.debug('STOQ - No translated fields found for locale:', normalizedLocale); } delete settings.translations; return settings; } catch (e) { console.debug('STOQ - error applying translations:', e); return settings; } } // First try to get settings from metafields with expiry check const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = 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'); } return response.json(); }) .then(function(settings) { initializeScripts(settings); }) .catch(function(error) { // If request failed and we ha Early Riderve 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 settings:', error); } }) .catch(function(e) { console.error(e) }) } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); 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); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) {
  • 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); } else { console.debug(`STOQ - no scripts enabled for ${window._RestockRocketConfig.pageType}`); } // Check and update cart selling plans after scripts are loaded if (settings.preorder_enabled) { updateCartSellingPlans(); } // Dispatch custom event when app is loaded const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } } function updateCartSellingPlans() { // Wait for the API to be available with retries const maxRetries = 10; const retryDelay = 500; function attemptCartCheck(attempt = 1) { 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); }); } else if (attempt Contact UsKona <
  • BrandsSee MoreHope
    EnveAccessories
    See More
    Header Image
    CockpitBottles and Cages
    Handlebars
    Locks
    Grips & Bar-Tape Bike Packing

    Headsets

    Bags and Transportation
    Phone Holders
    Brake PadsRider Care
    Forks
    Rear Suspension
    Finishing Kit
    ProjektRide Merchandise Clothing
    See More
    #ProductTemplate--template--15326745395426__main {
    XC FKTI Bike - Carbon Fork - SLX Groupset
    1
    Lights 1+ See More
    label for="quantity--template--15326745395426__main">QuantityTubeless
    Add to cart
    window.klarnaAppBlocksManager.push({ productVariants: [{"id":42157868581090,"title":"20mm Rise","option1":"20mm Rise","option2":null,"option3":null,"sku":"1C0459","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"One-Up Components Carbon Handlebars - 20mm Rise","public_title":"20mm Rise","options":["20mm Rise"],"price":12600,"weight":1000,"compare_at_price":12600,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":42157868613858,"title":"35mm Rise","option1":"35mm Rise","option2":null,"option3":null,"sku":"1C0585","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"One-Up Components Carbon Handlebars - 35mm Rise","public_title":"35mm Rise","options":["35mm Rise"],"price":12600,"weight":1000,"compare_at_price":12600,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}], templateName: 'product', data
    ll,"option3":null,"sku":"1C0585","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"One-Up Components Carbon Handlebars - 35mm Rise","public_title":"35mm Rise","options":["35mm Rise"],"price":12600,"weight":1000,"compare_at_price":12600,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}], templateName: 'product', shopLocale: 'en', dataKey: 'top-strip-promotion-badge', storefrontCurrency: 'GBP', storefrontCountry: 'GB', storefrontLanguage: 'en', shopDomain: 'projektride.co.uk', variantPrice: '12600', cartPrice: '0', selector: 'shopify-osm-ASUorQUNvQS9uckFQO__klarna_on_site_messaging_app_block_8gNReH', topPadding: '0', bottomPadding: '0', }); }
    The goal for the new OneUp Carbon Handlebars was to make the best feeling bar possible, something that would let us ride harder for longer.The solution is our patent pending oval shape which combines the best ride characteristics of 31.8mm and 35mm bar standards into one package. This is the most comfortable bar we’ve ever ridden, period. It's strong, lightweight minimizes arm pump and vibrati
    Gloria
    rd has had a bad reputation and rightly so. This is 35 Dia. done right.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv data-feature-name=\"productDescription\" data-template-name=\"productDescription\" class=\"a-row feature\" data-mce-fragment=\"1\"\u003e\n\u003cspan data-mce-fragment=\"1\"\u003e\u003c\/span\u003e\u003cbr data-mce-fragment=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv data-feature-name=\"productDescription\" data-template-name=\"productDescription\" class=\"a-row feature\" data-mce-fragment=\"1\"\u003e\u003cbr data-mce-fragment=\"1\"\u003e\u003c\/div\u003e\n\u003ch3 dir=\"ltr\" data-mce-fragment=\"1\"\u003e\u003cbr data-mce-fragment=\"1\"\u003e\u003c\/h3\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003e\n\u003cspan data-mce-fragment=\"1\"\u003eSPECS\u003c\/span\u003e   \u003c\/h3\u003e\n\u003cdiv data-mce-fragment=\"1\"\u003e\n\u003cstrong data-mce-fragment=\"1\"\u003eGeometry:\u003c\/strong\u003e\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e800mm Wide \/ 35mm Dia. \/  Sweep 8° Badth\u003c\/strong\u003e: 740mm\u003c\/span\u003e\u003c\/div\u003e\n\u003cstrong data-mce-fragment=\"1\"\u003eColour\u003c\/strong\u003e: Black. Decal kits: Available in Red, Green, Blue, Orange, Purple \u0026amp; White\u003c\/div\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cbr data-mce-fragment=\"1\"\u003e\u003c\/p\u003e\n\u003ch3 data-mce-fragment=\"1\"\u003eCOMPATIBILITY\u003c\/h3\u003e\n\u003cp data-mce-fragment=\"1\"\u003eGrips with only an outer clamp are not compatible with our bar.\u003c\/p\u003e\n\u003c\/div\u003e","published_at":"2025-01-04T10:41:20+00:00","created_at":"2021-12-14T16:58:46+00:00","vendor":"One-Up","type":"","tags":["Handlebars","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":12600,"price_min":12600,"price_max":12600,"available":true,"price_varies":false,"compare_at_price":12600,"compare_at_price_min":12600,"compare_at_price_max":12600,"compare_at_price_varies":false,"variants":[{"id":42157868581090,"title":"20mm Rise","option1":"20mm Rise","optioprojektride.co.uk\/cdn\/shop\/products\/OneUp-Components-Carbon-Handlebar-20mm-Rise-Black-966.jpg?v=1639501128","\/\/projektride.co.uk\/cdn\/shop\/products\/OneUp-Components-Bar-20mm-Rise-EDC-Stem-50mm-Sp.original.jpg?v=1639501128"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/OneUp-Components-Carbon-Handlebar-35mm-Rise-Front-Black-966_grande_2a2952ec-89a2-4bf1-bcd1-f64bbdb1b8f1.jpg?v=1639501128","options":["Size"],"media":[{"alt":null,"id":28842522804450,"position":1,"preview_image":{"aspect_ratio":1.0,"height":600,"width":600,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/OneUp-Components-Carbon-Handlebar-35mm-Rise-Front-Black-966_grande_2a2952ec-89a2-4bf1-bcd1-f64bbdb1b8f1.jpg?v=1639501128"},"aspect_ratio":1.0,"height":600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/OneUp-Components-Carbon-Handlebar-35mm-Rise-Front-Black-966_grande_2a2952ec-89a2-4bf1-bcd1-f64bbdb1b8f1.jpg?v=1639501128","width":600},{"alt":null,"id":28842522837218,"position":2,"preview_image"
    \"yotpo bottomLine yotpo-small\" data-product-id=\"4461162692743\" data-yotpo-element-id=\"2\" data-mce-fragment=\"1\"\u003e\n\u003cdiv class=\"yotpo-display-wrapper\" data-mce-fragment=\"1\"\u003e\n\u003cdiv class=\"yotpo-clr\" data-mce-fragment=\"1\"\u003e\n\u003cstrong data-mce-fragment=\"1\"\u003eONEUP CARBON BARS. Strong, lightweight \u0026amp; vertically compliant.\u003c\/strong\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"description\" data-mce-fragment=\"1\" itemprop=\"description\"\u003e\n\u003cbr data-mce-fragment=\"1\"\u003eThe goal for the new OneUp Carbon Handlebars was to make the best feeling bar possible, something that would let us ride harder for longer.\u003cbr data-mce-fragment=\"1\"\u003e\u003cbr data-mce-fragment=\"1\"\u003e\u003cspan data-mce-fragment=\"1\"\u003eThe solution is our patent pending oval shape which combines the best ride characteristics of 31.8mm and 35mm bar standards into one package. This is the most comfortable bar we<
    n bar on the market copies the simple tapered profile of an Aluminum bar. With carbon you can take advantage of more complex shapes to get a better performing product, so that's what we did. If you actually care about bar compliance, then you don't make a regular 35mm diameter bar. Sure you can try to \"optimize\" the flex slightly with layup, but geometry is king and you're fighting a losing battle.\u003c\/span\u003e\u003cbr data-mce-fragment=\"1\"\u003e\u003cbr data-mce-fragment=\"1\"\u003eThe OneUp bar profile minimizes the length of the 35 diameter clamping area as this is the stiffest portior.n of any 35 diameter bar. The 35mm clamp diameter quickly changes to a flattened, oval shape in the transition zone and then to a standard 22.2mm clamp diameter for the control zone.\n\u003cp data-mce-fragment=\"1\"\u003e \u003c\/p\u003e\n\u003cspan data-mce-fragment=\"1\"\u003eWe bench marked the OneUp bar against the most popular carbon bars on the market as well as foam filled aluminum bars. The results were, o<
    trong\u003ePictures are for reference purposes only.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eIf you have any requirements for custom parts, feel free to send us an email.\u003c\/strong\u003e\u003c\/em\u003e\u003c\/p\u003e\n\u003cp\u003eBuild details.\u003c\/p\u003e\n\u003ctable xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\" cellspacing=\"0\" cellpadding=\"0\" dir=\"ltr\" border=\"1\" data-sheets-root=\"1\"\u003e\n\u003ccolgroup\u003e\n\u003ccol width=\"210\"\u003e\n\u003ccol width=\"710\"\u003e\n\u003c\/colgroup\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Product Type\"}'\u003eProduct Type\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Component\"}'\u003eComponent\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Bar Tape \/ Grips\"}'\u003eBar Tape \/ Grips\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"ODI\"}'\u003eODI\u003c\/td\u003e\n\u003c\/tr\u003e\n\ Questions and answers
    c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"BBB\"}'\u003eBBB\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Tyre\"}'\u003eTyre\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Schwalbe Racing Ralph Tubeless\"}'\u003eSchwalbe Racing Ralph Tubeless\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Wheel Pair\"}'\u003eWheel Pair\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"E 1900 wheel, 30 mm rim ,29 inch \"}'\u003eE 1900 wheel, 30 mm rim ,29 inch\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Bottom Bracket\"}'\u003eBottom Bracket\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"BB-RS501 bottom bracket cups, English thread cups\"}'\u003eBB-RS501 bottom bracket cups, English thread cups\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"Seat Post\"}'\u003eSeat Post\u003c