Preact is a fast React alternative for building user interfaces with components and a virtual DOM. It supports the same modern API (hooks, ES6 class, functional components, JSX) and includes React compatibility via a preact/compat alias, with features like HMR and server-side rendering.
Project status
- Actively maintained: The repo shows recent upstream activity (last push 2026-08-26) and frequent tagged updates in 2026, including 11.0.0 release candidates as of 2026-08-26.
- Update cadence: Updates cluster in short intervals, with multiple versions across May to August 2026 (for example 10.29.2 on 2026-05-17, then 10.29.3 on 2026-06-26, several early July updates, and multiple 11.0.0 RCs in August).
AI summary generated
Recent updates
11.0.0-rc.1
Release 11.0.0-rc.1 focuses on bundle size optimizations, plus several maintenance changes around compat hooks, types, and developer tooling. Code changes include render tracking refactors in compat, updated textarea and event bubbling behavior tests, and new TS typings for DOM attribute casing.
Features11.0.0-rc.0
Preact compat release candidate 11.0.0 targets React 19 compatibility, adding additional React hooks support (notably `use`, `useEffectEvent`, and `getServerSnapshot` for `useSyncExternalStore`). The implementation also includes multiple reconciler and runtime correctness and performance changes, plus a build/packaging refresh.
Features10.29.8
Release notes only mention two React-compat performance changes, batch updates in flushSync and avoiding traversals of retained subtrees. The actual diff shows multiple behavioral and API-shape changes in the React-compat layer (flushSync implementation, isReactComponent values, memo/forwardRef metadata, Suspense and lazy behavior), many of which are not described in the release notes.
Features11.0.0-beta.2
Release 11.0.0-beta.2 primarily ports forward fixes from the 10.x line and introduces an “Implement streamed hydration rfc” feature. The documented changes are mostly around Preact compat hydration behavior and several internal fixes/perf tweaks. The provided code diff also shows additional compat-layer API and typing changes that are not mentioned in the release notes.
Features10.29.7
Release 10.29.7 is a maintenance update that adjusts the package dependency metadata. It also updates the internal Preact DevTools attachment version string to match the new release number.
10.29.6
Release 10.29.6 is described as a revert of preactjs/preact PR #5055 due to an incompatibility with `useSignalEffect`. The code diff, however, shows a more direct change to how pending effects are flushed during render, and it removes an existing `useEffect` regression test.
Breaking10.29.5
Release 10.29.5 includes a compatibility fix for Suspense hydration behavior, specifically around recovering Suspense hydration children when switching to a fallback path. The only code behavior change appears limited to compat Suspense logic plus an internal devtools version attachment update, with a new regression test added.
10.29.4
Release 10.29.4 contains fixes related to Suspense hydration and a partial rollback of a prior useId stability change for async Suspense. It targets a hydration crash likely tied to bailout behavior, and it changes how Suspense useId masking is handled for async scenarios.
Breaking10.29.3
Release 10.29.3 focuses on correctness fixes around Suspense, including error recovery for partially rendered subtrees, hydration edge cases, and stability of `useId` across async Suspense. It also includes performance and memory leak-related tweaks in the hooks/diff/render pipeline, plus a TypeScript typing improvement for `input` `type` to accept `Signalish`.
10.29.2
Release 10.29.2 focuses on fixing hydration behavior for textareas when using props like defaultValue or value. In addition to that runtime fix, it includes CI and GitHub release workflow maintenance related to trusted publishing.
Security10.29.1
Release 10.29.1 focuses on fixing runtime behavior issues in the Preact compat layer, specifically event-clock handling per Preact instance and DOM ordering with conditional ContextProvider usage. It also includes test and tooling maintenance, including switching test automation to Playwright, renaming JS test files to JSX where needed, and migrating formatting tooling from Biome to OxFMT.
10.29.0
Version 10.29.0 adds a React-compatible flushSync implementation in the preact compat layer, plus a couple of robustness fixes (renderCount/queue reset and handling components with an undefined prototype). The release also includes some compat-layer size/perf refactors.
Features10.28.4
Release 10.28.4 primarily focuses on fixing a crash related to synchronous effect rendering unmounting the tree. It also includes several core and hooks size and diffing optimizations intended to reduce bundle size and improve performance.
11.0.0-beta.1
preact-compat 11.0.0-beta.1 forwards multiple v10 fixes and includes several Suspense-related stability improvements, plus typing and performance updates. The release notes focus on Suspense crash fixes, namespace inheritance through portals, and some compat typings and event support, but the code diff shows additional runtime and export surface changes.
Features10.28.3
Release 10.28.3 focuses on React-compat Suspense stability and portal namespace correctness. It adds safeguards to prevent crashes and unwanted render scheduling when suspended components resolve or update around unmount, and it ensures portal-rendered SVG elements keep the correct SVG namespace.
10.26.10
This release updates several internal VNode constructor checks to use strict equality (===/!==) instead of loose equality (==/!=). It also bumps the package version to 10.26.10 and updates the devtools attachment version string accordingly.
Breaking10.27.3
Release 10.27.3 includes the documented change to use strict equality when checking VNode object constructors. The actual code diff, however, contains several additional reconciliation and type-definition changes that are not mentioned in the release notes.
Features10.28.2
Release 10.28.2 primarily tightens VNode constructor checks by switching to strict equality. The code diff also contains several additional behavioral and TypeScript definition changes that are not mentioned in the release notes.
BreakingFeatures10.28.1
Release 10.28.1 is a small patch update focused on correcting diff behavior when keyed children change via growth (adding new items). The diff also includes routine version string bumps in package metadata and devtools attachment.