Preact 7
https://github.com/preactjs/preact
Just a small bugfix release - DevTools was throwing an exception if components didn't inherit from Component. Preact supports components not inheriting from Component, so we've fixed the DevTools to match 👍
⚛️ Preact 7.2.0 is now available as a regular release!
npm install --save preact
Bugs Squashed
- Fix IE issues from 7.1 and update test cases (huge thanks to @mkxml for the hard work on this 🙇)
- Fix TextNode duplication in IE (#430, thanks also to @mkxml)
- Fix unnececssary diff when swapping from
dangerouslySetInnerHTMLtochildren(thanks @harish2704) - Fix issue in 7.x with
<select>sometimes not applyingvalueprop (#446) - Don't stringify
truechildren, instead skip them (#468, thanks @jxodwyer) - Fix issue where unmount could be skipped on a top-level component (#493, discovered by @insin)
- (DevTools Integration) Fix multiple root element issue
New Features
- Use a shared empty Array for
props.childrenwhen there are no children. Fixes simple shallow equality-basedshouldComponentUpdatefor leaf nodes 🎉 - Remove
instanceof SVGElementcheck in favor of duck typing. Fixes JSDOM compatibility and improves diff performance (#423, thanks @nhunzaker) - Better TypeScript Definitions: Component lifecycle methods, setState callback, etc
- 10x performance boost for initial rendering (#416)
- Fix edge case when swapping component root (#414)
- Fix diff reflow when removing leading element (#394)
- Check existence of firstChild before checking if it is a Text node
- Performance optimization for element/tree removal
- Re-add short-circuit for PFC's (fixes compositional PFC triggering constant recycling)
- Fixed TypeScript definition signature for linkState (#427)
- Add a whole bunch of explanatory comments to the diff engine 🎉
Bugfix
This release fixes an issue when hydrating from a static server-rendered DOM that could cause Preact to do far more work than it should have been doing. If you're doing SSR, check out this release for a massive performance boost.
7.x
7.x is currently in beta. It should be an entirely safe upgrade for most.
The reason it's a new major version is because Preact now ignores externally created DOM elements when rendering, unless performing hydration from a server-render (ie - the diff is initiated from a render() against an element that was not created by the DOM renderer).