Yeti Cycles SB160 T-Series 29" Frame Large - SaleRefund policy
- Albania (ALLL) 1
- Algeria (DZDد.ج) 2 Andorra (EUR€)
- 7 Belgium (EUR€)
- 8 Benin (XOFFr)
- Bosnia & Herzegovina (BAMКМ) 9
- Botswana (BWPP) 10 + British Indian Ocean Territory (USD$)
SB160Denmark (DKKkr.)




Upholding a time-tested, race-bred ethos that says nothing should hold a rider back from the sheer joy of untethered speed. Built off one of the most winning race platform in EWS history, the sb160 is pure race machinery. Honed for more. Equatorial Guinea (XAFCFA) Be fastest .
160Estonia (EUR€) MM
FRAME TRAVEL
Eswatini (GBP£)170 MM
FORK TRAVELFaroe Islands (DKKkr.)
17 %
France (EUR€)LEVERAGE RATE
29"
Gabon (XOFFr)WHEEL SIZE
64°
Georgia (GBP£)HEAD TUBE ANGLE
77.5°
Ghana (GBP£)EFF. SEAT ANGLE
FRAME HIGHLIGHTS
Greece (EUR€)- Switch Infinity assembly on T-Series
- Threaded bottom bracketGreenland (DKKkr.)
- High-clearance downtube
- Dual-density downtube protectionGuadeloupe (EUR€)
- Universal Derailleur Hanger (UDH)
- Secure, fully enclosed internal cable managementGuernsey (GBP£)
- Compatible with long dropper posts
- 100% standard sealed Enduro Max bearingsGuinea (GNFFr)
- Floating collet axle pivot design
- Compact-wishbone shock extenderGuinea-Bissau (XOFFr)
- Downhill tested
- Yeti/Fox Factory team approvedHungary (HUFFt)
- Boost spacing
- Sizes S-XXLIceland (ISKkr)
FROM LEGACY TO DYNASTYIsle of Man (GBP£)
The Yeti/Fox Factory Team won 51 EWS stages, 12 EWS races, and 1 national series championships aboard the SB150. The SB160 builds momentum on this legacy of excellence. Honed. Refined. Even effing faster.
SIZE GUIDE
| SMALL | Kosovo (EUR€)5'1" - 5'7" | Latvia (EUR€) | |||
| MEDIUM | 5'5" - 5'11"Liberia (GBP£) | Libya (GBP£) | |||
| LARGE | Liechtenstein (CHFCHF)5'10" - 6'3" | Lithuania (EUR€)||||
| X-LARGE | Madagascar (GBP£) | 6'1" - 6'7" | Malawi (MWKMK) | ||
| XX-LARGE | Mali (XOFFr)Malta (EUR€) | 6'5" - 6'11" |
SPECIFICATION
Mayotte (EUR€)TURQ Series carbon fibre frame, Switch Infinity suspension technology, threaded bottom bracket, fully enclosed internal cable routing,
148mm x 12mm BOOST dropouts, sealed Enduro Max pivot bearings, integrated derailleur hanger, and axle.
| FRAME | Monaco (EUR€)TURQ SERIES |
| SHOCK | FOX FACTORY FLOAT X2 | Morocco (MADد.م.)
Mozambique (GBP£)
Please note: Specifications are subject to change without notice.
GEOMETRYNamibia (GBP£)
All measurements are shown in millimetres.

| SMNigeria (NGN₦) | MD | LGNorth Macedonia (MKDден) | XL | XXLNorway (GBP£) | ||
| APoland (PLNzł) | SEAT TUBE LENGTH | 365Portugal (EUR€) | 400 | 440Réunion (EUR€) | 470 | 485Romania (RONLei) |
| BRwanda (RWFFRw) | EFF. TOP TUBE LENGTH | 571San Marino (EUR€) | 602 | 624São Tomé & Príncipe (STDDb) | 651 | 670Senegal (XOFFr) |
| CSerbia (RSDРСД) | ||||||
| I | STANDOVER | Zambia (GBP£)735 | 744 | Zimbabwe (USD$)750 | 756 | 757 |
| J | © 2026,HEADTUBE LENGTHProjektRide | .95 | Powered by101Shopify | .107 | 118 | American Express140 |
| K | Diners ClubFORK (AXLE TO CROWN) | Discover588 | Google Pay588 | 588Klarna | 588Maestro | 588Mastercard |
| LShop Pay | 44 | 44 | 44Visa | 44 | ||
| 153 | 153 | 153 |
- 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
age = Date.now() - updatedAt.getTime(); if (age 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. <
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 || Postage is free on orders over £50. Orders under £50, our postage charge is £3.99.!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._RestockRocketWe also have a physical store, if you are local please pop in - && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => { if (hasUpdates) { console.debug('STOQ - cart selling plans updated successfully'); } else { console.debug('STOQ - no cart selling plan updates needed'); } }) .catch(error => { console.error('STOQ - error updating cart selling plans:', error); }); } }); } // 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.S
hopify.shop, 'ngrok-skip-browser-warning': 'skip' }; if (window.Shopify?.theme?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; } fetch( `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, { headers } ) .then(function(response) { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(function(settings) { initializeScripts(settings); }) .catch(function(error) { // If request failed and we have cached settings (even if expired), use them as fallback if (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cacProjektRide Bike Shop EdinburghhedSettings); } else { console.error('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._RestockRocketCon


South Sudan (GBP£)
Georgia (GBP£)
Lithuania (EUR€)
Malawi (MWKMK)
