# Preact 11 switches to ESM-only distribution and rewrites hydration boundaries

Preact 11 ends the six-year Preact X major line with Hydration 2.0, automatic ref forwarding and stricter hook semantics, while dropping CommonJS and UMD bundles for ESM-only packages.

Preact's long-awaited major release brings concrete rendering changes and a packaging break. Most modern projects should migrate easily, but old import paths and CommonJS tooling need attention.

- Status: Active
- Published: 2026-10-08T17:55:52+13:00
- Updated: 2026-10-08T17:55:52+13:00
- Categories: Web Development, JavaScript, Frameworks
- Tags: ES modules, hydration, Preact, React compatibility
- Canonical HTML: https://beyondthe.news/dossiers/preact-11-esm-only-hydration-2-migration

## 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.

## Key details

- Preact 11 released September 29, 2026.
- Hydration 2.0 supports zero or multiple DOM nodes across async boundaries.
- Core and add-ons ship as ESM .mjs; old CommonJS/UMD bundles are removed.
- Automatic ref forwarding and Object.is hook equality are added.
- The official upgrade guide documents affected import paths and wrappers.
- Preact first-party packages were prepared for v11 during prereleases.

## Builder takeaways

- Audit CommonJS-only consumers, UMD globals and direct preact/dist imports.
- Test SSR hydration and async boundaries after upgrading.
- Run TypeScript builds to catch stricter type checks.
- Use the official upgrade guide and first-party package compatibility list.

## What to watch

- Compatibility reports from older bundlers and SSR integrations.
- Migration regressions around hydration and refs.
- Broader ecosystem adoption of the ESM-only package.

## Uncertainties

- Compatibility with legacy toolchains varies by Node/runtime and bundler version.
- The team characterises most upgrades as straightforward, but application-specific behaviour still needs testing.

## Sources

- [Preact 11](https://preactjs.com/blog/preact-11/) — Preact Team · primary · 2026-09-29T00:00:00+13:00. Official release rationale and new features.
- [Upgrading from Preact 10.x](https://preactjs.com/guide/v11/upgrade-guide/) — Preact · primary documentation · 2026-09-29T00:00:00+13:00. Migration and ESM-only compatibility requirements.

