Preact X - Virtuous DOM and the Fragments of Suspense
tl;dr: Preact X is the next major version of Preact fully packed with features like Fragments, Hooks, componentDidCatch, Test-Utils, Debug-Warnings, many compatibility fixes and so much more 🎉
It's finally happening! After months of hard work we've crossed the finish line and are over the moon with excitement to finally mark Preact X as stable. We'd like to thank everybody who tested it and submitted bug reports.
We originally planned to release a sort-of migration release as version 9 with just the breaking changes from X, but that got canned because many users reported that the upgrade process was easy enough and didn't warrant a long migration period in-between. In fact we got many reports that the upgrade could be done in under an hour, despite some of the breaking changes in X, making the need for a migration release even less desirable.
What's new?
Preact X ships with several major features and we combined them all in a single document on our site. If you're upgrading an existing Preact 8.x
project, we got you covered with a detailed upgrade guide.
To give a quick summary of the new features:
Fragments
componentDidCatch
preact/hooks
addonpreact/test-utils
addoncreateContext
APIcompat
moved to core- Plethora of compatibility fixes
- Many new warnings in
preact/debug
- Same 3 kB size as Preact 8
Again, we highly recommend checking out our new site and specifically the what's new section.
Changes since RC 4
Bug Fixes
- Rewrite
shouldComponentUpdate
handling to take more edge cases into account (#1931, thanks @JoviDeCroock) - Fix
UNSAFE_*
lifecycles being overwritten incompat
(#1946, thanks @marvinhagemeister) - Fix
PureComponent
rerendering when__source
changes (#1950, thanks @JoviDeCroock) - Fix default argument in
useState
not applied in rare cases (#1948, thanks @JoviDeCroock) - Change
.forceUpdate()
to participate in the update queue (#1939, thanks @developit) - Fix
vnode._children
should keep their type asarray
when diffing (#1924, thanks @cristianbote) - Allow numeric CSS values to be 0 (e.g.
opacity
) (#1927, thanks @JoviDeCroock) - Fix unnecessary rerender on equal contexts (#1925, thanks @JoviDeCroock)
Typings
- Add
disableRemotePlayback
to HTML Attributes (#1955, thanks @JoviDeCroock) - Add
volume
to HTML Attributes (#1938, thanks @jessicabyrne)
Maintenance
- Prevent mangling of
__source
and__self
(#1958, thanks @JoviDeCroock) - Add documentation on how to do releases (#1928, thanks @marvinhagemeister)