react-native-screens icon indicating copy to clipboard operation
react-native-screens copied to clipboard

(Android - Crash): FragmentManager is already executing transactions

Open DongGukMon opened this issue 1 year ago • 13 comments

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

DongGukMon avatar Aug 26 '24 01:08 DongGukMon

Hey! 👋

The issue doesn't seem to contain a minimal reproduction.

Could you provide a snack or a link to a GitHub repository under your username that reproduces the problem?

github-actions[bot] avatar Aug 26 '24 01:08 github-actions[bot]

Hey! 👋

It looks like you've omitted a few important sections from the issue template.

Please complete Snack or a link to a repository section.

github-actions[bot] avatar Aug 26 '24 01:08 github-actions[bot]

@DongGukMon Thanks for reporting the issue. It would be hard for me to help based on the information given. Could you provide some more details? Specifically, the navigation structure and the circumstances when the problem occurs? Having a working repro would be ideal.

alduzy avatar Oct 24 '24 12:10 alduzy

@alduzy Have same problem

"react-native": "0.75.4" "react-native-screens": "3.34.0"

androidx.fragment.app.w.a0 androidx.fragment.app.w.c0 androidx.fragment.app.a.j com.swmansion.rnscreens.n.t com.swmansion.rnscreens.n.u com.swmansion.rnscreens.n.v com.swmansion.rnscreens.n.o com.swmansion.rnscreens.l.setActivityState com.swmansion.rnscreens.ScreenViewManager.setActivityState SourceFile:3 com.swmansion.rnscreens.ScreenViewManager.setActivityState SourceFile:2 com.swmansion.rnscreens.ScreenViewManager.setActivityState SourceFile:1 S4.p.setProperty com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps SourceFile:4 com.facebook.react.uimanager.ViewManager.updateProperties com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties com.facebook.react.uimanager.UIImplementation.synchronouslyUpdateViewOnUIThread com.facebook.react.uimanager.UIManagerModule.synchronouslyUpdateViewOnUIThread com.facebook.react.animated.PropsAnimatedNode.updateView com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes com.facebook.react.animated.NativeAnimatedNodesManager.handleEvent com.facebook.react.animated.NativeAnimatedNodesManager.onEventDispatch com.facebook.react.uimanager.events.EventDispatcherImpl.dispatchEvent com.reactnativepagerview.PagerViewViewManager$b.b androidx.viewpager2.widget.b.b androidx.viewpager2.widget.b.b androidx.viewpager2.widget.e.c androidx.viewpager2.widget.e.a androidx.recyclerview.widget.RecyclerView.L androidx.recyclerview.widget.RecyclerView.setScrollState androidx.recyclerview.widget.RecyclerView.r androidx.recyclerview.widget.RecyclerView.onTouchEvent androidx.viewpager2.widget.g$m.onTouchEvent android.view.View.dispatchTouchEvent View.java:15086 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3089 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2788 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3091 android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2802 android.view.ViewGroup.cancelTouchTarget ViewGroup.java:3011 android.view.ViewGroup.removeViewInternal ViewGroup.java:5566 android.view.ViewGroup.removeViewInternal ViewGroup.java:5544 android.view.ViewGroup.removeView ViewGroup.java:5475 com.swmansion.rnscreens.n.removeView androidx.fragment.app.K$e$c.a androidx.fragment.app.d.s androidx.fragment.app.d$b.run androidx.fragment.app.K$e.c androidx.fragment.app.K$d.c androidx.fragment.app.K$e.d androidx.fragment.app.d$l.a androidx.fragment.app.d.w androidx.fragment.app.d.f androidx.fragment.app.K.g androidx.fragment.app.w.e0 androidx.fragment.app.w.k1 androidx.fragment.app.w.c0 androidx.fragment.app.a.j com.swmansion.rnscreens.n.t com.swmansion.rnscreens.n.u com.swmansion.rnscreens.n.v com.swmansion.rnscreens.n.o com.swmansion.rnscreens.l.setActivityState com.swmansion.rnscreens.ScreenViewManager.setActivityState SourceFile:5 com.swmansion.rnscreens.ScreenViewManager.setActivityState SourceFile:2 com.swmansion.rnscreens.ScreenViewManager.setActivityState SourceFile:1 S4.p.setProperty com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps SourceFile:4 com.facebook.react.uimanager.ViewManager.updateProperties com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties com.facebook.react.uimanager.UIImplementation.synchronouslyUpdateViewOnUIThread com.facebook.react.uimanager.UIManagerModule.synchronouslyUpdateViewOnUIThread com.facebook.react.animated.PropsAnimatedNode.updateView com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes com.facebook.react.animated.NativeAnimatedNodesManager.runUpdates com.facebook.react.animated.NativeAnimatedModule$1.doFrameGuarded com.facebook.react.uimanager.GuardedFrameCallback.doFrame com.facebook.react.modules.core.ReactChoreographer$1.doFrame android.view.Choreographer$CallbackRecord.run Choreographer.java:1229 android.view.Choreographer$CallbackRecord.run Choreographer.java:1239 android.view.Choreographer.doCallbacks Choreographer.java:899 android.view.Choreographer.doFrame Choreographer.java:827 android.view.Choreographer$FrameDisplayEventReceiver.run Choreographer.java:1214 android.os.Handler.handleCallback Handler.java:942 android.os.Handler.dispatchMessage Handler.java:99 android.os.Looper.loopOnce Looper.java:201 android.os.Looper.loop Looper.java:288 android.app.ActivityThread.main ActivityThread.java:8010 java.lang.reflect.Method.invoke Method.java com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:566 com.android.internal.os.ZygoteInit.main ZygoteInit.java:957

