Releases: Shopify/hydrogen
skeleton@2026.4.3
Patch Changes
-
Include line item children recursively in cart. (#3753) by @martin-pettersson
-
Add generic cart result typing to
createCartHandlerso custom cart fragments can use their generated fragment types. (#3767) by @andguy95 -
Widen React Router peer dependency ranges so Hydrogen packages accept compatible React Router 7.16 patch versions without npm peer dependency conflicts. New Hydrogen projects now default to React Router 7.16.0. (#3771) by @fredericoo
-
Updated dependencies [
3ccc22e0a3407298e835104e29adfb036f261474,a810db483c108ac8bbeaac45595b130ed95a2ec7,d17057eb4630710743e81b83573973100ec56d23,995190036d99e02ba6fb559b8e3c406c90043599,39f2b326e9fddda36b1d12149794bf4ffcc0d4b8]:- @Shopify/hydrogen@2026.4.3
@shopify/remix-oxygen@3.0.4
Patch Changes
- Widen React Router peer dependency ranges so Hydrogen packages accept compatible React Router 7.16 patch versions without npm peer dependency conflicts. New Hydrogen projects now default to React Router 7.16.0. (#3771) by @fredericoo
@shopify/hydrogen@2026.4.3
Patch Changes
-
Fix
cart.get()to use providedcartIdbefore falling back togetCartId()(#3664) by @Vitalini -
Fix
Imagecomponent generating1x/2x/3xdensity descriptors instead ofwdescriptors for fluid (responsive) images whose source dimensions cap the srcset to exactly 3 entries. (#3756) by @z0nWhat was happening: When a product image stored in Shopify was small enough that the default srcset ladder (200px, 400px, 600px, 800px, …) was filtered down to exactly 3 entries by the source-dimension cap, the
Imagecomponent incorrectly switched to density descriptors (1x/2x/3x) and silently ignored thesizesattribute. On a DPR-1 screen this caused the smallest srcset entry (200px) to be used regardless of the rendered image size, resulting in blurry images.The fix: Descriptor type (density vs width) is now determined by whether the image is in fixed or fluid mode — not by how many srcset entries happen to survive source-dimension filtering.
-
Fix
storefrontRedirectnot working for client-side navigations. React Router v7's Single Fetch changed how data requests work — they now use a.datapathname suffix instead of a_dataquery parameter.storefrontRedirectnow correctly detects both conventions, strips the.datasuffix before matching redirects, and returns the proper204status code for soft navigation redirect responses. (#3762) by @fredericoo -
Add generic cart result typing to
createCartHandlerso custom cart fragments can use their generated fragment types. (#3767) by @andguy95 -
Widen React Router peer dependency ranges so Hydrogen packages accept compatible React Router 7.16 patch versions without npm peer dependency conflicts. New Hydrogen projects now default to React Router 7.16.0. (#3771) by @fredericoo
-
Updated dependencies [
a810db483c108ac8bbeaac45595b130ed95a2ec7]:- @shopify/hydrogen-react@2026.4.3
@shopify/hydrogen-react@2026.4.3
Patch Changes
-
Fix
Imagecomponent generating1x/2x/3xdensity descriptors instead ofwdescriptors for fluid (responsive) images whose source dimensions cap the srcset to exactly 3 entries. (#3756) by @z0nWhat was happening: When a product image stored in Shopify was small enough that the default srcset ladder (200px, 400px, 600px, 800px, …) was filtered down to exactly 3 entries by the source-dimension cap, the
Imagecomponent incorrectly switched to density descriptors (1x/2x/3x) and silently ignored thesizesattribute. On a DPR-1 screen this caused the smallest srcset entry (200px) to be used regardless of the rendered image size, resulting in blurry images.The fix: Descriptor type (density vs width) is now determined by whether the image is in fixed or fluid mode — not by how many srcset entries happen to survive source-dimension filtering.
@shopify/create-hydrogen@5.0.37
Patch Changes
-
Include line item children recursively in cart. (#3753) by @martin-pettersson
-
Add generic cart result typing to
createCartHandlerso custom cart fragments can use their generated fragment types. (#3767) by @andguy95 -
Widen React Router peer dependency ranges so Hydrogen packages accept compatible React Router 7.16 patch versions without npm peer dependency conflicts. New Hydrogen projects now default to React Router 7.16.0. (#3771) by @fredericoo
@shopify/cli-hydrogen@12.0.1
Patch Changes
-
Include line item children recursively in cart. (#3753) by @martin-pettersson
-
Add generic cart result typing to
createCartHandlerso custom cart fragments can use their generated fragment types. (#3767) by @andguy95 -
Widen React Router peer dependency ranges so Hydrogen packages accept compatible React Router 7.16 patch versions without npm peer dependency conflicts. New Hydrogen projects now default to React Router 7.16.0. (#3771) by @fredericoo
skeleton@2026.4.2
Patch Changes
-
Add support for Vite 7 and Vite 8. Hydrogen remains backwards-compatible with Vite 5+. (#3617) by @frandiox
Mini Oxygen's dev server has been refactored to use the Vite Environment API, which is the standard way to run non-browser runtimes in Vite. This replaces the previous custom middleware approach with a first-class
FetchableDevEnvironment, improving compatibility with Vite's built-in HMR and module invalidation.New Hydrogen projects created with
npm create @shopify/hydrogenwill default to Vite 8. Thevite-tsconfig-pathsplugin is no longer needed in the skeleton template since Vite 8 supportsresolve.tsconfigPathsnatively. -
Updated dependencies [
dc49699c799997d5893bc06e444f888e86a3bc29,50df825c57159757529f5f9f62c258d4de2a4b97,51f1e77fe63be5e5ded4ef0c91942bc304f1abc4]:- @Shopify/hydrogen@2026.4.2
@shopify/mini-oxygen@4.1.0
Minor Changes
-
Add support for Vite 7 and Vite 8. Hydrogen remains backwards-compatible with Vite 5+. (#3617) by @frandiox
Mini Oxygen's dev server has been refactored to use the Vite Environment API, which is the standard way to run non-browser runtimes in Vite. This replaces the previous custom middleware approach with a first-class
FetchableDevEnvironment, improving compatibility with Vite's built-in HMR and module invalidation.New Hydrogen projects created with
npm create @shopify/hydrogenwill default to Vite 8. Thevite-tsconfig-pathsplugin is no longer needed in the skeleton template since Vite 8 supportsresolve.tsconfigPathsnatively.
@shopify/hydrogen@2026.4.2
Minor Changes
-
Add support for Vite 7 and Vite 8. Hydrogen remains backwards-compatible with Vite 5+. (#3617) by @frandiox
Mini Oxygen's dev server has been refactored to use the Vite Environment API, which is the standard way to run non-browser runtimes in Vite. This replaces the previous custom middleware approach with a first-class
FetchableDevEnvironment, improving compatibility with Vite's built-in HMR and module invalidation.New Hydrogen projects created with
npm create @shopify/hydrogenwill default to Vite 8. Thevite-tsconfig-pathsplugin is no longer needed in the skeleton template since Vite 8 supportsresolve.tsconfigPathsnatively.
Patch Changes
-
Fixed the
CartProviderexample code (both TS and JS) to include the missingreturnstatement in theAppcomponent. (#3685) by @J8118 -
Fixed the
ProductProviderexample code (both TS and JS): restored the missingreturnin the.map()callback so option buttons render, and removed a stray semicolon that rendered as visible text. (#3680) by @J8118 -
Updated dependencies [
dc49699c799997d5893bc06e444f888e86a3bc29,50df825c57159757529f5f9f62c258d4de2a4b97,51f1e77fe63be5e5ded4ef0c91942bc304f1abc4]:- @shopify/hydrogen-react@2026.4.2
@shopify/hydrogen-react@2026.4.2
Minor Changes
-
Add support for Vite 7 and Vite 8. Hydrogen remains backwards-compatible with Vite 5+. (#3617) by @frandiox
Mini Oxygen's dev server has been refactored to use the Vite Environment API, which is the standard way to run non-browser runtimes in Vite. This replaces the previous custom middleware approach with a first-class
FetchableDevEnvironment, improving compatibility with Vite's built-in HMR and module invalidation.New Hydrogen projects created with
npm create @shopify/hydrogenwill default to Vite 8. Thevite-tsconfig-pathsplugin is no longer needed in the skeleton template since Vite 8 supportsresolve.tsconfigPathsnatively.
Patch Changes
-
Fixed the
CartProviderexample code (both TS and JS) to include the missingreturnstatement in theAppcomponent. (#3685) by @J8118 -
Fixed the
ProductProviderexample code (both TS and JS): restored the missingreturnin the.map()callback so option buttons render, and removed a stray semicolon that rendered as visible text. (#3680) by @J8118