Skip to content

perf/render shape - #136

Merged
eds2002 merged 12 commits into
mainfrom
perf/render-shape
Jul 26, 2026
Merged

perf/render shape#136
eds2002 merged 12 commits into
mainfrom
perf/render-shape

Conversation

@eds2002

@eds2002 eds2002 commented Jul 26, 2026

Copy link
Copy Markdown
Owner

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:

  • screen lifecycle state accurately represents visible transition motion
  • gestures and snap-point transitions settle consistently
  • Bounds measurements remain correct inside transformed layouts
  • Boundary work is limited to active transition participants
  • screens with many Boundaries perform less unnecessary rendering and portal setup
  • live handoff remains attached to the correct receiver across pushes, pops, interruptions, and multi-screen flows

eds2002 added 12 commits July 24, 2026 05:29
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.
@netlify

netlify Bot commented Jul 26, 2026

Copy link
Copy Markdown

Deploy Preview for rnst-docs ready!

Name Link
🔨 Latest commit df3a34d
🔍 Latest deploy log https://app.netlify.com/projects/rnst-docs/deploys/6a662e8da6049f00089f35d7
😎 Deploy Preview https://deploy-preview-136--rnst-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@eds2002
eds2002 merged commit 640406e into main Jul 26, 2026
6 checks passed
@eds2002
eds2002 deleted the perf/render-shape branch July 26, 2026 16:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant