Preact, the lightweight React compatible library, has released version 11 in beta. The new version introduces improvements to hydration, default ref handling, and bundle formats, while removing legacy features to modernize the core.
Preact 11 Beta brings changes across three key areas: hydration, performance, and ecosystem alignment. The new Hydration 2.0 model allows components that suspend during hydration to return zero or multiple DOM nodes, a departure from the previous restriction of one node per async boundary. This enables more complex hydration scenarios and better aligns Preact with modern rendering patterns. Another headline feature is default ref forwarding. Functional components can now receive ref props without requiring forwardRef, reducing boilerplate and improving compatibility with React libraries. For example:
function MyComponent({ ref }) {
return <h1 ref={ref}>Hello, world!</h1>;
}
<MyComponent ref={myRef} />;
In addition, hook dependencies now use Object.is for equality checks rather than loose equality, fixing edge cases such as NaN comparisons in useEffect and useState.
To streamline distribution and align with modern module conventions, all ESM bundles now ship as .mjs files, replacing the older .module.js
format. CommonJS and UMD bundles remain available. Alongside this, several long-standing legacy features have been removed, including automatic CSS px suffixing and defaultProps being moved into preact/compat
, plus the complete removal of component.base, SuspenseList, and replaceNode.
Preact 11 also raises its baseline requirements by dropping Internet Explorer 11 support and requiring TypeScript 5.1 or newer. This shift enables the project to leverage improved JSX typing and simplifies maintenance by removing outdated browser constraints.
For developers upgrading, the maintainers have published a migration guide detailing breaking changes and suggested workarounds. The team emphasizes that while this is a major version, the changes have been designed to minimize disruption.
A core maintainer shared on Bluesky that under the hood the release also includes memory fixes, better error boundaries, optimized rendering paths and more.
One user upgraded to the new beta and noticed a drop in bundle size:
Updated Preact to 11 beta and Zustand to 5 and bundle dropped 4 Kb, feels good
The journey towards Preact 11 started in 2020 with this GitHub issue. Some community members started to question whether it was still in development with the maintainers assuring the community but they wouldn’t move to release version 11 until there were breaking changes.
Preact is an open-source library designed as a fast, lightweight alternative to React. With a small footprint and near-compatibility with the React ecosystem, it has gained adoption in performance-sensitive applications, PWAs, and embedded contexts. With version 11, Preact is modernizing its hydration and API ergonomics while remaining committed to its reputation as a compact yet compatible React alternative.