fix(Android, Tabs): clean up stale fragments instead of crashing #3477
+12
−2
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.
When the FragmentManager has stale fragments from a previous tabs session (e.g., after login → tabs → logout → login → tabs flow), the app would crash with "[RNScreens] There can be only a single focused tab". This fix gracefully cleans up stale fragments instead of crashing.
Description
When using NativeTabs with navigation flows that mount/unmount the tab container (e.g., auth flows), the native Android FragmentManager may retain fragments from a previous session. The previous assertion would crash the app; this fix removes stale fragments gracefully.
Fixes apps using
expo-routerNativeTabs with conditional rendering based on auth state.Changes
TabsHost.ktcommitNowAllowingStateLoss()RNSLog.dTest code and steps to reproduce
Checklist