fix(android): pin the sheet's ancestor wrappers as real views (collapsable=false) - #79
Open
LeCiel wants to merge 1 commit into
Open
Conversation
…sable=false)
On Android with the New Architecture, the three layout-only wrappers
above the native BottomSheetView are flattenable, and the outer sheet
wrapper toggles pointerEvents on every open/close - forcing a
flatten -> unflatten transition under portal-entry churn. That
reparenting batch can arrive without the wrapper's Create mutation,
and a failing batch mount item kills the whole surface:
RetryableMountingLayerException 'Unable to find viewState for tag',
white screen, dead touches.
collapsable={false} (a no-op on iOS) keeps the wrappers real from
creation so the transition can never be emitted. The content views
below the native view already pin collapsable={false}; this closes the
same gap for the ancestors.
Fixes software-mansion-labs#78
This was referenced Aug 31, 2026
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.
Fixes #78.
On Android with the New Architecture, the three layout-only wrappers above the native
BottomSheetVieware flattenable, and the outer sheet wrapper togglespointerEvents('none' <-> 'auto') on every open/close - forcing a flatten -> unflatten transition under portal-entry churn. That reparenting batch can arrive without the wrapper's Create mutation (an RN Fabric transaction/differ bug, reported separately to react/react-native), and a failing batch mount item kills the whole surface:RetryableMountingLayerException: Unable to find viewState for tag, white screen, dead touches. Full evidence (mount batch dumps, surface registry, causal chain) in #78.collapsable={false}(a no-op on iOS) keeps the wrappers real from creation so the transition can never be emitted. The content views below the native view already pincollapsable={false}; this closes the same gap for the ancestors.Verified on device (Galaxy S23 Ultra, RN 0.85.3, our production app): pre-fix the crash reproduced within ~3 rapid open/close cycles of an action sheet; pinning only the portal wrapper moved the identical crash exactly one level down to the outer sheet wrapper (causal confirmation); with all three pinned, 40 rapid-fire cycles produced zero occurrences. The crash had reached ~2% of Android sessions in production before the fix.