Hope RX24 PRO 5 - Rear
Quantity
hedSettings);
} else {
console.error('STOQ - failed to load settings:', error);
}
})
.catch(function(e) {
console.error(e)
})
}
function fetchEmbedConfig(endpoint, apply) {
return fetch(
`${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`,
{
headers: {
'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop,
'ngrok-skip-browser-warning': 'skip'
}
}
)
.then(function(response) {
if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`);
return response.json();
})
.then(function(data) {
try {
apply(data);
} catch (applyError) {
// Apply failures are programming bugs (e.g. response shape changed
// server-side and the assignment threw). Surface them as console.error
// so they're visible in browser logs, then re-throw to fall through
// to the same Liquid-cached fallback as a fetch failur
e.
console.error('STOQ - apply failed for ' + endpoint + ':', applyError);
throw applyError;
}
})
.catch(function(error) {
console.debug(`STOQ - using cached ${endpoint}:`, error.message);
});
}
function initializeScripts(settings) {
settings = applyTranslations(settings);
window._RestockRocketConfig.settings = settings;
console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`);
// Stale-Liquid resilience (per-shop opt-in via the
// `stale_cache_resilience_enabled` Toggle, surfaced through settings.json).
// When the Liquid CDN cache is older than LIQUID_CACHE_MAX_AGE the in-page
// selling_plans / integrations metafields can be wrong; refresh both from
// the API before launching scripts. Race against a 1000ms timeout so a slow
// API can't block init indefinitely. If the timeout wins, the in-flight
// fetches still complete and update window._RestockRocketConfig — the
// bundle re-reads sellingPlans/integrations on every interaction, so the
// late-arriving values benefit subsequent renders even though the first
// paint may use the Liquid-cached values. On any failure the existing
// Liquid-loaded values stay in place via fetchEmbedConfig's catch.
if (!window._RestockRocketConfig.isLiquidCacheFresh && settings.stale_cache_resilience_enabled) {
console.debug('STOQ - Liquid cache stale, refreshing selling_plans + integrations');
Promise.race([
Promise.all([
fetchEmbedConfig('selling_plans', function(data) {
if (data && Array.isArray(data.plans)) {
window._RestockRocketConfig.sellingPlans = data.plans;
window._RestockRocketConfig.disabledSellingPlanIds = data.disabled_plan_ids || [];
}
}),
fetchEmbedConfig('integrations', function(data) {
if (Array.isArray(data)) {
window._RestockRocketConfig.integrations = data;
}
})
]),
new Promise(function(resolve) { setTimeout(resolve, 1000); })
]).then(function() { loadScripts(settings); });
return;
}
loadScripts(settings);
}
function loadScripts(settings) {
// Setup cart selling plan updater BEFORE loading any scripts to avoid race conditions
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);
})
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)) {
createRestockRock
- 1
- 2
- 3
- 4
- Close 5
- 6 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.liquidRenderedAt = 1778079640;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-12-28T14:44:23.508Z","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,"storefront_button_disable_tag":"rocket-hide","theme_config":{"disableDebugLoggingForNonPreorderItem":false},"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_allowed_countries":[],"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_debug":false,"inline_form_enabled":false,"inline_form_selector":null,"inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":0,"market_setup_type":"single_market","shopify_app_id":5940125,"preorder_progress_bar_insert_selector":null,"preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","cache":true,"cached_at":"2026-01-08T16:12:13.364Z","multi_language_enabled":false,"translation_locale":"en"};window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[42140096102626,42167799447778,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,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,43938298233058,43938298265826,43938298298594,43938298331362,43938298364130,43938298396898,43938298429666,43938298462434,43938299805922,43938299838690,43938299871458,43938299904226,43938299936994,43938299969762,43938300002530,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,43981392806114,43981392838882,43981392904418,43981392937186,43981695844578,43981695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,44052906967266,44052907327714,44052907360482,44052907393250,44052907426018,44052907458786,44052907491554,44052909097186,44052909129954,44140279791842,44140279824610,44140279857378,44140279890146,44140279922914,44140292047074,44140292079842,44140292112610,44140293685474,44140302336226,44140302434530,44140302500066,44140302532834,44140302565602,44140302598370,44140302631138,44140302827746,44140302893282,44140302926050,44140315050210,44140317016290,44140321636578,44140335792354,44140335825122,44140335857890,44140339953890,44140339986658,44140340150498,44140340248802,44140340281570,44140340543714,44140340707554,44140340740322,44140340773090,44140345065698,44140352438498,44140388155618,44140388188386,44140397756642,44140404441314,44140404474082,44155590508770,44155590574306,44195991847138,44195991945442,44329993437410,44329993470178,44329993502946,44329993535714,44329993568482,44957136584930,44957136716002,44957136748770,44957136781538,44957136847074,44957136912610,44957136945378,45068753961186,45068753993954,45069622640866,45069622903010,45069622968546,45069750730978,45069750763746,45353010921698,45353010954466,45353010987234,45353018261730,45353018294498,45353018327266,46016406487266,55193312788863,55193316786559,55569712382335,55569712415103,55569712447871,55569712480639,55570017616255,55570550194559,55570550227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814967167,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2026-05-06T14:48:15Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null,"bulk_operation":true};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-05-06T14:29:24Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-05-06T14:29:24Z","shopify_market_id":382140642,"market_locations_enabled":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":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,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_enabled":true,"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_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"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,"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.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"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,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];(function() { const cachedData = {"plans":[{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,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_enabled":true,"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_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"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,"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.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"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,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}],"disabled_plan_ids":[713813721471,713176482175,714631872895],"cached_at":"2026-04-09T09:16:46Z"}; if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) { // Find the maximum updated_at from all items in old array const oldPlans = window._RestockRocketConfig.sellingPlans; const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0 ? oldPlans.reduce(function(max, plan) { // Parse dates for proper comparison (handles mixed ISO formats) 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; // Use cached if old array is empty/has no timestamps, or cached is newer // Parse dates for comparison to handle format differences (+00:00 vs .000Z) const cachedDate = new Date(cachedData.cached_at); const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : null; const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate)); if (useCached) { if (Array.isArray(cachedData.plans)) { window._RestockRocketConfig.sellingPlans = cachedData.plans; // Only use disabled_plan_ids when using cached plans window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || []; console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')'); } } else { // When using old format (stale cache), don't trust disabled_plan_ids window._RestockRocketConfig.disabledSellingPlanIds = []; console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')'); } } })();window._RestockRocketConfig.enabledNotifyMeVariantIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};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.product = {"id":14972461875583,"title":"ENVE M9 Pro MTB Wheelset","handle":"enve-m9-pro-mtb-wheelset","description":"\u003ch2 class=\"des-title\"\u003eProduct details\u003c\/h2\u003e\n\u003cdiv class=\"product-description rte\"\u003e\n\u003cp\u003eThe M9 Pro is ENVE's decisive gravity wheelset, having been developed in cooperation with Commencal\/Muc-Off, Frameworks Racing, The Union, Brendan Fairclough and other World Cup athletes and proven in competition. The M8 and M9 Pro models of the Generation 5 M Series together have podiumed at every round of this World Cup DH season.\u003c\/p\u003e\n\u003cp\u003eIt was designed to combine carbon's natural strength with the damped, quiet ride of alloy and exhibit the best ride feel and reliability for aggressive riding. Consequently, the front and rear rims are individually designed, and although they feature identical geometry, the carbon layout is different, with the front rim being more compliant, so that it supports comfort and tracking. The rear rim, meanwhile, offers effective power transfer and toughness.\u003c\/p\u003e\n\u003cp\u003eA particular goal in the M9 Pro's development was ‘no lost run’, meaning no training, quality or race runs being lost as a result of a wheel issue, and it was achieved. Henry Quinney of Pinkbike said, “We dinged a lot of rims on this test. We hit the ENVEs into many things, but they were both comfortable, compliant and, most importantly, in one piece by the end.”\u003c\/p\u003e\n\u003cp\u003eTheir durability is partly because the rims are both shallow, meaning increased vertical compliance for better shock absorption, with the M9 Pro exhibiting 77% less vertical rim stiffness and 64% less lateral stiffness than its predecessor, the M930, as well as a 10% improvement in toughness and a 20% improvement in impact resistance.\u003c\/p\u003e\n\u003cp\u003eIt's also due to a special puncture defence found only in this particular M Series model, the patented Protective Rim Strip. First introduced by ENVE in 2018, it acts as a barrier between the rim's loading edge and the tyre, practically eliminating the chance of cuts and pinch flats.\u003c\/p\u003e\n\u003cp\u003eAs well, it acts to isolate and wheel and tyre air chamber, so that if the rim is damaged, the tyre pressure will stay constant all the way to the foot of the mountain. Meanwhile, Nyloc thread-locking inserts ensure the wheelset's brass external nipples will hold firm to keep the spokes tensioned and the wheels true, even on impact. Riders are therefore freed up to ride with more confidence and choose more aggressive lines, whether while racing or on long backcountry runs. and take on long backcountry routes, knowing they'll reach the finish safely.\u003c\/p\u003e\n\u003cp\u003eThe M9 Pro wheelset also features ENVE's new Innerdrive\u003csup\u003eTM\u003c\/sup\u003e\u003cspan\u003e \u003c\/span\u003eJ-Bend Mountain Hub, with its oversized ratchet drive system and 80 tooth ratchet (as standard) to ensure reliable engagement at 4.5°. This provides greater efficiency and is low maintenance, yet easily serviceable. Its premium grade, full stainless steel bearings reduce drag, while its Perfect Preload system in turn prolongs the life of those bearings.\u003c\/p\u003e\n\u003cp\u003eAs ENVE's flagship gravity and downhill model, the M9 Pro has exhibited high real-world durability and is much less likely to fail than the brand's Gen 4 models. Durability has been prioritised over weight savings in its development, but the Protective Rim Strip means athletes can run lighter tyres, with no need for inserts to help cut down on pinch flats, which means its net weight is less than that of other wheelsets in its category.\u003c\/p\u003e\n\u003cp\u003eChoose it if you want the confidence to ride full-on enduro an d gravity trails, freeride or bike park challenges or use a heavy E-MTB, without worrying your run will be cut short by impacts. As the world's most successful wheelset in the UCI DH World Cup today, you know it will hold the trail beautifully, offering a smooth, fast ride, handling bumps with ease and speeding you on to glory.\u003c\/p\u003e\n\u003cp\u003eAvailable as a 29″ front and 29″ rear, or a 29″ front and 27″ rear set.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eENVE's flagship gravity and DH wheelset, developed in partnership with pro riders\u003c\/li\u003e\n\u003cli\u003eRecommended for all E-MTB use\u003c\/li\u003e\n\u003cli\u003eWith front and rear specific construction\u003c\/li\u003e\n\u003cli\u003eInner rim width front 29mm, hook width 6.2mm, depth 22mm, weight 720g\u003c\/li\u003e\n\u003cli\u003eInner rim width rear 29mm, hook width 6.2mm, depth 22mm, weight 715 (27″)-725g (29″)\u003c\/li\u003e\n\u003cli\u003eWith ENVE's patented Protective Rim Strip to combat pinch flats and mai ntain tyre pressure\u003c\/li\u003e\n\u003cli\u003eThe rim uses ENVE's patented Molded Spoke Hole technology, 28 hole front, 32 hole rear\u003c\/li\u003e\n\u003cli\u003eBrass external nipples, with Alpina Nyloc thread-locking inserts\u003c\/li\u003e\n\u003cli\u003eWeighs 2,236g (29″) with tape and valves\u003c\/li\u003e\n\u003cli\u003eWith ENVE 5-year Factory Warranty and Incidental Damage Protection\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"techspecs\"\u003e\n\u003ch4\u003eTechnical Specifications\u003c\/h4\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"5\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSpecification\u003c\/th\u003e\n\u003cth\u003eFront\u003c\/th\u003e\n\u003cth\u003eRear\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRim Weight\u003c\/td\u003e\n\u003ctd\u003e720g\u003c\/td\u003e\n\u003ctd\u003e725g [29\"] - 715g [27\"]\u003c\/td\
- u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWheelset Weight\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003e2236g [29\"]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eInternal Rim Width\u003c\/td\u003e\n\u003ctd\u003e29mm\u003c\/td\u003e\n\u003ctd\u003e29mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHook Width\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003e6.2mm [includes protective rim strip]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHole Count\u003c\/td\u003e\n\u003ctd\u003e28\u003c\/td\u003e\n\u003ctd\u003e32\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDepth\u003c\/td\u003e\n\u003ctd\u003e22mm\u003c\/td\u003e\n\u003ctd\u003e22mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePinch Flat Technology\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003eProtective Rim Strip\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpokes\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003eSprint J-Bend\u003c\/td \u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpoke Length (Innerdrive Hub)\u003c\/td\u003e\n\u003ctd\u003e300 DS \/ 298 NDS\u003c\/td\u003e\n\u003ctd\u003e292 DS \/ 296 NDS [29\"] - 274 DS \/ 276 NDS [27\"]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNipples\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003eAlpina Nylock Alloy External\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpoke Tension\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003e100kgf\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eBrake Type\u003c\/td\u003e\n\u003ctd\u003eCenterlock Boost \/ 6-Bolt 20x110mm\u003c\/td\u003e\n\u003ctd\u003eCenterlock Boost \/ 6-Bolt Super Boost\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eERD\u003c\/td\u003e\n\u003ctd\u003e606mm\u003c\/td\u003e\n\u003ctd\u003e603mm [29\"] - 586mm [27\"]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e","published_at":"2025-03-08T12:41:35+00:00","created_at":"2025-03-08T12:41:35+00:00","vendor":"Enve","type":"wheels","tags":["M9 PRO Wheels","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":250000,"price_min":250000,"price_max":250000,"available":false,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":55177469165951,"title":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Micro Spline","option1":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Micro Spline","option2":null,"option3":null,"sku":"EN165M91651002324002","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Micro Spline","public_title":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Micro Spline","options":["Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Micro Spline"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"sell ing_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469198719,"title":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Shimano HG","option1":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Shimano HG","option2":null,"option3":null,"sku":"EN165M9165100232400210","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Shimano HG","public_title":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Shimano HG","options":["Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 Shimano HG"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469231487,"title":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 XD","option1":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 XD","option2":null,"option3":null,"sku":"EN165M91651002324003","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 XD","public_title":"Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 XD","options":["Front 29\" Rear 29\"\tCL 110x15 \/ 148x12 XD"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469264255,"title":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Micro Spline","option1":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Micro Spline","option2":null,"option3":null,"sku":"EN165M91651002324004","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Micro Spline","public_title":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Micro Spline","options":["Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Micro Spline"],"price":250000,"weight":0,"compare_at_pri7 ce":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469297023,"title":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Shimano HG","option1":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Shimano HG","option2":null,"option3":null,"sku":"EN165M9165100232400410","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Shimano HG","public_title":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Shimano HG","options":["Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 Shimano HG"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469329791,"title":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 XD","option1":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 XD","option2":null,"option3":null,"sku":"EN165M91651002324005","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 XD","public_title":"Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 XD","options":["Front 29\" Rear 29\"\tCL 110x15 \/ 157x12 XD"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469362559,"title":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Micro Spline","option1":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Micro Spline","option2":null,"option3":null,"sku":"EN165M91651002324006","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Micro Spline","public_title":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Micro Spline","options":["Front 29 \" Rear 27\"\tCL 110x15 \/ 148x12 Micro Spline"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469395327,"title":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Shimano HG","option1":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Shimano HG","option2":null,"option3":null,"sku":"EN165M9165100232400610","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Shimano HG","public_title":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Shimano HG","options":["Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 Shimano HG"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469428095,"title":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 XD","option1":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 XD","option2":null,"option3":null,"sku":"EN165M91651002324007","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 XD","public_title":"Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 XD","options":["Front 29\" Rear 27\"\tCL 110x15 \/ 148x12 XD"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469460863,"title":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Micro Spline","option1":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Micro Spline","option2":null,"option3":null,"sku":"EN165M91651002324008","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Micro Spline","p ublic_title":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Micro Spline","options":["Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Micro Spline"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469493631,"title":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Shimano HG","option1":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Shimano HG","option2":null,"option3":null,"sku":"EN165M9165100232400810","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Shimano HG","public_title":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Shimano HG","options":["Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 Shimano HG"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quan
- tity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469526399,"title":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 XD","option1":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 XD","option2":null,"option3":null,"sku":"EN165M91651002324009","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 XD","public_title":"Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 XD","options":["Front 29\" Rear 27\"\tCL 110x15 \/ 157x12 XD"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469559167,"title":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Micro Spline","option1":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Micro Spline","option2":null,"option3":null,"sku":"EN165M91651002324011","requires_shipping":true,"taxable":true,"featured_image":null,"available":fal se,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Micro Spline","public_title":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Micro Spline","options":["Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Micro Spline"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469591935,"title":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Shimano HG","option1":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Shimano HG","option2":null,"option3":null,"sku":"EN165M9165100232401110","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Shimano HG","public_title":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Shimano HG","options":["Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 Shimano HG"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469624703,"title":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 XD","option1":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 XD","option2":null,"option3":null,"sku":"EN165M91651002324012","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 XD","public_title":"Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 XD","options":["Front 29\" Rear 29\"\t6Bolt 110x20 \/ 157x12 XD"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469657471,"title":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Micro Spline","option1":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Micro Spline"," option2":null,"option3":null,"sku":"EN165M91651002324013","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Micro Spline","public_title":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Micro Spline","options":["Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Micro Spline"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469690239,"title":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Shimano HG","option1":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Shimano HG","option2":null,"option3":null,"sku":"EN165M9165100232401310","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Shimano HG","public_title":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Shimano HG","options":["Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 Shimano HG"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":55177469723007,"title":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 XD","option1":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 XD","option2":null,"option3":null,"sku":"EN165M91651002324014","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"ENVE M9 Pro MTB Wheelset - Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 XD","public_title":"Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 XD","options":["Front 29\" Rear 27\"\t6Bolt 110x20 \/ 157x12 XD"],"price":250000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/projektri8 de.co.uk\/cdn\/shop\/files\/en165m91651002324003_1_9h2m3d.webp?v=1741437357","\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_3_9h2lij.webp?v=1741437362","\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_2_9h2may.webp?v=1741437368"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_1_9h2m3d.webp?v=1741437357","options":["Size"],"media":[{"alt":null,"id":64619254972799,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_1_9h2m3d.webp?v=1741437357"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_1_9h2m3d.webp?v=1741437357","width":1600},{"alt":null,"id":64619255464319,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_3_9h2lij.webp?v=1741437362"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_3_9h2lij.webp?v=1741437362","width":1600},{"alt":null,"id":64619256349055,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1600,"width":1600,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_2_9h2may.webp?v=1741437368"},"aspect_ratio":1.0,"height":1600,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/en165m91651002324003_2_9h2may.webp?v=1741437368","width":1600}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003ch2 class=\"des-title\"\u003eProduct details\u003c\/h2\u003e\n\u003cdiv class=\"product-description rte\"\u003e\n\u003cp\u003eThe M9 Pro is ENVE's decisive gravity wheelset, having been developed in cooperation with Commencal\/Muc-Off, Frameworks Racing, The Union, Brendan Fairclough and other World Cup athletes and proven in competition. The M8 and M9 Pro models of the Generation 5 M Series together have podiumed at every round of this World Cup DH season.\u003c \/p\u003e\n\u003cp\u003eIt was designed to combine carbon's natural strength with the damped, quiet ride of alloy and exhibit the best ride feel and reliability for aggressive riding. Consequently, the front and rear rims are individually designed, and although they feature identical geometry, the carbon layout is different, with the front rim being more compliant, so that it supports comfort and tracking. The rear rim, meanwhile, offers effective power transfer and toughness.\u003c\/p\u003e\n\u003cp\u003eA particular goal in the M9 Pro's development was ‘no lost run’, meaning no training, quality or race runs being lost as a result of a wheel issue, and it was achieved. Henry Quinney of Pinkbike said, “We dinged a lot of rims on this test. We hit the ENVEs into many things, but they were both comfortable, compliant and, most importantly, in one piece by the end.”\u003c\/p\u003e\n\u003cp\u003eTheir durability is partly because the rims are both shallow, meaning increased vertical compliance for better shock absorption, with the M9 Pro exhibiting 77% less vertical rim stiffness and 64% less lateral stiffness than its predecessor, the M930, as well as a 10% improvement in toughness and a 20% improvement in impact resistance.\u003c\/p\u003e\n\u003cp\u003eIt's also due to a special puncture defence found only in this particular M Series model, the patented Protective Rim Strip. First introduced by ENVE in 2018, it acts as a barrier between the rim's loading edge and the tyre, practically eliminating the chance of cuts and pinch flats.\u003c\/p\u003e\n\u003cp\u003eAs well, it acts to isolate and wheel and tyre air chamber, so that if the rim is damaged, the tyre pressure will stay constant all the way to the foot of the mountain. Meanwhile, Nyloc thread-locking inserts ensure the wheelset's brass external nipples will hold firm to keep the spokes tensioned and the wheels true, even on impact. Riders are therefore freed up to ride with more confidence and choose more aggressive lines, whether while racing or on long backcountry runs. and take on long backcountry routes, knowing they'll reach the finish safely.\u003c\/p\u003e\n\u003cp\u003eThe M9 Pro wheelset also features ENVE's new Innerdrive\u003csup\u003eTM\u003c\/sup\u003e\u003cspan\u003e \u003c\/span\u003eJ-Bend Mountain Hub, with its oversized ratchet drive system and 80 tooth ratchet (as standard) to ensure reliable engagement at 4.5°. This provides greater efficiency and is low maintenance, yet easily serviceable. Its premium grade, full stainless steel bearings reduce drag, while its Perfect Preload system in turn prolongs the life of those bearings.\u003c\/p\u003e\n\u003cp\u003eAs ENVE's flagship gravity and downhill model, the M9 Pro has exhibited high real-world durability and is much less likely to fail than the brand's Gen 4 models. Durability has been prioritised over weight savings in its development, but the Protective Rim Strip means athletes can run lighter tyres, with no need for inserts to help cut down on pinch flats, which means its net wei
- ght is less than that of other wheelsets in its category.\u003c\/p\u003e\n\u003cp\u003eChoose it if you want the confidence to ride full-on enduro and gravity trails, freeride or bike park challenges or use a heavy E-MTB, without worrying your run will be cut short by impacts. As the world's most successful wheelset in the UCI DH World Cup today, you know it will hold the trail beautifully, offering a smooth, fast ride, handling bumps with ease and speeding you on to glory.\u003c\/p\u003e\n\u003cp\u003eAvailable as a 29″ front and 29″ rear, or a 29″ front and 27″ rear set.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eENVE's flagship gravity and DH wheelset, developed in partnership with pro riders\u003c\/li\u003e\n\u003cli\u003eRecommended for all E-MTB use\u003c\/li\u003e\n\u003cli\u003eWith front and rear specific construction\u003c\/li\u003e\n\u003cli\u003eInner rim width front 29mm, hook width 6.2mm, depth 22mm, weight 720g\u003c\/li\u003e\n\u003cli\u003eInner rim width rear 29mm, hook width 6.2m m, depth 22mm, weight 715 (27″)-725g (29″)\u003c\/li\u003e\n\u003cli\u003eWith ENVE's patented Protective Rim Strip to combat pinch flats and maintain tyre pressure\u003c\/li\u003e\n\u003cli\u003eThe rim uses ENVE's patented Molded Spoke Hole technology, 28 hole front, 32 hole rear\u003c\/li\u003e\n\u003cli\u003eBrass external nipples, with Alpina Nyloc thread-locking inserts\u003c\/li\u003e\n\u003cli\u003eWeighs 2,236g (29″) with tape and valves\u003c\/li\u003e\n\u003cli\u003eWith ENVE 5-year Factory Warranty and Incidental Damage Protection\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"techspecs\"\u003e\n\u003ch4\u003eTechnical Specifications\u003c\/h4\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"5\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSpecification\u003c\/th\u003e\n\u003cth\u003eFront\u003c\/th\u003e\n\u003cth\u003eRear\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eRim Weight\u003c\/td\u003e\n\u003ctd\u003e720g\u003c\/td\u003e\n\u003ctd\u003e725g [29\"] - 715g [27\"]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWheelset Weight\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003e2236g [29\"]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eInternal Rim Width\u003c\/td\u003e\n\u003ctd\u003e29mm\u003c\/td\u003e\n\u003ctd\u003e29mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHook Width\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003e6.2mm [includes protective rim strip]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHole Count\u003c\/td\u003e\n\u003ctd\u003e28\u003c\/td\u003e\n\u003ctd\u003e32\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDepth\u003c\/td\u003e\n\u003ctd\u003e22mm\u003c\/td\u003e\n\u003ctd\u003e22mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePinch Flat Technology\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003eProtective R im Strip\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpokes\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003eSprint J-Bend\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpoke Length (Innerdrive Hub)\u003c\/td\u003e\n\u003ctd\u003e300 DS \/ 298 NDS\u003c\/td\u003e\n\u003ctd\u003e292 DS \/ 296 NDS [29\"] - 274 DS \/ 276 NDS [27\"]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNipples\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003eAlpina Nylock Alloy External\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSpoke Tension\u003c\/td\u003e\n\u003ctd colspan=\"2\"\u003e100kgf\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eBrake Type\u003c\/td\u003e\n\u003ctd\u003eCenterlock Boost \/ 6-Bolt 20x110mm\u003c\/td\u003e\n\u003ctd\u003eCenterlock Boost \/ 6-Bolt Super Boost\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eERD\u003c\/td\u003e\n\u003ctd\u003e606mm\u003c\/td\u003e\n\u003ctd\u003e603mm [29\"] - 586mm [27\"]\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {55177469165951 : "deny",55177469198719 : "deny",55177469231487 : "deny",55177469264255 : "deny",55177469297023 : "deny",55177469329791 : "deny",55177469362559 : "deny",55177469395327 : "deny",55177469428095 : "deny",55177469460863 : "deny",55177469493631 : "deny",55177469526399 : "deny",55177469559167 : "deny",55177469591935 : "deny",55177469624703 : "deny",55177469657471 : "deny",55177469690239 : "deny",55177469723007 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {55177469165951 : parseInt("0"),55177469198719 : parseInt("0"),55177469231487 : parseInt("0"),55177469264255 : parseInt("0"),55177469297023 : parseInt("0"),55177469329791 : parseInt("0"),55177469362559 : parseInt("0"),55177469395327 : parseInt("0"),55177469428095 : parseInt("0"),55177469460863 : parseInt("0"),55177469493631 : parseInt("0"),55177469526399 : parseInt("0"),9 55177469559167 : parseInt("0"),55177469591935 : parseInt("0"),55177469624703 : parseInt("0"),55177469657471 : parseInt("0"),55177469690239 : parseInt("0"),55177469723007 : parseInt("0"),}; window._RestockRocketConfig.variantsPreorderCount = {55177469165951 : parseInt(""),55177469198719 : parseInt(""),55177469231487 : parseInt(""),55177469264255 : parseInt(""),55177469297023 : parseInt(""),55177469329791 : parseInt(""),55177469362559 : parseInt(""),55177469395327 : parseInt(""),55177469428095 : parseInt(""),55177469460863 : parseInt(""),55177469493631 : parseInt(""),55177469526399 : parseInt(""),55177469559167 : parseInt(""),55177469591935 : parseInt(""),55177469624703 : parseInt(""),55177469657471 : parseInt(""),55177469690239 : parseInt(""),55177469723007 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {55177469165951 : null,55177469198719 : null,55177469231487 : null,55177469264255 : null,55177469297023 : null,55177469329791 : null,55177469362559 : null,55177469395327 : null,55177469428095 : null,55177469460863 : null,55177469493631 : null,55177469526399 : null,55177469559167 : null,55177469591935 : null,55177469624703 : null,55177469657471 : null,55177469690239 : null,55177469723007 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {55177469165951 : parseInt(""),55177469198719 : parseInt(""),55177469231487 : parseInt(""),55177469264255 : parseInt(""),55177469297023 : parseInt(""),55177469329791 : parseInt(""),55177469362559 : parseInt(""),55177469395327 : parseInt(""),55177469428095 : parseInt(""),55177469460863 : parseInt(""),55177469493631 : parseInt(""),55177469526399 : parseInt(""),55177469559167 : parseInt(""),55177469591935 : parseInt(""),55177469624703 : parseInt(""),55177469657471 : parseInt(""),55177469690239 : parseInt(""),55177469723007 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {55177469165951 : null,55177469198719 : null,55177469231487 : null,55177469264255 : null,55177469297023 : null,551774693297 91 : null,55177469362559 : null,55177469395327 : null,55177469428095 : null,55177469460863 : null,55177469493631 : null,55177469526399 : null,55177469559167 : null,55177469591935 : null,55177469624703 : null,55177469657471 : null,55177469690239 : null,55177469723007 : null,}; window._RestockRocketConfig.variantsShippingText = {55177469165951 : "",55177469198719 : "",55177469231487 : "",55177469264255 : "",55177469297023 : "",55177469329791 : "",55177469362559 : "",55177469395327 : "",55177469428095 : "",55177469460863 : "",55177469493631 : "",55177469526399 : "",55177469559167 : "",55177469591935 : "",55177469624703 : "",55177469657471 : "",55177469690239 : "",55177469723007 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {55177469165951 : null,55177469198719 : null,55177469231487 : null,55177469264255 : null,55177469297023 : null,55177469329791 : null,55177469362559 : null,55177469395327 : null,55177469428095 : null,55177469460863 : null,55177469493631 : null,55177469526399 : null,55177469559167 : null,55177469591935 : null,55177469624703 : null,55177469657471 : null,55177469690239 : null,55177469723007 : null,}; window._RestockRocketConfig.selected_variant_id = 55177469165951; 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/019dfd84-ac1e-7ad8-a337-a8178988c5c3/restockrocket-1-500/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019dfd84-ac1e-7ad8-a337-a8178988c5c3/restockrocket-1-500/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 SETTIN GS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds const LIQUID_CACHE_MAX_AGE = 15 * 60; // 15 minutes in seconds // Calculate Liquid cache freshness once at initialization const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; // Validate timestamp and calculate cache age if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { const now = Math.floor(Date.now() / 1000); // Current time in seconds const liquidCacheAge = now - liquidRenderedAt; // Age in seconds // Handle client clock ahead of server 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; } // 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 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 10 +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; } } // Setup event listener for cart selling plan updates // This must be called before any scripts are loaded to avoid race conditions function setupCartSellingPlanUpdater(settings) { // Setup listener regardless - updateCartSellingPlans has its own guards // This ensures cleanup happens even when preorders are disabled globally // Listen for stoq:inventory-data-loaded event dispatched by api.js window.addEventListener('stoq:inventory-data-loaded', function(event) { console.debug('STOQ - Inventory data loaded, updating cart selling plans'); if (window._RestockRocket
Our new RX24 tubeless ready gravel alloy wheelset allows you to adventure further into the world of gravel and bikepacking, with the comfort of wider tyres and higher system weight than our existing 20FIVE wheels. The 24mm inner rim width allows for compatibility with high volume tyres up to a maximum width of 60mm. The wheels are supplied fully taped with our new tubeless tape and fitted with our brand-new alloy tubeless valves, colour matched to your hub, so they are ready for tyre fitting straight out of the box.
Key Features
>> Available in standard and boost widths built around our Pro 5 hubs
>> 700C diameter in 24 hole, 28 hole and 32 hole
>> Premium welded rim construction in Al 6069
>> Shot peened and black anodised
>> Neutral grey water slide decals
>> Brass nipples for long term durability
>> Black Sapim Race double butted spokes
>> 24mm inner rim width
>> 23mm rim height
>> Disc brake only
>> Recommended maximum system weight: 130kg
>> Weight: From 1780g per pair
Frequently Asked Questions
-
Please get in touch with a member of the team either by phone (01313745324) or email ([email protected]) where on of the team will be more than happy to help.
ProjektRide Bike Shop Edinburgh
-
If the item is showing in stock, we aim to post the product within 24 hours. Please allow 5 working days to receive the item.
Postage is free on orders over £50. Orders under £50, our postage charge is £3.99.
We also have a physical store, if you are local please pop in -
ProjektRide Bike Shop Edinburgh










