d_image":null,"available":false,"name":"Yeti Cycles SB165 T-Series 29\" \/ 27.5\" Frame - Teal \/ Small","public_title":"Teal \/ Small","options":["Teal","Small"],"price":469900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":55211123016063,"title":"Teal \/ Medium","option1":"Teal","option2":"Medium","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Yeti Cycles SB165 T-Series 29\" \/ 27.5\" Frame - Teal \/ Medium","public_title":"Teal \/ Medium","options":["Teal","Medium"],"price":469900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":55211123048831,"title":"Teal \/ Large","option1":"Teal","option2":"Large","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Yeti Cycles SB165 T-Series
\/ Extra Small","public_title":"Black \/ Extra Small","options":["Black","Extra Small"],"price":469900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":55211123147135,"title":"Black \/ Small","option1":"Black","option2":"Small","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Yeti Cycles SB165 T-Series 29\" \/ 27.5\" Frame - Black \/ Small","public_title":"Black \/ Small","options":["Black","Small"],"price":469900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":55211123179903,"title":"Black \/ Medium","option1":"Black","option2":"Medium","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Yeti Cycles SB165 T-Series 29\" \/ 27.5\" Frame - Black \/ Medium","public_title":"Black \/ Mediu
"price":469900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/ycf25167traw_1_1.webp?v=1742310727","\/\/projektride.co.uk\/cdn\/shop\/files\/ycf25167tspru_1.webp?v=1742310727"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/ycf25167traw_1_1.webp?v=1742310727","options":["Colour","Size"],"media":[{"alt":null,"id":64808393703807,"position":1,"preview_image":{"aspect_ratio":0.837,"height":833,"width":697,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/ycf25167traw_1_1.webp?v=1742310727"},"aspect_ratio":0.837,"height":833,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/ycf25167traw_1_1.webp?v=1742310727","width":697},{"alt":null,"id":64808393736575,"position":2,"preview_image":{"aspect_ratio":0.837,"height":833,"width":697,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/ycf25167tspru_1.webp?v=1742310727"},"aspect_ratio":0.837,"height"
Quantity: ime and again at Rampage, reconfigured to fit the bill as Zero-Hesitation Go-To for whatever your pleasure. Un-rack it for all the park laps, pedal it on character-building epics, push it up spooky steep darksides “nobody†knows about. Whatever the question, unhard your decisions.\u003cspan\u003e \u003c\/span\u003e\u003cspan\u003eYOU ASK. IT GIVES.\u003c\/span\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"Yeti-Text_Feature-Box-BG\"\u003e\n\u003cdiv class=\"feature-box\"\u003e\n\u003cp class=\"feature-box_value\"\u003e165\u003cspan\u003eMM\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"feature-box_value-type\"\u003eFRAME TRAVEL\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cspan\u003e \u003c\/span\u003e\n\u003cdiv class=\"feature-box\"\u003e\n\u003cp class=\"feature-box_value\"\u003e170\u003cspan\u003eMM\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"feature-box_value-type\"\u003eFORK TRAVEL\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cspan\u003e \u003c\/span\u003e\nCustom Builds for sale
003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"Yeti-Text_Highlights-BG_165MX\"\u003e\n\u003cdiv class=\"Yeti-Text_Highlights-Text\"\u003e\n\u003cp class=\"Yeti-Title\"\u003eHIGHLIGHTS\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFox Factory 38 Grip 2 and Fox Factory DHX2 shock\u003c\/li\u003e\n\u003cli\u003eFox Transfer dropper post\u003c\/li\u003e\n\u003cli\u003eMX DT Swiss EX1700 custom wheelset\u003c\/li\u003e\n\u003cli\u003e4 piston brakes\u003c\/li\u003e\n\u003cli\u003eODI Elite Pro grips\u003c\/li\u003e\n\u003cli\u003e220mm front and 200mm rear rotors\u003c\/li\u003e\n\u003cli\u003eMaxxis Assegai 2.5 and DHR II 2.4 EXO+ tyres\u003c\/li\u003e\n\u003cli\u003eSLS Coil Spring on frame only\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"Yeti-Text_Frame-Highlights-BG_165MX\"\u003e\n\u003cdiv class=\"Yeti-Text_Frame-Highlights-Text\"\u003e\n\u003cp class=\"Yeti-Title\"\u003eFRAME HIGHLIGHTS\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e63.5-degree hea
1"\u003eYOU ASK. IT GIVES.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"Yeti-Text_Size-Guide-BG\"\u003e\n\u003cdiv class=\"Yeti-Text_Size-Guide-Text\"\u003e\n\u003cp class=\"Yeti-Title\"\u003eSIZE GUIDE\u003c\/p\u003e\n\u003cdiv id=\"sizechart\"\u003e\n\u003ctable id=\"sizechart\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd id=\"sizechart\"\u003e\u003cstrong\u003eSMALL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e5'1\" - 5'7\"\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd id=\"sizechart\"\u003e\u003cstrong\u003eMEDIUM\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e5'5\" - 5'11\"\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e\u003c\/td\u003e\n\u003ctd id=\"sizechart\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u
hreaded bottom bracket, fully enclosed internal cable routing, 148mm x 12mm BOOST dropouts, integrated derailleur hanger and axle.\u003c\/p\u003e\n\u003ctable class=\"YetiSpec\"\u003e\n\u003ctbody\u003e\n\u003ctr class=\"a\"\u003e\n\u003ctd\u003eFRAME\u003c\/td\u003e\n\u003ctd\u003eTURQ SERIES\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"b\"\u003e\n\u003ctd\u003eSHOCK\u003c\/td\u003e\n\u003ctd\u003eFOX FACTORY DHX2 2 POS LEVER (SM:400 MD:450 LG:500 XL:550 STEEL)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cbr\u003e\n\u003cp class=\"Yeti-Spec_text\"\u003e\u003ci\u003ePlease note: Specifications are subject to change without notice.\u003c\/i\u003e\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n\u003cp class=\"Yeti-Title\"\u003eGEOMETRY\u003c\/p\u003e\n\u003cp class=\"Yeti-Spec_text\"\u003eAll measurements are shown in millimetres.\u003c\/p\u003e\n\u003cdiv\u003e\u003cpicture\u003e\u003csource type=\"image\/webp\" srcset=\"https:\/\/www.silverfish-uk.com\/media\/.rendiCustom Build Inspiration
TOP TUBE LENGTH\u003c\/td\u003e\n\u003ctd\u003e573\u003c\/td\u003e\n\u003ctd\u003e604\u003c\/td\u003e\n\u003ctd\u003e625\u003c\/td\u003e\n\u003ctd\u003e653\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"b\"\u003e\n\u003ctd\u003eC\u003c\/td\u003e\n\u003ctd\u003eHEAD TUBE ANGLE\u003c\/td\u003e\n\u003ctd\u003e63.5\u003c\/td\u003e\n\u003ctd\u003e63.5\u003c\/td\u003e\n\u003ctd\u003e63.5\u003c\/td\u003e\n\u003ctd\u003e63.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a\"\u003e\n\u003ctd\u003eD\u003c\/td\u003e\n\u003ctd\u003eEFF. SEAT TUBE ANGLE\u003c\/td\u003e\n\u003ctd\u003e76.8\u003c\/td\u003e\n\u003ctd\u003e76.9\u003c\/td\u003e\n\u003ctd\u003e76.9\u003c\/td\u003e\n\u003ctd\u003e76.9\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"b\"\u003e\n\u003ctd\u003eE\u003c\/td\u003e\n\u003ctd\u003eCHAINSTAY LENGTH\u003c\/td\u003e\n\u003ctd\u003e433\u003c\/td\u003e\n\u003ctd\u003e435\u003c\/td\u003e\n\u003ctd\u003e437\u003c\/td\u003e\n\u003ctd\u003e439\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a\"\
3c\/tr\u003e\n\u003ctr class=\"a\"\u003e\n\u003ctd\u003eJ\u003c\/td\u003e\n\u003ctd\u003eFORK (AXLE TO CROWN)\u003c\/td\u003e\n\u003ctd\u003e588\u003c\/td\u003e\n\u003ctd\u003e588\u003c\/td\u003e\n\u003ctd\u003e588\u003c\/td\u003e\n\u003ctd\u003e588\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"b\"\u003e\n\u003ctd\u003eK\u003c\/td\u003e\n\u003ctd\u003eFORK (OFFSET)\u003c\/td\u003e\n\u003ctd\u003e44\u003c\/td\u003e\n\u003ctd\u003e44\u003c\/td\u003e\n\u003ctd\u003e44\u003c\/td\u003e\n\u003ctd\u003e44\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a\"\u003e\n\u003ctd\u003eL\u003c\/td\u003e\n\u003ctd\u003eSTACK\u003c\/td\u003e\n\u003ctd\u003e620\u003c\/td\u003e\n\u003ctd\u003e625\u003c\/td\u003e\n\u003ctd\u003e630\u003c\/td\u003e\n\u003ctd\u003e640\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"b\"\u003e\n\u003ctd\u003eM\u003c\/td\u003e\n\u003ctd\u003eREACH\u003c\/td\u003e\n\u003ctd\u003e430\u003c\/td\u003e\n\u003ctd\u003e460\u003c\/td\u003e\n\u003ctd\u003e480\u003c\/td\u003e\n\u003ctd\u003e505\u0
1+27 : parseInt("0"),55211122983295 : parseInt("0"),55211123016063 : parseInt("0"),55211123048831 : parseInt("0"),55211123081599 : parseInt("0"),55211123114367 : parseInt("0"),55211123147135 : parseInt("0"),55211123179903 : parseInt("0"),55211123212671 : parseInt("0"),55211123245439 : parseInt("0"),};
window._RestockRocketConfig.variantsPreorderCount = {55211122950527 : parseInt(""),55211122983295 : parseInt(""),55211123016063 : parseInt(""),55211123048831 : parseInt(""),55211123081599 : parseInt(""),55211123114367 : parseInt(""),55211123147135 : parseInt(""),55211123179903 : parseInt(""),55211123212671 : parseInt(""),55211123245439 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {55211122950527 : null,55211122983295 : null,55211123016063 : null,55211123048831 : null,55211123081599 : null,55211123114367 : null,55211123147135 : null,55211123179903 : null,55211123212671 : null,55211123245439 : null,};
window._RestockRocketConfig.variantsPreorderMaxCount = {55211122950527
14367 : null,55211123147135 : null,55211123179903 : null,55211123212671 : null,55211123245439 : null,};
window._RestockRocketConfig.selected_variant_id = 55211122950527;
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/019c4de0-280f-760f-b566-2e2f8e837eb8/restock-rocket-shopify-454/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019c4de0-280f-760f-b566-2e2f8e837eb8/restock-rocket-shopify-454/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
<
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
Decrease quantity
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) {
) {
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);
});
}
});
}
// 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':
or('STOQ - failed to load settings:', error);
}
})
.catch(function(e) {
console.error(e)
})
}
function initializeScripts(settings) {
settings = applyTranslations(settings);
window._RestockRocketConfig.settings = settings;
console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`);
// 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
Increase quantity);
}
// Dispatch custom event when app is loaded
// Cart selling plan updates will be triggered by stoq:preorder-api-ready event
const appLoadedEvent = new CustomEvent('stoq:loaded', {
detail: {
pageType: window._RestockRocketConfig.pageType,
enabled: settings.enable_app,
settings: settings,
preorderEnabled: settings.preorder_enabled
}
});
console.debug('STOQ - dispatching app loaded event');
window.dispatchEvent(appLoadedEvent);
}
}
Workshop
See More
input type="number" name="quantity" id="quantity--template--16831240536290__main" value="1" min="1">
ock-rocket-preorder-progress-bar .preorder-progress-text{margin-bottom:8px;}.restock-rocket-preorder-progress-bar .preorder-progress-bar-row{display:flex;align-items:center;gap:10px;}.restock-rocket-preorder-progress-bar .preorder-progress-track{flex:1;height:12px;overflow:hidden;}.restock-rocket-preorder-progress-bar .preorder-progress-fill{display:block;height:100%;min-width:2px;transition:width 0.3s ease;}.restock-rocket-preorder-progress-bar .preorder-progress-percentage{font-weight:500;min-width:35px;text-align:right;}
Workshop Prices