Skip to content

Release/v3.7#116

Draft
eds2002 wants to merge 12 commits into
mainfrom
release/v3.7
Draft

Release/v3.7#116
eds2002 wants to merge 12 commits into
mainfrom
release/v3.7

Conversation

@eds2002
Copy link
Copy Markdown
Owner

@eds2002 eds2002 commented Jun 1, 2026

Motivation

Blank stack currently has short lived lag spikes when routes close. This is usually hard to notice during normal navigation, but it becomes very visible when a user rapidly triggers navigation events.

This release also aims to provide a better way to handle native stack integration, which just avoids us forking react navigation.

Problem

Route reconciliation currently happens in React. That reconciliation work is heavier than it needs to be for close events, and it can cause avoidable render pressure during rapid stack updates.

This PR moves the close route management into a dedicated managed stack layer and lets the activity/native screen layer handle presentation state more directly.

Before & After

Before After

@netlify
Copy link
Copy Markdown

netlify Bot commented Jun 1, 2026

Deploy Preview for rnst-docs canceled.

Name Link
🔨 Latest commit 4cee7ab
🔍 Latest deploy log https://app.netlify.com/projects/rnst-docs/deploys/6a217efac989ad0008fa4bba

eds2002 added 2 commits June 1, 2026 16:36
Nested screen gestures could lose ownership while the top screen was closing.
The child claim was ignored as soon as its dismissing flag flipped, which let
an ancestor with the same horizontal gesture activate before the child route
finished cleaning up. In the overlay example, a drag after dismissing C could
be claimed by the outer overlay stack instead of B.

Keep child direction claims authoritative until cleanup removes them, even
while the child is dismissing. Register shadowing claims in a layout effect so
ancestor claim maps update before the next paint, narrowing the window where a
new top screen is visible but not yet blocking ancestors. Add a regression for
the ancestor activation decision with a dismissing child claim.
Add an e2e stack example for keep, freeze, detach, and unmount inactive
behavior policies. Each probe can push repeated copies of the same route and
shows live mounted, created, render, tick, and retained payload metrics for
memory profiling.
@eds2002
Copy link
Copy Markdown
Owner Author

eds2002 commented Jun 1, 2026

Note to self, the expo glass cannot be seen on mobile devices only. For some reason it works on sims, so this branch should also include a fix for that 😬

@eds2002 eds2002 self-assigned this Jun 1, 2026
@eds2002 eds2002 linked an issue Jun 1, 2026 that may be closed by this pull request
eds2002 added 3 commits June 1, 2026 20:12
Blocked screens used opacity: 0 before the first transition frame.

On physical iOS devices that can break Liquid Glass sampling.

Move blocked screens offscreen with a shared Y offset.

Normalize blocked destination measurements before viewport guards and bounds writes.

Add a measurement regression for the offset correction.
As of now, the zIndex approach does not seem to be reliable with layout
constraints. Whilst it's not noticeable in same flatlist scenarios, the
issues becomes obvious when theres outside flatlist content, e.g
headers, other flatlist sections. To mitigate this, we'll switch over
react-native-teleport which should be able to solve this issue for us.
@eds2002 eds2002 linked an issue Jun 3, 2026 that may be closed by this pull request
@eds2002
Copy link
Copy Markdown
Owner Author

eds2002 commented Jun 3, 2026

I GOTTA FIX MY AI DOC SLOP

* Controls whether blank-stack screens are rendered with react-native-screens.
*
* When enabled, inactive presentation state is backed by
* `ScreenContainer`/`Screen.activityState`. Set this to `false` to render
Copy link
Copy Markdown
Owner Author

@eds2002 eds2002 Jun 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What? Remove this entire 2nd paragraph

*
* Leave this disabled for normal top-level app stacks.
*/
independent?: boolean;
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May deprecate in the future, you can just import independent navigation from react navigation and wrap it over blank stack. I guess convenience prop ?

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.

[Bug]: Navigation.reveal bug [Bug]: On iOS, Backdrop and Liquid Glass do not display correctly.

1 participant