From e7cd9988fa961d443bd1849e8d5b766398b551bb Mon Sep 17 00:00:00 2001 From: lhan Date: Tue, 28 Apr 2026 15:22:33 +0900 Subject: [PATCH] fix(Android, FormSheet): start postponed transition immediately when screen has valid dimensions after pre-layout In brownfield Fabric apps, the container's window insets are dispatched before the formSheet's insets listener is attached, so BottomSheetTransitionCoordinator.areInsetsApplied never becomes true and the postponed enter transition is permanently stuck. After the pre-layout pass, if the screen already has valid dimensions, start the transition immediately. The existing insets listener still handles re-layout for dynamic changes (e.g. keyboard). Closes #4010 --- .../main/java/com/swmansion/rnscreens/ScreenStackFragment.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt index dd82c6c75e..3aff92ab28 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt @@ -263,6 +263,11 @@ class ScreenStackFragment : ) coordinatorLayout.layout(0, 0, container.width, container.height) + if (screen.width > 0 && screen.height > 0) { + screen.requestTriggeringPostponedEnterTransition() + screen.triggerPostponedEnterTransitionIfNeeded() + } + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { val bottomSheetWindowInsetListenerChain = requireBottomSheetWindowInsetsListenerChain() bottomSheetWindowInsetListenerChain.addListener { _, windowInsets ->