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],"cached_at":"2026-02-18T08:36:42Z"};
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
wi
<
Genesis= 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
age = Date.now() - updatedAt.getTime();
if (age
Please get in touch with a member of the team either by phone (
Axles 12mm x 100mm front and 12mm x 142mm The Robert Axle Project bolt thru<img src="//projektride.co.uk/cdn/shop/files/Screenshot2023-06-25at11.50.29_2048x2048.png?v=16801313745324
img src="//projektride.co.uk/cdn/shop/files/Yourparagraphtext_2048x2048.png?v=1747481130" alt="HIRE - BIKE PACKING BUNDLE" class="mfp-zoom-in-cur" id="65817952059775">
Bottom bracket Standard BSA
Mudguards and rack mounts compatible
Services
Brake mount: Flat mount 140mm or 160mm rotors
img src="//projektride.co.uk/cdn/shop/files/resize_width_1000_1296x_d1ffd242-63bc-4a9f-85e2-400f274532d7_2048x2048.jpg?v=1747481423" alt="HIRE - BIKE PACKING BUNDLE" class="mfp-zoom-in-cur" id="65817987580287">
Seat tube internal 27.2mm & Seat tube external 31.8
Frame Tyre clearance 700 x 45c
img src="//projektride.co.uk/cdn/shop/files/71BUhqY7apL._AC_UF894_1000_QL80_-removebg-preview_2048x2048.png?v=1747481437" alt="HIRE - BIKE PACKING BUNDLE" class="mfp-zoom-in-cur" id="65817992462719">
Track Your Service
<
label for="quantity--template--15326745395426__main">Quantity
Tubeless
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "BACKCOUNTRY TOP TUBE PACK (1L)",
"url": "https:\/\/projektride.co.uk\/products\/backcountry-top-tube-pack-1l","image": [
"https:\/\/projektride.co.uk\/cdn\/shop\/files\/Screenshot2023-06-25at11.50.29_1234x.png?v=1687690235"
],"description": "\n\n\nA streamlined and secure space to store frequently used items over rough terrain. \nThe Backcountry Top Tube Pack is a convenient space to store frequently used items, whether navigating a challenging trail or on a daily commute.\nThis mountain bike top tube bag is ideal for stashing snacks, light valuables and electronic devices. It securely attaches to the top tube with Hypalon-reinforced velcro straps that minimise abrasion on the frame. A one-finger zipper puller allows easy access on the move, while the full-length fully waterproof zipper safeguards contents against water and dirt when closed.\nThe top tube bag is also padded with closed cell foam to safeguard items against impact and features an internal pocket for organisation and a battery lead port for charging electronic devices on the go.\n\n\n\nTECHNICAL\n\n\nMaterials\nThe Backcountry Top Tube Pack is made from Dimension-Polyant VX21, a four-layer laminated fabric originally developed for the maritime industry and our proprietary 420D nylon; a rugged fabric made to our own exacting specifications for durability and waterproofing.\nDesigned to fit the demands of off-road riding, these materials offer full waterproofing, light weight, low stretch, and high abrasion and tear resistance. Notably, it’s welded together at the seams, creating a watertight seal that ensures the top tube bag remains completely waterproof.\nCare\nHand wash, using a mild diluted soap if necessary. Afterwards, let it air dry.\nDo not machine wash, machine dry, or iron.\n\n","sku": "TBM","brand": {
"@type": "Thing",
"name": "Apidura"
},"gtin8": "","offers": [{
"@type" : "Offer","sku": "TBM","availability" : "http://schema.org/InStock",
"price" : 50.0,
"priceCurrency" : "GBP",
"url" : "https:\/\/projektride.co.uk\/products\/backcountry-top-tube-pack-1l?variant=44140339953890"
}
]
}
72
Product Details