Repository navigation
Releases: preactjs/preact
Releases · preactjs/preact
Release list
11.0.1
Fixes
- Keep suspended hydration within a component's own
$srange (#5300, thanks @JoviDeCroock) - Keep ref cleanups on the element instead of the ref function (#5290, thanks @JoviDeCroock)
- Unmount parked Suspense children when the boundary unmounts (#5295, thanks @gengjiawen)
DX
- Log the component stack of errors no boundary handles (#5297, thanks @JoviDeCroock)
Performance
- Key event listeners by prop name and stamp attach times per listener (#5272, thanks @JoviDeCroock)
Maintenance
- Change repository field to object format (#5292, thanks @piotr-cz)
- Fix the types of preact/compat/server and preact/compat/scheduler (#5282, thanks @JoviDeCroock)
11.0.0
https://preactjs.com/blog/preact-11
Read the upgrade-guide over at https://preactjs.com/guide/v11/upgrade-guide
All other release notes can be seen at
- https://github.com/preactjs/preact/releases/tag/11.0.0-rc.2
- https://github.com/preactjs/preact/releases/tag/11.0.0-rc.1
- https://github.com/preactjs/preact/releases/tag/11.0.0-rc.0
- https://github.com/preactjs/preact/releases/tag/11.0.0-beta.2
- https://github.com/preactjs/preact/releases/tag/11.0.0-beta.1
- https://github.com/preactjs/preact/releases/tag/11.0.0-beta.0
Fixes
- Re-attach refs when a suspended subtree reveals (#5258, thanks @JoviDeCroock)
- Map imageRendering to image-rendering (#5270, thanks @kwy404)
- Append when the insertion reference node lives in another container (#5252, thanks @JoviDeCroock)
- Only drop the insertion cursor when it's detached (#5273, thanks @JoviDeCroock)
- Fall back to the global document for containers without an ownerDocument (#5274, thanks @JoviDeCroock)
- Check for moveBefore() on the container instead of globally (#5275, thanks @JoviDeCroock)
- Fix resuming into the DOM kept while a component was suspended (#5276, thanks @JoviDeCroock)
- Stop DOM nesting validation at portal boundaries (#5277, thanks @JoviDeCroock)
- Preserve the casing of camelCase custom event names (#5278, thanks @JoviDeCroock)
Performance
- Remove cloneNode for top-level Fragments (#5271, thanks @JoviDeCroock)
Maintenance
- Remove comment about building during prepare from compressed-size (#5255, thanks @JoviDeCroock)
- Fix compressed size comparison with pnpm (#5254, thanks @JoviDeCroock)
- Migrate dependency management to a root and demo pnpm workspace (#5246, thanks @JoviDeCroock)
- Pin terser to 5.16.0 (#5268, thanks @JoviDeCroock)
11.0.0-rc.2
Notable
- Preserve hook state when Suspense re-suspends (#5239, thanks @JoviDeCroock)
Types
- Add
selectedcontentJSX type (#5234, thanks @JoviDeCroock) - Make the Children.map/forEach context argument optional (#5230, thanks @JoviDeCroock)
Fixes
- Keep the pending error flag until the boundary's retry render (#5227, thanks @JoviDeCroock)
- Only treat components with error handlers as error boundaries (#5226, thanks @JoviDeCroock)
- Anchor the MathML token element regex (#5228, thanks @JoviDeCroock)
- Fall back to insertBefore when the moved node was detached externally (#5244, thanks @JoviDeCroock)
Performance
- Omit dev fields from production jsx vnodes (#5220, thanks @JoviDeCroock)
- Resolve unmount error routing lazily (fixes #5217) (#5218, thanks @JoviDeCroock)
- Reduce gzip size when using jsx() (#5243, thanks @JoviDeCroock)
Maintenance
- Upgrade Vitest to 5 (#5238, thanks @JoviDeCroock)
- Upgrade Node.js to 22 (#5237, thanks @JoviDeCroock)
- Remove dead _dom/_children copy from compat Suspense _catchError (#5240, thanks @JoviDeCroock)
- Require preact-render-to-string >=6.7.0 as the optional peer (#5231, thanks @JoviDeCroock)
- Drop stale references to the removed min build and JSX.HTMLAttributes (#5232, thanks @JoviDeCroock)
11.0.0-rc.1
Features
- Tree-shake feature-specific compat hooks (#5203, thanks @JoviDeCroock)
Bundle size
- Simplify toChildArray guards (#5214, thanks @JoviDeCroock)
- Remove unused memo factory state (#5213, thanks @JoviDeCroock)
- Remove redundant textarea hydration hook (#5212, thanks @JoviDeCroock)
- Require prop type stack getter (#5210, thanks @JoviDeCroock)
Types
- Add missing lowercased html attributes to dom.d.ts (#5207, thanks @teddybradford)
Maintenance
- Clarify staged npm release approval flow (#5204, thanks @JoviDeCroock)
- Declare the sass dependency vite's scss compilation needs (#5206, thanks @upupming)
- Cover JSX refs and event bubbling (#5211, thanks @JoviDeCroock)
- Fix parameter description in getHookState function (#5209, thanks @exedealer)
11.0.0-rc.0
Features
- implement
usein compat (#5186, thanks @JoviDeCroock) - Implement getServerSnapshot for useSyncExternalStore (#4979, thanks @ssssota)
- Support createPortal in core (#5168, thanks @JoviDeCroock)
- Add useEffectEvent hook to compat (#5141, thanks @Mesoptier)
Correctness
- Leverage
moveBeforerather thaninsertBeforewhen available (#5161, thanks @JoviDeCroock) - Avoid mutating user-provided style objects when appending px (#5117, thanks @JSap0914)
- Fix reusing template element content (#5192, thanks @JoviDeCroock)
- Fix dirty child strict equality bailout (#5193, thanks @JoviDeCroock)
- Add the constructor in when cloning VNodes (#5195, thanks @JoviDeCroock)
- Defer passive effect cleanup on unmount (#5196, thanks @JoviDeCroock)
Performance
- Compute minimal child moves with a longest increasing subsequence (#5174, thanks @JoviDeCroock)
- Batch updates in flushSync (#5175, thanks @JoviDeCroock)
- Avoid traversing retained subtrees (#5183, thanks @JoviDeCroock)
- Reduce core bundle size in v11 (#5167, thanks @JoviDeCroock)
- Reduce bundle size before release candidates go live (#5197, thanks @JoviDeCroock)
- Hoist
_childreninto a local inconstructNewChildrenArray(#5198, thanks @JoviDeCroock) - Reduce Preact core compressed size (#5199, thanks @JoviDeCroock)
Maintenance
- Bump reported React version to 19.0.0 (#5171, thanks @JoviDeCroock)
- Remove debug re-throw (#5190, thanks @JoviDeCroock)
- Commit pending hook state in
options._render(#5187, thanks @JoviDeCroock) - Remove straggler forwarded (#5178, thanks @JoviDeCroock)
- Derive document from parentDom instead of threading it (#5180, thanks @JoviDeCroock)
- Remove redundant portal children guard (#5179, thanks @JoviDeCroock)
- Restore
_bitsmangle for Preact ISO (#5200, thanks @JoviDeCroock) - Update contribution build commands (#5166, thanks @Minsecrus)
- Remove unused dependencies (#5160, thanks @JoviDeCroock)
- Avoid Trusted Types violation when dangerouslySetInnerHTML is re… (#4935, thanks @lukewarlow)
- Introduce a modern build setup (#5159, thanks @JoviDeCroock)
10.29.8
Performance
- Batch updates in flushSync (#5173, thanks @JoviDeCroock)
- Avoid traversing retained subtrees (#5182, thanks @JoviDeCroock)
11.0.0-beta.2
Forward porting
- Frontport 10.29.4 (#5139, thanks @JoviDeCroock)
- Frontport 10.29.3 (#5122, thanks @JoviDeCroock)
- Forwardport v10.x fixes since 2026-03-25 (#5089, thanks @JoviDeCroock)
- Forwardport from v10 (#5053, thanks @JoviDeCroock)
Features
- Implement streamed hydration rfc (#5035, thanks @JoviDeCroock)
Types
- Remove erroneous 'type' attribute from select element types (#5097, thanks @rschristian)
- Accept Signalish for input type (#5095, thanks @JoviDeCroock)
Fixes
- Fix compat Suspense hydration children recovery (#5146, thanks @JoviDeCroock)
- Check
nodeTypeinstead of the globaldocument(#5119, thanks @natemoo-re) - Fix Suspense undefined prop revalidation (#5133, thanks @JoviDeCroock)
- Fix error recovery for partially rendered subtrees (#5120, thanks @JoviDeCroock)
- Fix useId stability across async Suspense (#5108, thanks @JoviDeCroock)
- Flush subtree effects (#5055, thanks @JoviDeCroock)
- Fix memory leak hotspots (#5116, thanks @JoviDeCroock)
- Fix hydrate recovery with null excess DOM children (#5112, thanks @JoviDeCroock)
- Fix buggy edge case (#5092, thanks @JoviDeCroock)
- Preserve falsy key and ref values in cloneElement (#5082, thanks @Olexandr88)
Performance
- Use Symbols for the event clock keys (#5143, thanks @JoviDeCroock)
- Performance: compat
shallowDiffers(#4780, thanks @romgrk) - Avoid redundant allocations and writes (#5115, thanks @JoviDeCroock)
- Use .push.apply (#5024, thanks @JoviDeCroock)
Maintenance
- Bump pinned GitHub actions (#5110, thanks @JoviDeCroock)
- Fix typo in vitest config (#5111, thanks @kumavis)
- Use npm staged publishing (#5100, thanks @JoviDeCroock)
- Harden trusted publish workflow (#5099, thanks @JoviDeCroock)
- Add tier 3 sponsor logos (#5093, thanks @JoviDeCroock)
- Add trusted publishing workflow for main (#5086, thanks @JoviDeCroock)
- Add
chaito dev dependencies to make pnpm install work (#5043, thanks @marvinhagemeister)
10.29.7
Maintenance
- Make RTS optional peer dep (#5150, thanks @JoviDeCroock)
10.29.6
We had to revert #5055 due to an incompatibility with useSignalEffect
10.29.5
Fixes
- Compat Suspense hydration children recovery (#5144, thanks @JoviDeCroock)