ealimardaniii avatar Dec 30 '24 13:12 ealimardaniii

image

Having the same error trace

"react-native-screens": "^3.35.0", "react-native": "0.72.17", "react": "18.2.0",

ivannzme avatar Jan 08 '25 20:01 ivannzme

@ivannzme do you happen to have any additional information, e.g. in what navigation circumstances the crash occurs?

kkafar avatar Jan 09 '25 13:01 kkafar

@ivannzme do you happen to have any additional information, e.g. in what navigation circumstances the crash occurs?

unfortunately from our side we have not been able to replicate it yet, we are just seeing it from our error logging console, happy to add more info once we have

ivannzme avatar Jan 09 '25 20:01 ivannzme

this is still exist

         Fatal Exception: java.lang.RuntimeException: java.lang.IllegalStateException: FragmentManager is already executing transactions
       at com.facebook.react.animated.NativeAnimatedModule$1.doFrameGuarded(NativeAnimatedModule.java:258)
       at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.kt:22)
       at com.facebook.react.modules.core.ReactChoreographer$1.doFrame(ReactChoreographer.java:89)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1688)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1699)
       at android.view.Choreographer.doCallbacks(Choreographer.java:1154)
       at android.view.Choreographer.doFrame(Choreographer.java:1070)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1647)
       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:9063)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

Nader-CS avatar Jan 14 '25 13:01 Nader-CS

Faced the same issue after upgrading to the latest version. In my case the culprit was having presentation: 'formSheet', on the nested stack when navigating inside it, so maybe it'll help with the fix.

To simplify, I've had the following navigation structure: RootStack at the top, which has NestedStack that is a stack navigator and there's a NestedScreen inside the NestedStack. The crash was happening when navigating from RootStack to NestedScreen like that:

navigation.navigate('NestedStack', {
  screen: 'NestedScreen',
  params: {},
});

The issue is gone after removing presentation: 'formSheet', from the NestedStack or replacing it with 'modal'.

haikov avatar Jan 22 '25 09:01 haikov

This still exists:

java.lang.IllegalStateException: FragmentManager is already executing transactions
        at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1947)
        at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1977)
        at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
        at com.swmansion.rnscreens.ScreenStack.onUpdate(ScreenStack.kt:312)
        at com.swmansion.rnscreens.ScreenContainer.performUpdates(ScreenContainer.kt:359)
        at com.swmansion.rnscreens.ScreenContainer.performUpdatesNow(ScreenContainer.kt:351)
        at com.swmansion.rnscreens.ScreenContainer.setFragmentManager(ScreenContainer.kt:137)
        at com.swmansion.rnscreens.ScreenContainer.setupFragmentManager(ScreenContainer.kt:190)
        at com.swmansion.rnscreens.ScreenContainer.onAttachedToWindow(ScreenContainer.kt:262)
        at android.view.View.dispatchAttachedToWindow(View.java:20109)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3430)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3437)
        at android.view.ViewGroup.addViewInner(ViewGroup.java:5193)
        at android.view.ViewGroup.addView(ViewGroup.java:4979)
        at android.view.ViewGroup.addView(ViewGroup.java:4919)
        at androidx.fragment.app.FragmentStateManager.addViewToContainer(FragmentStateManager.java:901)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:585)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:286)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2214)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2115)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2052)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3327)
        at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:3244)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:3201)
        at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:648)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:304)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2214)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2115)
        at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:2002)
        at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
        at com.swmansion.rnscreens.ScreenStack.onUpdate(ScreenStack.kt:312)
        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:247)
        at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:116)
        at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:45)
        at com.swmansion.rnscreens.ScreenViewManager.setSheetInitialDetent(ScreenViewManager.kt:27)
        at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:27)
        at com.facebook.react.viewmanagers.RNSScreenManagerDelegate.setProperty(RNSScreenManagerDelegate.java:107)
        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.UIViewOperationQueue$UpdatePropertiesOperation.execute(UIViewOperationQueue.java:94)
        at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:910)
        at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1023)
        at com.facebook.react.uimanager.UIViewOperationQueue.-$$Nest$mflushPendingBatches(UIViewOperationQueue.java:1)
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1083)
        at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
        at com.facebook.react.modules.core.ReactChoreographer$1.doFrame(ReactChoreographer.java:89)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1039)
        at android.view.Choreographer.doCallbacks(Choreographer.java:864)
        at android.view.Choreographer.doFrame(Choreographer.java:794)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1026)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7397)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

janezhu918 avatar Mar 13 '25 16:03 janezhu918

any updates on it?

java.lang.RuntimeException: java.lang.IllegalStateException: FragmentManager is already executing transactions
    at com.facebook.react.animated.NativeAnimatedModule$1.doFrameGuarded(NativeAnimatedModule.java:260)
    at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.kt:25)
    at com.facebook.react.modules.core.ReactChoreographer.frameCallback$lambda$1(ReactChoreographer.kt:59)
    at com.facebook.react.modules.core.ReactChoreographer.$r8$lambda$nSkFhrr5T7rop_XKwzlLov4NLLw
    at com.facebook.react.modules.core.ReactChoreographer$$ExternalSyntheticLambda0.doFrame(D8$$SyntheticClass:0)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1106)
    at android.view.Choreographer.doCallbacks(Choreographer.java:866)
    at android.view.Choreographer.doFrame(Choreographer.java:792)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1092)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:226)
    at android.os.Looper.loop(Looper.java:313)
    at android.app.ActivityThread.main(ActivityThread.java:8663)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
