Releases: preactjs/preact
4.6.3
4.6.2
-
Optimize serialization of Objects to CSS strings to be about 5x faster (benchmark: https://esbench.com/bench/570daee0db965b9a009659f7)
-
Rethink solution to #120. TL;DR: fresh instances, cached DOM. Long version:
Re-invoking the constructor on a class was not a great idea. Babel's transpiled constructors
(and basically anything else) re-assign to the prototype, which is slow and a fairly bad idea.
Also, and more importantly, it was assigningthis.base
tonull
, completely ignoring the
main reason for caching components (caching their generated DOM using the component itself
as a cache key). This commit changes the behavior to discard the cached component instance
itself, re-using only the base by copying it to a fresh instance. Best of both worlds!
4.6.1
4.6.0
- Fix regression since
4.5.0
wherekey
tracking for components would fail in some cases, causing components not to be recycled. Relates to #98 and the second issue noted in #120. - Switch to a global/named symbol
Symbol.for('preactattr')
for the prop cache key (still falling back to__preactattr_
). - Address the state re-use issue noted in Issue #120 by manually re-invoking component constructors when re-using components from the recycler.
4.5.1
4.5.0
Bug Fixes
- Fix context being null/undefined when unset. It should be an empty object.
- Fix issue where
ref
(andkey
) were not being removed fromprops
prior to being passed into component render (Issue #98)
Optimizations
- Drop unnecessary cloning of props/context
- Ship a more optimized default build by applying
uglify-js
without name mangling and with beautification (removes comments and applies dead code elimination)
4.4.0
Bug Fixes
- When reclaiming externally created elements (such as via
dangerouslySetInnerHTML
), copy their attributes into the prop cache so they are properly diffed on subsequent render (Issue #97) - Fix cached unmount behavior: lifecycle events should be invoked for nested components, but only the top-level component should be physically removed from the DOM. The rest remain cached within that component's DOM + VDOM tree (Issue #94)