perf/render shape - #136
Merged
Merged
Conversation
Own canonical motion and settlement in AnimationStore across entry, starts, interrupts, and resets. Keep willAnimate as a one-frame prestart pulse and start real non-entry motion on the UI clock. Preserve pan and pinch takeover, cancel/reset, and interrupted-entrance settlement. Refresh boundaries only at motion start and keep grouped source selection current. Require destination measurements to match the active entrance identity. Prevent target-bound geometry from being overwritten by transformed refresh measurements. Expose gesture initiator and retain deprecated compatibility fields with replacement guidance. Hydrate public animating and settled directly from canonical animation facts. Cover initial state, timing, snaps, gestures, groups, measurement, and target-bound zoom. Extend the Reanimated test clock for deferred completion callbacks. Route-keyed hydration optimization is intentionally excluded; this is the baseline state.
Freeze settled style ownership across interpolator handoffs. Defer reserved-slot resets until their lifecycle is complete. Stage destination interpolator styles behind the visibility gate. Preserve native coordinates while correcting only the internal visibility offset.
✅ Deploy Preview for rnst-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
This change improves transition reliability and rendering performance, particularly for screens using Bounds, gestures, and snap points.
Several parts of the transition lifecycle could become unsynchronized during interrupted navigation, gesture handoffs, or snap-point animations. This could produce incorrect lifecycle values, stale transition styles, unnecessary renders, and inconsistent gesture behavior.
Bounds also had measurement and refresh issues. Boundaries inside transformed parent layouts could be measured from an incorrect offset, inactive boundaries could perform unnecessary portal work, and sources were sometimes refreshed outside the active transition pair. These problems were especially noticeable in zoom transitions and screens containing many Boundary components.
Live Boundary handoff had additional timing issues during rapid navigation and longer A → B → C flows. The payload could attach to the wrong receiver or return before the closing animation had visually completed.
This pull request addresses those problems so that: