react-native-screens
react-native-screens copied to clipboard
(Android - Crash): FragmentManager is already executing transactions
Description
We are encountering the "FragmentManager is already executing transactions" error in the app after installing the latest version of react-native-screens. This same issue was previously discussed in #1506, but it was closed without a clear resolution, so I am reopening the issue. Additionally, I am sharing the issue stack trace and the current version of react-navigation that we are using. Thank you.
Caused by java.lang.IllegalStateException: FragmentManager is already executing transactions
at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1931)
at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1967)
at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311)
at com.swmansion.rnscreens.ScreenContainer.onUpdate(ScreenContainer.kt:415)
at com.swmansion.rnscreens.ScreenContainer.performUpdates(ScreenContainer.kt:359)
at com.swmansion.rnscreens.ScreenContainer.performUpdatesNow(ScreenContainer.kt:351)
at com.swmansion.rnscreens.ScreenContainer.notifyChildUpdate(ScreenContainer.kt:95)
at com.swmansion.rnscreens.Screen.setActivityState(Screen.kt:156)
at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:72)
at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:42)
at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:24)
at com.facebook.react.viewmanagers.RNSScreenManagerDelegate.setProperty(RNSScreenManagerDelegate.java:99)
at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:46)
at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:77)
at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:142)
at com.facebook.react.uimanager.UIImplementation.synchronouslyUpdateViewOnUIThread(UIImplementation.java:292)
at com.facebook.react.uimanager.UIManagerModule.synchronouslyUpdateViewOnUIThread(UIManagerModule.java:327)
at com.facebook.react.animated.PropsAnimatedNode.updateView(PropsAnimatedNode.java:122)
at com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes(NativeAnimatedNodesManager.java:744)
at com.facebook.react.animated.NativeAnimatedNodesManager.handleEvent(NativeAnimatedNodesManager.java:599)
at com.facebook.react.animated.NativeAnimatedNodesManager.onEventDispatch(NativeAnimatedNodesManager.java:558)
at com.facebook.react.uimanager.events.EventDispatcherImpl.dispatchEvent(EventDispatcherImpl.java:116)
at com.facebook.react.views.scroll.ReactScrollViewHelper.emitScrollEvent(ReactScrollViewHelper.java:138)
at com.facebook.react.views.scroll.ReactScrollViewHelper.emitScrollEvent(ReactScrollViewHelper.java:78)
at com.facebook.react.views.scroll.ReactScrollViewHelper.updateStateOnScrollChanged(ReactScrollViewHelper.java:482)
at com.facebook.react.views.scroll.ReactScrollView.onScrollChanged(ReactScrollView.java:390)
at android.view.View.scrollTo(View.java:20842)
at android.widget.ScrollView.scrollTo(ScrollView.java:2888)
at com.facebook.react.views.scroll.ReactScrollView.scrollTo(ReactScrollView.java:1089)
at android.view.View.scrollBy(View.java:20857)
at com.facebook.react.views.scroll.ReactScrollView.scrollToChild(ReactScrollView.java:375)
at com.facebook.react.views.scroll.ReactScrollView.requestChildFocus(ReactScrollView.java:347)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
at android.view.View.handleFocusGainInternal(View.java:8392)
at android.view.ViewGroup.handleFocusGainInternal(ViewGroup.java:855)
at android.view.View.requestFocusNoSearch(View.java:14968)
at android.view.View.requestFocus(View.java:14942)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3530)
at android.webkit.WebView.access$901(WebView.java:117)
at android.webkit.WebView$PrivateAccess.super_requestFocus(WebView.java:2466)
at com.android.webview.chromium.WebViewChromium.requestFocus(chromium-TrichromeWebViewGoogle6432.aab-stable-653310333:52)
at android.webkit.WebView.requestFocus(WebView.java:3035)
at android.widget.ScrollView.onRequestFocusInDescendants(ScrollView.java:2643)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3536)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
at android.view.ViewGroup.requestFocus(ViewGroup.java:3536)
at android.view.View.requestFocus(View.java:14909)
at android.view.View.requestFocus(View.java:14851)
at android.view.View.rootViewRequestFocus(View.java:8584)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5864)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5815)
at android.view.ViewGroup.removeView(ViewGroup.java:5746)
at com.swmansion.rnscreens.ScreenContainer.removeView(ScreenContainer.kt:72)
at androidx.fragment.app.SpecialEffectsController$Operation$State.applyState(SpecialEffectsController.java:452)
at androidx.fragment.app.DefaultSpecialEffectsController.applyContainerChanges(DefaultSpecialEffectsController.java:743)
at androidx.fragment.app.DefaultSpecialEffectsController$1.run(DefaultSpecialEffectsController.java:108)
at androidx.fragment.app.SpecialEffectsController$Operation.complete(SpecialEffectsController.java:695)
at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.java:744)
at androidx.fragment.app.SpecialEffectsController$Operation.completeSpecialEffect(SpecialEffectsController.java:672)
at androidx.fragment.app.DefaultSpecialEffectsController$SpecialEffectsInfo.completeSpecialEffect(DefaultSpecialEffectsController.java:776)
at androidx.fragment.app.DefaultSpecialEffectsController.startAnimations(DefaultSpecialEffectsController.java:147)
at androidx.fragment.app.DefaultSpecialEffectsController.executeOperations(DefaultSpecialEffectsController.java:120)
at androidx.fragment.app.SpecialEffectsController.executePendingOperations(SpecialEffectsController.java:297)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2202)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106)
at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1971)
at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311)
at com.swmansion.rnscreens.ScreenContainer.onUpdate(ScreenContainer.kt:415)
at com.swmansion.rnscreens.ScreenContainer.performUpdates(ScreenContainer.kt:359)
at com.swmansion.rnscreens.ScreenContainer.performUpdatesNow(ScreenContainer.kt:351)
at com.swmansion.rnscreens.ScreenContainer.notifyChildUpdate(ScreenContainer.kt:95)
at com.swmansion.rnscreens.Screen.setActivityState(Screen.kt:156)
at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:70)
at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:42)
at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:24)
at com.facebook.react.viewmanagers.RNSScreenManagerDelegate.setProperty(RNSScreenManagerDelegate.java:99)
at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:46)
at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:77)
at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:142)
at com.facebook.react.uimanager.UIImplementation.synchronouslyUpdateViewOnUIThread(UIImplementation.java:292)
at com.facebook.react.uimanager.UIManagerModule.synchronouslyUpdateViewOnUIThread(UIManagerModule.java:327)
at com.facebook.react.animated.PropsAnimatedNode.updateView(PropsAnimatedNode.java:122)
at com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes(NativeAnimatedNodesManager.java:744)
at com.facebook.react.animated.NativeAnimatedNodesManager.runUpdates(NativeAnimatedNodesManager.java:640)
at com.facebook.react.animated.NativeAnimatedModule$1.doFrameGuarded(NativeAnimatedModule.java:243)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1687)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698)
at android.view.Choreographer.doCallbacks(Choreographer.java:1153)
at android.view.Choreographer.doFrame(Choreographer.java:1069)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8919)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
"@react-navigation/bottom-tabs": "^6.5.11",
"@react-navigation/elements": "^1.3.21",
"@react-navigation/material-top-tabs": "^6.6.5",
"@react-navigation/native": "^6.1.9",
"@react-navigation/stack": "^6.3.20",
Steps to reproduce
This issue seems to be occurring in very rare cases, affecting about 16 to 17 users out of tens of thousands on a daily basis. Unfortunately, due to the rarity of the issue, I am unable to provide a reproducible test case, and I apologize for that.
Snack or a link to a repository
Screens version
3.34.0
React Native version
0.73.9
Platforms
Android
JavaScript runtime
Hermes
Workflow
React Native (without Expo)
Architecture
Paper (Old Architecture)
Build type
Release mode
Device
Real device
Device model
Samsung Galaxy
Acknowledgements
Yes