Part of the #carryeverything range, our rackless saddle bag connects securely to your seatpost for bike packing, touring or commuting. With no mounts or screws, the bag attaches in seconds to any bike. The holster fits up to a 14 litre dry bag and is secured with a patented magnetic buckle that’s easy to adjust, even whilst wearing gloves.
The bag is hardcase for easy loading and is fastened with reflective military paracord and reinforced eyelets. Made from textured nylon and with nylon webbing for extra strength, this product is made to last.
Hand made in our Yorkshire workshop, all bags are finished with the classic Restrap label, made from vegan-friendly PU.
{"@context":"http:\/\/schema.org\/","@id":"\/products\/restrap-saddle-bag-14-litres#product","@type":"Product","brand":{"@type":"Brand","name":"Restrap"},"category":"Bicycle Bags","description":"Part of the #carryeverything range, our rackless saddle bag connects securely to your seatpost for bike packing, touring or commuting. With no mounts or screws, the bag attaches in seconds to any bike. The holster fits up to a 14 litre dry bag and is secured with a patented magnetic buckle that’s easy to adjust, even whilst wearing gloves.The bag is hardcase for easy loading and is fastened with reflective military paracord and reinforced eyelets. Made from textured nylon and with nylon webbing for extra strength, this product is made to last.Hand made in our Yorkshire workshop, all bags are finished with the classic Restrap label, made from vegan-friendly PU.Weight - 630gCapacity - 14 LitresRRP - £119.99 \/ 143.99€ \/ $179.99(14 Litre version with dry bag included)","image":"https:\/\/projektride.co.uk\/cdn\/shop\/files\/RS_SB1_LRG_BLK_SaddleBag_14Litres_Black.jpg?v=1727778344\u0026width=1920","name":"Restrap Saddle Bag (14 Litres)","offers":{"@id":"\/products\/restrap-saddle-bag-14-litres?variant=46015911788770#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"119.99","priceCurrency":"GBP","url":"https:\/\/projektride.co.uk\/products\/restrap-saddle-bag-14-litres?variant=46015911788770"},"url":"https:\/\/projektride.co.uk\/products\/restrap-saddle-bag-14-litres"}
uuid>/
-<
version>/assets/...
// Trailing digits (e.g. ".../restockrocket-1-521/assets/" -> "521"). Kept numeric to
// match ParseStoqData, so funnel app_version lines up with the order-attribution
// app_version. Reflects the ACTUAL deployed build. This is the SINGLE source of the
// parsed version — preorder.js getAppVersion() reads it back off config rather than
// re-parsing, so the regex lives in exactly one place.
try {
const _stoqVersionMatch = window._RestockRocketConfig.scriptHost.match(/(\d+)\/?(?:assets\/?)?$/);
window._RestockRocketConfig.appVersion = (_stoqVersionMatch && _stoqVersionMatch[1]) || '';
} catch (e) {
window._RestockRocketConfig.appVersion = '';
}
const SETTINGS_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 ca 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
<