Skip to content

v1.65.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 13:54
· 36 commits to main since this release
e4a8c45

Added

  • animation.entering.once — play an entrance exactly once per screen lifetime, on the first render where the element is visible. Fixes two bugs that share one cause: renderWhen visibility is mount/unmount (a false gate returns null) while reanimated fires entering on mount, so a gated element replays its entrance every time the gate flips back to true — swipe away from a carousel slide and back, and its decorations animate in again. No payload-level workaround exists: gte still unmounts when you move backwards past the threshold, and replayWhen is the exact opposite (it remounts on every change), so the latch has to live in the SDK.
  • An initial-mount play is DEFERRED, not suppressed. If the first visible render is the screen's own mount, the entrance waits until the screen has settled. An entrance fired during the host navigator's push transition is half-consumed by it — with staggered delays, the early ones run under the transition and the late ones land after, so the reveal reads as half-animated — and on a cold run remote images may not have decoded either. Suppressing would have traded a partial entrance for none, which is the bug rather than the fix. Scope, stated precisely because it is easy to over-claim: the deferral buys clear air from the entry transition; it does not wait on image decode, because nothing in React Native reports that. Delaying does hand decode a head start, but as a side effect rather than a guarantee. Later visibility flips never replay; once wins over replayWhen when both are set.

Notes

  • Fully opt-in. Nothing changes for an element that does not set it, and screen-entrance choreography is untouched — a blanket "never animate on initial mount" would have broken that for every screen.