fix(ios): retry blocked auto-present after recycled controller sessions - #800
Open
maxlapides wants to merge 3 commits into
Open
fix(ios): retry blocked auto-present after recycled controller sessions#800maxlapides wants to merge 3 commits into
maxlapides wants to merge 3 commits into
Conversation
…ions Fast dismiss and re-present can recycle a view while its controller is still dismissing, leaving auto-present blocked with no later retry. Scope deferred presentation and queued sizing to the current mount, suppress stale controller-session events, and retry after dismissal completes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…odule React Native zeroes view.tag before prepareForRecycle, so unregistering self.tag removes key 0 while TrueSheetModule retains the recycled host. Store the registered tag and unregister that value during recycle and deallocation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@maxlapides is attempting to deploy a commit to the lodev09 Team on Vercel. A member of the Team first needs to authorize it. |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
9 tasks
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.
Summary
This forward-ports the iOS lifecycle fixes from #793 onto
main(the v4 line), as offered in that PR's discussion.A fast dismiss/re-present cycle can recycle the Fabric host while its retained controller is still finishing the previous presentation session. This fixes four concrete failure families:
initialDetentIndexauto-presentation, and remain permanently dead because nothing retries it. Initial presentation now retries after attachment, prop updates, or dismissal completion, with deferred work scoped to the current mount and captured presentation intent.view.tagbeforeprepareForRecycle, so unregisteringself.tagremoved key0whileTrueSheetModule's strong registry retained every recycled host. The view now stores the tag it registered and unregisters that exact value.The v4 port also adds review-driven hardening for v4-specific asynchronous paths: the interactive-navigation dismissal completion is mount-scoped; pending detents are applied before retry presentation and active-index clamping; and delayed detent/position emissions are presentation-session-scoped, including the 0.1-second transition-end settle.
This is the v4 counterpart to #793 and fixes the TrueSheet auto-present/lifecycle half of #789. It does not claim to fix the remaining #789 symptom where a presented sheet's second-commit subtree is not inserted until a later unrelated commit; as documented in #793, that is an upstream React Native Fabric transaction issue.
The
CHANGELOG.mdentry will be pushed immediately after this PR number exists.Type of Change
Test Plan
yarn typecheckpasses.yarn lintpasses.yarn test --watchman=falsepasses (65 tests).Screenshots / Videos
Not applicable; this changes lifecycle handling without changing the sheet's visual design.
Checklist