This repository has been archived by the owner on Dec 2, 2021. It is now read-only.
Native optimisations & seamless image transitions ππ
This is a big release of RNMM, not specifically in terms of features, but in terms of a new clone based architecture enabling native extensions and putting down the groundwork for future features. The native extensions are optional, but are recommended in order to provide a flicker-free experience on both iOS and Android. A new default transition called move
has been introduced which animates images seamlessly (taking into account the resizeMode
and image clipping) without and stretching or tearing.
Added
- Added new smart
move
transition, for seamless transitions when source and target are the same, but are sized differently or use different border radii - Added ability to render multiple clones efficiently and clip and transform their contents
- Added native optimisations for iOS and Android to address flickering issues when animating (to install use
react-native link react-native-magic-move
) - Added
debug
prop forProvider
andScene
, which also propagates into the rendering hierarchy - Upgraded to a new
clone
based architecture to enable native optimisations - Upgraded the
morph
transition to always use the native driver
Fixed
- Fixed layout position when view was inside scrollview and the scrollview offset wasn't zero
- Fixed animations overlapping the scene bounds
- Fixed image flickering through new native optimisations
- Fixed
backfaceVisibility
prop warnings in theflip
transition
Changes
- The
move
transition is now the default transition. Usemorph
if the content is distinctly different. - [BREAKING CHANGE] Custom transition functions are now required to return an array, and can no longer return a single clone or
React.Fragment
. - Removed behaviour that selected the transition of the source when no transition was defined on the target (this proved to be counter productive)
Deprecated
- The
scale
transition has been deprecated and will be removed in the near future. Use the newmove
transition instead.