java.lang.IllegalStateException: FragmentManager is already executing transactions
    at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1717)
    at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1747)
    at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
    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.onChildUpdate(ScreenContainer.kt:95)
    at com.swmansion.rnscreens.Screen.setActivityState(Screen.kt:301)
    at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:116)
    at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:45)
    at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:27)
    at com.facebook.react.viewmanagers.RNSScreenManagerDelegate.setProperty(RNSScreenManagerDelegate.java:107)
    at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:46)
    at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:93)
    at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:139)
    at com.facebook.react.uimanager.UIImplementation.synchronouslyUpdateViewOnUIThread(UIImplementation.java:306)
    at com.facebook.react.uimanager.UIManagerModule.synchronouslyUpdateViewOnUIThread(UIManagerModule.java:341)
    at com.facebook.react.animated.PropsAnimatedNode.updateView(PropsAnimatedNode.kt:109)
    at com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes(NativeAnimatedNodesManager.java:786)
    at com.facebook.react.animated.NativeAnimatedNodesManager.handleEvent(NativeAnimatedNodesManager.java:614)
    at com.facebook.react.animated.NativeAnimatedNodesManager.onEventDispatch(NativeAnimatedNodesManager.java:584)
    at com.facebook.react.uimanager.events.EventDispatcherImpl.dispatchEvent(EventDispatcherImpl.java:118)
    at com.reactnativepagerview.PagerViewViewManager$createViewInstance$1$1.onPageScrolled(PagerViewViewManager.kt:43)
    at androidx.viewpager2.widget.CompositeOnPageChangeCallback.onPageScrolled(CompositeOnPageChangeCallback.java:59)
    at androidx.viewpager2.widget.CompositeOnPageChangeCallback.onPageScrolled(CompositeOnPageChangeCallback.java:59)
    at androidx.viewpager2.widget.ScrollEventAdapter.dispatchScrolled(ScrollEventAdapter.java:437)
    at androidx.viewpager2.widget.ScrollEventAdapter.onScrollStateChanged(ScrollEventAdapter.java:133)
    at androidx.recyclerview.widget.RecyclerView.dispatchOnScrollStateChanged(RecyclerView.java:5739)
    at androidx.recyclerview.widget.RecyclerView.setScrollState(RecyclerView.java:1690)
    at androidx.recyclerview.widget.RecyclerView.cancelScroll(RecyclerView.java:3924)
    at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3901)
    at androidx.viewpager2.widget.ViewPager2$RecyclerViewImpl.onTouchEvent(ViewPager2.java:996)
    at android.view.View.dispatchTouchEvent(View.java:15076)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3891)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3581)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at com.th3rdwave.safeareacontext.SafeAreaView.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at com.facebook.react.views.view.ReactViewGroup.dispatchTouchEvent
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3893)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:3597)
    at android.view.ViewGroup.cancelTouchTarget(ViewGroup.java:3813)
    at android.view.ViewGroup.removeViewInternal(ViewGroup.java:6406)
    at android.view.ViewGroup.removeViewInternal(ViewGroup.java:6384)
    at android.view.ViewGroup.removeView(ViewGroup.java:6315)
    at com.swmansion.rnscreens.ScreenContainer.removeView(ScreenContainer.kt:72)
    at androidx.fragment.app.SpecialEffectsController$Operation$State.applyState(SpecialEffectsController.kt:398)
    at androidx.fragment.app.DefaultSpecialEffectsController.applyContainerChanges(DefaultSpecialEffectsController.kt:757)
    at androidx.fragment.app.DefaultSpecialEffectsController.executeOperations$lambda$2(DefaultSpecialEffectsController.kt:90)
    at androidx.fragment.app.DefaultSpecialEffectsController.$r8$lambda$1QpWHhDUzj8NqxMUz0S9KkFt5ZY
    at androidx.fragment.app.DefaultSpecialEffectsController$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
    at androidx.fragment.app.SpecialEffectsController$Operation.complete(SpecialEffectsController.kt:608)
    at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.kt:663)
    at androidx.fragment.app.SpecialEffectsController$Operation.completeSpecialEffect(SpecialEffectsController.kt:587)
    at androidx.fragment.app.DefaultSpecialEffectsController$SpecialEffectsInfo.completeSpecialEffect(DefaultSpecialEffectsController.kt:774)
    at androidx.fragment.app.DefaultSpecialEffectsController.startAnimations(DefaultSpecialEffectsController.kt:150)
    at androidx.fragment.app.DefaultSpecialEffectsController.executeOperations(DefaultSpecialEffectsController.kt:101)
    at androidx.fragment.app.SpecialEffectsController.executePendingOperations(SpecialEffectsController.kt:234)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1956)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845)
    at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1751)
    at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
    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.onChildUpdate(ScreenContainer.kt:95)
    at com.swmansion.rnscreens.Screen.setActivityState(Screen.kt:301)

kdwkr avatar May 13 '25 01:05 kdwkr

Facing same issue, Any solution on this ??

nilesh-simform avatar May 14 '25 07:05 nilesh-simform

+1 facing this issue because of presentation formSheet

EDIT: fixed my issue by updating react-native-screens from 4.4.0 to 4.7.0

Raiden-16F7 avatar May 16 '25 14:05 Raiden-16F7

I'm running v4.10.0 with "react-native": "0.77.1" and "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/drawer": "^7.3.9", "@react-navigation/elements": "^2.3.8", "@react-navigation/native": "^7.1.6", "@react-navigation/stack": "^7.2.10",

We also facing this issue and we notice a significant raising of cases when we release a new EAS update (Expo).

We don't have any potential reproduction steps as we can't reproduce. However around 1% of our android users are affected. This number is lower when we dont release an eas update.

I tried to understand the android navigation system to figure out why this happens in this library but without success.

anyone has leads ?

hedia-m avatar Jul 22 '25 09:07 hedia-m

+1 facing this issue because of presentation formSheet

EDIT: fixed my issue by updating react-native-screens from 4.4.0 to 4.7.0

Still exist even if upgrading to 4.7.0

ronaldkwokhk01 avatar Sep 01 '25 04:09 ronaldkwokhk01

Same issue occurs on Android when switching between tabs quickly.

Additional details: • Happens only on Android. • Occurs when using expo-dev-client. • A standalone APK does not crash when navigating.

ChronoByteCosmonaut avatar Nov 13 '25 16:11 ChronoByteCosmonaut