What changed
The Preact team released Preact 11 on September 29, 2026. It adds Hydration 2.0 that supports async boundaries with zero or multiple DOM nodes, automatic ref forwarding, Object.is equality in hook arguments and stricter types. Preact core and add-ons are now distributed as .mjs ES modules; CommonJS and UMD bundles from Preact 10 have been removed except for a few compatibility wrappers. First-party packages including Signals, render-to-string, preact-iso and preset-vite already support v11.
Why it matters
Preact is used as a small React-compatible UI runtime, and the major changes both server-rendered hydration flexibility and package consumption. ESM-only distribution aligns with modern bundlers but can break legacy script tags, direct dist imports and CommonJS-only build chains. The upgrade is a compatibility decision, not just a dependency bump.
Hydration 2.0 relaxes async boundary constraints
Preact 10 required exactly one DOM node in some async boundary cases. Preact 11 supports zero or multiple nodes, allowing more flexible component composition and hydration.
ESM-only packages are a real breaking change
Core and add-ons now ship .mjs modules, dropping old CommonJS and UMD bundles. Modern require(esm) environments can work, but direct legacy paths and older loaders need migration.
Ref and hook behaviour changes
Automatic ref forwarding and Object.is-based hook equality align behaviour with modern component expectations; stricter types can expose previously accepted patterns.
The official ecosystem is already prepared
Preact's first-party packages were updated during prereleases, reducing migration friction for supported modern tooling.