Clothing and ProtectionYeti Cycles ARC C-Series C2 Factory 29" Bike
ProjektRide Merchandise£4,399.00
Gloves
Close search bar
li class="result">
<
div class="result__image" data-aspectratio="{{ it.product.image.aspectRatio }}" data-product-image>
<
{{/if}}
a class="product__media product__media--featured"
href="/collections/all-products/products/yeti-cycles-sb120-c-series-c2-29-bike"
title="Yeti Cycles SB120 C-Series C2 29" Bike"
aria-label="Yeti Cycles SB120 C-Series C2 29" Bike"
style="background-image: url(//projektride.co.uk/cdn/shop/files/ycb2312029c2du_600x.webp?v=1741953520)">
span class="visually-hidden">Yeti Cycles SB120 C-Series C2 29" Bike
>
a href="{{ it.product.url }}">{{ it.product.title }}
>
<
li class="result result--full">
<
RIDE CONFIDENTYeti Cycles SB120 T-Series 29" Frame
£4,299.00
Muc-Off Biodegradable Bike Cleaner has an incredibly effective cleaning formula containing 'Nano Technology' that also cares for your bike's delicate finishes. It contains no harmful acids, CFC's or solvents and is fully biodegradable.
Contains Nano Tech Bike Cleaner
Yeti Cycles SB140 C-Series C2 Lunch Ride 29" Factory BikeMO-94
£6,699.00Looking for an all round wonder spray? Look no further! Muc-Off MO-94 covers all the bases with its incredible PTFE formula to quickly and effectively penetrate moisture, lubricate moving parts and leave a long lasting protective film. MO-94 prevents dirt adhesion and also drives out excess water to keep rust and corrosion at bay.
Biodegradable Wet LubeGrey
Muc-Off Biodegradable Wet Chain Lube is an ultra durable, long distance bicycle chain lubricant, it’s been specifically formulated to excel over long distances in wet or muddy conditions. Our state of the art formula has been derived from natural ingredients and made completely from renewable sources. It penetrates deep into your chain link’s to provide long lasting lubrication and total protection. Our integral ’Extreme Pressure Additives’ coat every part of the link to provide a silky smooth gear change and an ultra efficient drive chain.Blue
Yeti Cycles SB140 T-Series 29" FrameContains MO-94
Contains Biodegradable Wet LubeCleaners Degreasers and Lubrication","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":1649,"price_min":1649,"price_max":1649,"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":42133920153826,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"20289","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Muc-Off Clean, Protect and Lube Kit","public_title":null,"options":["Default Title"],"price":1649,"weight":1500,"compare_at_price":null,"inventory_management":"shopify","barcode":"PREA03112021.1622","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lub
e-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693","options":["Title"],"media":[{"alt":null,"id":28852728987874,"position":1,"preview_image":{"aspect_ratio":1.0,"height":550,"width":550,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693"},"aspect_ratio":1.0,"height":550,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693","width":550}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e Nano Tech Bike Cleaner\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eMuc-Off Biodegradable Bike Cleaner has an incredibly effective cleaning formula containing 'Nano Technology' that also cares for your bike's delicate finishes. It contains no harmful acids, CFC's or solvents and is fully biodegradable.\u003c\/p\u003e\n\u003cp
es. It contains no harmful acids, CFC's or solvents and is fully biodegradable.\nMO-94\nLooking for an all round wonder spray? Look no further! Muc-Off MO-94 covers all the bases with its incredible PTFE formula to quickly and effectively penetrate moisture, lubricate moving parts and leave a long lasting protective film. MO-94 prevents dirt adhesion and also drives out excess water to keep rust and corrosion at bay.\nBiodegradable Wet Lube\nMuc-Off Biodegradable Wet Chain Lube is an ultra durable, long distance bicycle chain lubricant, it’s been specifically formulated to excel over long distances in wet or muddy conditions. Our state of the art formula has been derived from natural ingredients and made completely from renewable sources. It penetrates deep into your chain link’s to provide long lasting lubrication and total protection. Our integral ’Extreme Pressure Additives’ coat every part of the link to provide a silky smooth gear change and an ultra efficient drive chain.\n\nContains Nano Tech B
ike Cleaner \nContains MO-94\nContains Biodegradable Wet Lube\n","sku": "20289","brand": {
"@type": "Thing",
"name": "Muc-Off"
},"gtin8": "PREA03112021.1622","offers": [{
"@type" : "Offer","sku": "20289","availability" : "http://schema.org/InStock",
"price" : 16.49,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/muc-off-clean-protect-and-lube-kit?variant=42133920153826"
}
]
}
data-mce-fragment=\"1\"\u003eMO-94\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eLooking for an all round wonder spray? Look no further! Muc-Off MO-94 covers all the bases with its incredible PTFE formula to quickly and effectively penetrate moisture, lubricate moving parts and leave a long lasting protective film. MO-94 prevents dirt adhesion and also drives out excess water to keep rust and corrosion at bay.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBiodegradable Wet Lube\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eMuc-Off Biodegradable Wet Chain Lube is an ultra durable, long distance bicycle chain lubricant, it’s been specifically formulated to excel over long distances in wet or muddy conditions. Our state of the art formula has been derived from natural ingredients and made completely from renewable sources. It penetrates deep into your chain link’s to provide long lasting lubrication and total protection. Our integral ’Extreme Pressure Additives’ coat every part of th
e link to provide a silky smooth gear change and an ultra efficient drive chain.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eContains Nano Tech Bike Cleaner \u003c\/li\u003e\n\u003cli\u003eContains MO-94\u003c\/li\u003e\n\u003cli\u003eContains Biodegradable Wet Lube\u003c\/li\u003e\n\u003c\/ul\u003e"}
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Muc-Off Clean, Protect and Lube Kit",
"url": "https:\/\/projektride.co.uk\/products\/muc-off-clean-protect-and-lube-kit","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1_550x.jpg?v=1639608693"
],"description": "\n Nano Tech Bike Cleaner\nMuc-Off Biodegradable Bike Cleaner has an incredibly effective cleaning formula containing 'Nano Technology' that also cares for your bike's delicate finish
<a class="product__media product__media--featured"
href="/collections/all-products/products/hire-ortlieb-40l-pannier-bags"
title="Hire Ortlieb 40L Pannier Bags"
aria-label="Hire Ortlieb 40L Pannier Bags"
style="background-image: url(//projektride.co.uk/cdn/shop/files/resize_width_1000_600x.jpg?v=1741085512)">
£8,999.00Hire Ortlieb 40L Pannier Bags
£0.00
£0.00
<
window._RestockRocketConfig = window._RestockRocketConfig || {}
// Helper function to normalize locale format from hyphen to underscore (e.g., 'en-US' -> 'en_us')
// This matches the backend's Mobility.normalize_locale behavior
// Returns empty string if locale is empty or invalid (matches original behavior)
function normalizeLocale(locale) {
if (!locale || locale.trim() === '') {
return '';
}
return locale.toString().toLowerCase().replace(/-/g, '_');
}
window._RestockRocketConfig.locale = 'en';
window._RestockRocketConfig.normalizedLocale = normalizeLocale('en');
window._RestockRocketConfig.shop = 'projektride.myshopify.com';
window._RestockRocketConfig.pageType = 'product';window._RestockRocketConfig.marketId = 382140642;window._RestockRocketConfig.countryName = 'United Kingdom';
window._RestockRocketConfig.countryIsoCode = 'GB';window._RestockRocketConfig.cartInventoryQuantity = {};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 a
ddress","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,"storefront_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_restric
78069986,43936088195298,43936093470946,43936101138658,43936107266274,43936124076258,43936124109026,43936124141794,43936124174562,43936129941730,43936129974498,43936130007266,43936142393570,43936142426338,43936142459106,43936152060130,43936152092898,43936152125666,43936193118434,43936250429666,43936255803618,43936266682594,43936266715362,43936293978338,43936294011106,43936316424418,43936316457186,43936320880866,43936320913634,43936320946402,43936327041250,43936327074018,43936327106786,43936331661538,43936332349666,43936333103330,43936351224034,43936353714402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936401522914,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,43938308817122,43938322612450,43938322645218,43938322677986,43981336051938,43981336084706,43981336117474,43981336150242,43981345587426,43981345620194,43981345652962,43981345685730,43981357580514,43981357613282,43981362462946,43981362495714,43981362528482,43981369016546,43981369049314,43981374914786,43981374947554,43981374980322,43981392904418,43981695844578,43981695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,44052906967266,44052907327714,44052907360482,44052907393250,44052907426018,44052907458786,44052907491554,44052909097186,44052909129954,44140302827746,44140302893282,44140317016290,44155590508770,44155590541538,44155594211554,44155594244322,44155594277090,44155594309858,44155594342626,44155594375394,44155594440930,44155594473698,44155594506466,44195991847138,44195991945442,44329993437410,44329993470178,44329993502946,44329993535714,44329993568482,44957136584930,44957136781538,44957136945378,45068753961186,45068753993954,45069622640866,45069622903010,45069622968546,45069750730978,45069750763746,45353010921698,45353010954466,45353010987234,45353018261730,45353018294498,45353018327266,55569712382335,55569712447871
,55569712480639,55569933074815,55570550194559,55570550227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647],"updated_at":"2025-12-08T01:22:01Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2025-12-08T01:22:00Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_sh
kground_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,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"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 }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","countdown_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":{"toastDuraYeti Cycles SB165 T-Series T3 29" / 27.5" Biketion":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.product = {"id":7467994448098,"title":"Muc-Off Clean, Protect and Lube Kit","handle":"muc-off-clean-protect-and-lube-kit","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e Nano Tech Bike Cleaner\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eMuc-Off Biodegradable Bike Cleaner has an incredibly effective cleaning formula containing 'Nano Technology' that also cares for your bike's delicate finishes. It contains no harmful acids, CFC's or solvents and is fully biodegradable.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eMO-94\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eLooking for an all round wonder spray? Look no further! Muc-Off MO-94 covers all the bases with its incredible PTFE formula to quickly and effectively penetrate moisture, lubricate moving parts and leave a long lasting protective film. MO-94 prevents dirt adhesion and also drives out excess water to keep rust and corrosion at bay.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBiodegradable Wet Lube\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eMuc-Off Biodegradable Wet Chain Lube is an ultra durable, long distance bicycle chain lubricant, it’s been specifically formulated to excel over long distances in wet or muddy conditions. Our state of the art formula has been derived from natural ingredients and made completely from renewable sources. It penetrates deep into your chain link’s to provide long lasting lubrication and total protection. Our integral ’Extreme Pressure Additives’ coat every part of the link to provide a silky smooth gear change and an ultra efficient drive chain.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eCon
tains Nano Tech Bike Cleaner \u003c\/li\u003e\n\u003cli\u003eContains MO-94\u003c\/li\u003e\n\u003cli\u003eContains Biodegradable Wet Lube\u003c\/li\u003e\n\u003c\/ul\u003e","published_at":"2024-12-08T20:03:57+00:00","created_at":"2021-12-07T17:25:36+00:00","vendor":"Muc-Off","type":"","tags":["Cleaners Degreasers and Lubrication","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":1649,"price_min":1649,"price_max":1649,"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":42133920153826,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"20289","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Muc-Off Clean, Protect and Lube Kit","public_title":null,"options":["Default Title"],"price":1649,"weight":1500,"compare_at_price":null,"inventory_management":"shopify","barcode":"PREA03112021.1622","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693","options":["Title"],"media":[{"alt":null,"id":28852728987874,"position":1,"preview_image":{"aspect_ratio":1.0,"height":550,"width":550,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693"},"aspect_ratio":1.0,"height":550,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/muc-off-wash-protect-lube-kit-dry-lube-version-21b-muf-mu-kit-0851-black-1.jpg?v=1639608693","width":550}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e Nano Tech Bike Cleaner\u003c\/p\u003e\n£8,750.00\u003cp data-mce-fragment=\"1\"\u003eMuc-Off Biodegradable Bike Cleaner has an incredibly effective cleaning formula containing 'Nano Technology' that also cares for your bike's delicate finishes. It contains no harmful acids, CFC's or solvents and is fully biodegradable.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eMO-94\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eLooking for an all round wonder spray? Look no further! Muc-Off MO-94 covers all the bases with its incredible PTFE formula to quickly and effectively penetrate moisture, lubricate moving parts and leave a long lasting protective film. MO-94 prevents dirt adhesion and also drives out excess water to keep rust and corrosion at bay.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBiodegradable Wet Lube\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eMuc-Off Biodegradable Wet Chain Lube is an ultra durable, long distance bicycle chain lubricant, it’s been specifically formulated to excel over long distances in wet or muddy
{
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-Versi
on'] = 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 = applyTranslat conditions. Our state of the art formula has been derived from natural ingredients and made completely from renewable sources. It penetrates deep into your chain link’s to provide long lasting lubrication and total protection. Our integral ’Extreme Pressure Additives’ coat every part of the link to provide a silky smooth gear change and an ultra efficient drive chain.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eContains Nano Tech Bike Cleaner \u003c\/li\u003e\n\u003cli\u003eContains MO-94\u003c\/li\u003e\n\u003cli\u003eContains Biodegradable Wet Lube\u003c\/li\u003e\n\u003c\/ul\u003e"};
window._RestockRocketConfig.variantsInventoryPolicy = {42133920153826 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {42133920153826 : parseInt("10"),};
window._RestockRocketConfig.variantsPreorderCount = {42133920153826 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {42133920153826 : null,};
window._RestockRocketConfig.variantsPreorderMaxCount
= {42133920153826 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {42133920153826 : null,};
window._RestockRocketConfig.variantsShippingText = {42133920153826 : "",};
window._RestockRocketConfig.variantsShippingTextForMarket = {42133920153826 : null,};
window._RestockRocketConfig.selected_variant_id = 42133920153826;
window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019af0d1-c518-7a22-bdbf-9ceff49063ad/restockrocket-1-402/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019af0d1-c518-7a22-bdbf-9ceff49063ad/restockrocket-1-402/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')Black;
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 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[keyBlue];
if (value !== null && value !== undefined && value !== '') {
settings[key] = value;
}
});
} else
tockRocketConfig.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
<