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 very recent activity, with upstream push on 2026-07-08 and a sequence of 10.29.x updates landing in the days immediately before today (2026-07-09).
- Update cadence: In the last ~3 weeks there are multiple patch-level updates (10.29.1 on 2026-04-03, 10.29.2 on 2026-05-17, then 10.29.3 on 2026-06-26, followed by rapid 10.29.4 through 10.29.7 between 2026-07-03 and 2026-07-08). This suggests an active bugfix cadence that tightened in late June and early July.
AI summary generated
Recent updates
10.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.