Developer preview release notes: October 8, 2026
October 8, 2026
New
Predictive search in the React Router template
The React Router template has a predictive search drawer that suggests products as the shopper types.
Swap a cart line's variant
Cart line updates accept a merchandiseId, so you can switch a line to another variant without removing it and adding it again.
UCP business profile
handleShopifyRoutes serves your store's UCP business profile at /.well-known/ucp.
Changed
Product view prices include the currency
product_viewed events take the variant's full price instead of the amount string, so Shopify analytics reads the currency from the event. Pass variant.price where you used to pass variant.price.amount.
Destinations that read price get the {amount, currencyCode} object too.
One kind of cart change per request
The cart route rejects JSON requests that mix line, discount code, attribute, and note changes. Send each kind as a separate request. The cart store rolls back the rejected call's optimistic changes. Hydrogen's cart forms already work this way.
Background cache refreshes
Stale-while-revalidate refreshes of Storefront API responses keep running after the request that started them ends, up to the client's defaultTimeoutInMs.
Agent skills
The cart, collection, and variant form skills cover these changes.
Fixes
- Discount codes and fields from your custom CartFragment update as soon as a cart change settles, instead of waiting for the next refresh.
- formatMoney() ranges with withoutTrailingZeros no longer round the maximum. $10.00 – $19.99 used to render as $10 – $20.
- formatMoney().amount no longer ends with a space in locales like fr-FR.
- handleShopifyRedirects logs Storefront API errors from the redirect lookup, such as THROTTLED, instead of dropping them.
- The React Router and Next.js templates pass the shop's currency to ShopifyScripts. If your app started from an earlier preview template, pass it in the i18n prop too.
Removed
- The standalone useCartActions export from @shopify/hydrogen/vue. Use the one from createCartComponents(), which keeps your CartFragment types and still has refresh().
Migration
For migration guidance, compare the commits that bracket this release. The diff shows the changes between the previous preview and this release:
Code Example
git diff 5fa006e3b..00e9dd849
Get building
Spin up a new Hydrogen app in minutes.
See documentation