Pennyflake
Header Image

Socks
Contact Us
Open search bar
<
  • span class="visually-hidden">Early Rider Belter 16 Auto Sage GreenFrog MTB 72Hire Lazer Compact Helmet
  • > £885.00
  • < Reda class="product__media product__media--featured" href="/collections/new-collection/products/hire-smith-convoy-helmet" title="Hire Lazer Compact Helmet" aria-label="Hire Lazer Compact Helmet" style="background-image: url(//projektride.co.uk/cdn/shop/files/my2023_tempo-kineticore-black_right_1400x1011800x600-removebg-preview_1_600x.png?v=1747484784)">
  • Frog MTB 69Hire Lazer Compact Helmet
  • £0.00
  • a class="product__media product__media--featured" href="/collections/new-collection/products/frog-mtb-69" title="Frog MTB 69" aria-label="Frog MTB 69" style="background-image: url(//projektride.co.uk/cdn/shop/files/1_600x.jpg?v=1736263176)"> Black
  • span class="visually-hidden">Early Rider Belter 16 Auto Brushed Aluminium>
  • >
  • < < div class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/11_600x.jpg?v=1736263176)">
  • span class="visually-hidden">Hire Ortlieb 40L Pannier Bags
  • >
  • span class="visually-hidden">Early Rider Belter 16 Violet Haze
  • >
  • span class="visually-hidden">Frog MTB 62
  • >
  • > <
  • >
  • Frog MTB 62
  • £835.00
  • Blue
  • Red
  • > Tools & Maintenance>
  • a class="product__media product__media--featured" href="/collections/new-collection/products/frog-road-70" title="Frog Road 70" aria-label="Frog Road 70" style="background-image: url(//projektride.co.uk/cdn/shop/files/L-FR70-10_media-ELECTRICBLUE-0.default_600x.jpg?v=1736263163)">
  • >
  • Frog Road 70
  • £720.00
  • Frog Road 67
    a class="product__media product__media--featured" href="/collections/new-collection/products/frog-road-67" title="Frog Road 67" aria-label="Frog Road 67" style="background-image: url(//projektride.co.uk/cdn/shop/files/L-FR67_media-ELECTRICBLUE-0.default_600x.jpg?v=1736263158)"> ) or email (
    < £529.00[email protected]a class="product__media product__media--featured" href="/collections/new-collection/products/frog-road-57" title="Frog Road 58" aria-label="Frog Road 58" style="background-image: url(//projektride.co.uk/cdn/shop/files/L-FR58_media-ELECTRICBLUE-0.default_600x.jpg?v=1736263154)">
  • Sat: 9:00 - 16:00
  • Edinburgh
  • <
  • als","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":4950,"price_min":4950,"price_max":4950,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":42140096102626,"title":"Black","option1":"Black","option2":null,"option3":null,"sku":"1C0399BLK","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"One-Up Components Composite Pedals - Black","public_title":"Black","options":["Black"],"price":4950,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":42140096135394,"title":"Red","option1":"Red","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":36266272850146,"product_id":7469339214050,"position":2,"created_at":"2021-12-09T10:59:46+00:00","updated_at":"2021-12-09T10:59:46+00:00","alt":null,"width":80
  • op\/files\/OneUp-Components_CompPedal_GREEN_Top.jpg?v=1693837278","variant_ids":[44329993470178]},"available":true,"name":"One-Up Components Composite Pedals - Green","public_title":"Green","options":["Green"],"price":4950,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":32239621603554,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_GREEN_Top.jpg?v=1693837278"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":44329993502946,"title":"Orange","option1":"Orange","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":39633801281762,"product_id":7469339214050,"position":5,"created_at":"2023-09-04T15:20:56+01:00","updated_at":"2023-09-04T15:20:58+01:00","alt":null,"width":1600,"height":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_ORANGE_Top.jpg?v=169 Mon - Fri: 09:00 - 18:30<3837258","variant_ids":[44329993502946]},"available":true,"name":"One-Up Components Composite Pedals - Orange","public_title":"Orange","options":["Orange"],"price":4950,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":32239621538018,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_ORANGE_Top.jpg?v=1693837258"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":44329993535714,"title":"Blue","option1":"Blue","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":39633801183458,"product_id":7469339214050,"position":4,"created_at":"2023-09-04T15:20:33+01:00","updated_at":"2023-09-04T15:20:35+01:00","alt":null,"width":1600,"height":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_BLUE_Top.jpg?v=1693837235","variant_ids":[44329993535714]},"available":true,"
  • \/products\/oneup-components-comp-flat-mtb-pedals-internal-rednotset-1c0399grn.jpg?v=1639047586","width":800},{"alt":null,"id":32239621079266,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_TURQUOISE_Top.jpg?v=1693837209"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_TURQUOISE_Top.jpg?v=1693837209","width":1600},{"alt":null,"id":32239621406946,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_BLUE_Top.jpg?v=1693837235"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/OneUp-Components_CompPedal_BLUE_Top.jpg?v=1693837235","width":1600},{"alt":null,"id":32239621538018,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\
  • parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {42140096102626 : parseInt(""),42140096135394 : parseInt(""),44329993437410 : parseInt(""),44329993470178 : parseInt(""),44329993502946 : parseInt(""),44329993535714 : parseInt(""),44329993568482 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {42140096102626 : null,42140096135394 : null,44329993437410 : null,44329993470178 : null,44329993502946 : null,44329993535714 : null,44329993568482 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {42140096102626 : parseInt(""),42140096135394 : parseInt(""),44329993437410 : parseInt(""),44329993470178 : parseInt(""),44329993502946 : parseInt(""),44329993535714 : parseInt(""),44329993568482 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {42140096102626 : null,42140096135394 : null,44329993437410 : null,44329993470178 : null,44329993502946 : null,44329993535714 : null,44329993568482 : null,}; window._Re
  • <
  • e?.role === 'main') {
  • ed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_aft
  • ":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":null,"inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"market_setup_type":"single_market","shopify_app_id":5940125,"cache":true,"cached_at":"2025-11-11T14:27:02.333Z","multi_language_enabled":false,"translation_locale":"en"};window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[42167799447778,43590980075746,43916521013474,43934694998242,43934695031010,43934695620834,43935975440610,43935975473378,43935989399778,43935989432546,43935990284514,43935994118370,43935995625698,43935995855074,43936000835810,43936003195106,43936003227874,43936008012002,43936008044770,43936022757602,43936022790370,43936022823138,43936022855906,43936056115426,43936061030626,43936064930018,43936070631650,43936078037218,43936078069986,43936088195298,43936093470946,43936101138658,43936107266274,43936124076258,43936124109026,4393612414
  • d":false}; window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569933140351,55569712382335,55569712415103,55569712480639,55569933173119,55570017616255,55569933074815,55570017550719,55569712447871,55569933107583,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact
  • sabled":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.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ
  • SETTINGS_CACHE_DURATION) { console.debug('STOQ - settings changed recently, skipping cache'); return null; } return settings; } catch (error) { console.debug('STOQ - Error checking settings cache:', error); return null; } } function createRestockRocketContainer() { const restockRocketContainer = document.createElement('div'); restockRocketContainer.id = 'restock-rocket'; document.body.appendChild(restockRocketContainer); } func
  • a class="product__media product__media--featured" href="/collections/new-collection/products/frog-40" title="Frog 40" aria-label="Frog 40" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2024-01-09at15.34.57_600x.png?v=1736263065)"> tings = 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 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 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.en
  • > t 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
  • ner-float-left:hover,.restock-rocket-button-container-float-right:hover,.restock-rocket-button-container:hover,.restock-rocket-button-float:hover,.restock-rocket-button:hover{opacity:.8}.restock-rocket-button{min-height:50px;margin-top:10px;margin-bottom:10px}.restock-rocket-button-collection{position:relative;font-size:13px;line-height:1;padding:7px;height:auto;z-index:3}.restock-rocket-wrapper{background-color:rgba(0,0,0,.5);z-index:123123123;width:100%;height:100%;overflow:auto;position:fixed;right:0;top:0;transition-property:all;transition-duration:.3s;display:flex;flex-direction:column;justify-content:center;}.restock-rocket-wrapper-inline{width:100%;height:100%;margin-top:20px}.restock-rocket-preorder-description{padding:10px 15px;margin-top:20px;display:flex;flex-direction:column;gap:10px;}.preorder-description-details{margin-bottom:0;display:flex;flex-direction:column;gap:10px;}.preorder-detail-item{display:flex;flex-direction:row;justify-content:start;gap:8px;align-items:center;}.restock-rocket-payme
  • div class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/filcountdown-label{font-size:14px;font-weight:500;text-align:center;text-transform:capitalize;opacity:.7}@media (max-width:768px){.restock-rocket-preorder-countdown-timer{padding:14px}.restock-rocket-preorder-countdown-timer .countdown-box{min-width:55px;padding:14px 10px;font-size:26px}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:11px}}@media (max-width:480px){.restock-rocket-preorder-countdown-timer{padding:12px}.restock-rocket-preorder-countdown-timer .countdown-units{width:100%;gap:10px}.restock-rocket-preorder-countdown-timer .countdown-box{width:100%;min-width:50px;padding:12px 8px;font-size:24px}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:10px}}.restock-rocket-toast{position:fixed;cursor:pointer;background:#fff;border:0;min-width:40px;min-height:40px;box-shadow:0 0 15px rgba(0,0,0,.1)!important;z-index:622004;padding:20px 30px;font-family:inherit;font-size:inherit;color:#000;display:flex;justify-content:center;align-items:center}.restock-rocket-toast a{text-d es/Screenshot2024-01-09at15.34.59_600x.png?v=1736263065)">ecoration:none;font-weight:700;color:#000}.restock-rocket-toast .dismiss{margin-left:15px;z-index:1;font-size:20px;}.restock-rocket-toast-top{top:60px}.restock-rocket-toast-bottom{bottom:75px}.restock-rocket-toast-left,.restock-rocket-toast-right{-webkit-animation:.5s forwards slide;animation:.5s forwards slide}.restock-rocket-toast-left{left:0;transform:translateX(-100%);-webkit-transform:translateX(-100%);border-radius:0 10px 10px 0}.restock-rocket-toast-left.slide-out{-webkit-animation:.5s forwards slide-out-left;animation:.5s forwards slide-out-left}.restock-rocket-toast-right{right:0;transform:translateX(100%);-webkit-transform:translateX(100%);border-radius:10px 0 0 10px}.restock-rocket-toast-right.slide-out{-webkit-animation:.5s forwards slide-out-right;animation:.5s forwards slide-out-right}@keyframes slide{100%{transform:translateX(0)}}@-webkit-keyframes slide{100%{-webkit-transform:translateX(0)}}@keyframes slide-out-left{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}@-webkit-keyframe
  • < span class="visually-hidden">Frog 44
  • < a class="product__media product__media--featured" href="
  • /collections/new-collection/products/kona-rove-al-650" title="Kona Rove AL 650" aria-label="Kona Rove AL 650" style="background-image: url(//projektride.co.uk/cdn/shop/files/my23_rove_al_650_2000x_98ec63f2-134d-4d88-8def-bf968227d688_600x.jpg?v=1733934912)"> <span class="visually-hidden">Kona Rove AL 650 >
  • <div class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/20220509-Kona4750-RoveAL650Details_2000x_fc3ac244-d518-4519-a4e2-815296289548_600x.jpg?v=1733934922)"> Blue Sage Kona Rove AL 650
  • £699.00
  • < a class="product__media product__media--featured" href="/collections/new-collection/products/kona-rove-dl" title="Kona Rove DL" aria-label="Kona Rove DL" style="background-image: url(//projektride.co.uk/cdn/shop/files/ROVEDL_720x_57c70c24-be8c-4f6d-a2c7-41712ec187fc_600x.webp?v=1733933328)">
  • Kona Rove DL Kona Lana'l - MTB Hardtail - Grey
  • 12
  • 13
  • 16
  • QUICK LINKS
  • About Us Insure Your Bike
  • Privacy Policy Cookie Policy SERVICES
  • Working Hours
  • Tel
  • Location
  • Email
  • © 2025,
  • ProjektRide .
  • = {};window._RestockRocketConfig.cachedSettings = {"id":38500,"shop_id":38436,"currency":"GBP","created_at":"2025-07-26T09:13:57.337Z","updated_at":"2025-11-11T14:27:02.312Z","enable_app":true,"enable_signup_widget":false,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_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,"storefr ont_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":false,"css_config":"","js_config":null,"collect_promotion_consent":false,"storefront_form_promotion_consent_label":"Notify me about other news, sales, discounts & offers too","show_button_on_collection":false,"sms_default_country":"us","sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius"
  • :0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":null,"push_enabled":false," push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","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 out of stock. Get notified when it's restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":null,"preorder_add_to_cart_button_selector":"","preorder_badge_selector":"","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_enabled":false,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action *=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":null,"preorder_index_badge_selector":null,"preorder_page_badge_selector":null,"preorder_search_badge_selector":null,"preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"span","preorder_button_disclaimer_insert_selector":"","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_container_selector":"","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":"","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_deb:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds 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; } // 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.debug('STOQ - locale not expl
  • icitly 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() - updatedAt.getTime(); if (age < SETTINGS_CACHE_DURATION) { console.debug('STOQ - settings changed recently, skipping cache'); return null; } return settings; } catch (error) { console.debug('STOQ - Error checking settings cache:', error); return null; } } function createRestockRocketContainer() { const restockRocketContainer = document.createElement('div'); restockRocketContainer.id = 'restock-rocket'; document.body.appendChild(restockRocketContainer); } function createRestockRocketScript(scriptUrl) { const restockRocketScriptElement = document.createElement('script'); restockRocketScriptElement.setAttribute('defer', 'defer'); restockRocketScriptElement.src = scriptUrl; document.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: ${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?.them
  • .restock-rocket-button,.restock-rocket-button-float{opacity:1!important;border:none!important;curs or:pointer!important;background-image:none!important;box-shadow:none!important;padding:15px 20px;font-size:16px;width:100%;font-family:inherit}@font-face{font-family:OpenSans;font-weight:200;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Light.woff)}@font-face{font-family:OpenSans;font-weight:300;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Regular.woff)}@font-face{font-family:OpenSans;font-weight:600;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-SemiBold.woff)}.restock-rocket-button-container{position:relative;z-index:1;width:100%}.restock-rocket-button-container-float-right{position:fixed;z-index:123123;top:calc(50% - 200px);right:0;transform:rotate(270deg);transform-origin:bottom right}.restock-rocket-button-container-float-left{position:fixed;z-index:123123;top:calc(50% - 200px);left:40px;transform:rotate(90deg);transform-origin:top left}.restock-rocket-button-container-float-left:hover,.restock-rocket-button-container-float-right:hover,.restock-rocket-butto