Closed henrymoulton closed 3 years ago
Hey @henrymoulton, thank you for reporting. Is this crash something you can reproduce locally, or just traces collected from the app running in production?
Thanks for responding @kmagiera, this was collected in production.
We’ve since turned Screens off and not had this crash.
Just got a similar stack trace on production today as well:
java.lang.IllegalArgumentException No view found for id 0x109d (unknown) for fragment ScreenFragment{d744b97} (8af2b140-99e8-4855-a81a-f3d52a32cdeb) id=0x109d}
FragmentStateManager.java:315 androidx.fragment.app.FragmentStateManager.createView
FragmentManager.java:1187 androidx.fragment.app.FragmentManager.moveToState
FragmentManager.java:2224 androidx.fragment.app.FragmentManager.addAddedFragments
FragmentManager.java:1997 androidx.fragment.app.FragmentManager.executeOpsTogether
FragmentManager.java:1953 androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute
FragmentManager.java:1849 androidx.fragment.app.FragmentManager.execPendingActions
FragmentManager.java:489 androidx.fragment.app.FragmentManager.executePendingTransactions
ScreenContainer.java:227 com.swmansion.rnscreens.ScreenContainer.onDetachedFromWindow
View.java:17611 android.view.View.dispatchDetachedFromWindow
ViewGroup.java:3729 android.view.ViewGroup.dispatchDetachedFromWindow
ViewGroup.java:5494 android.view.ViewGroup.removeAllViewsInLayout
ViewGroup.java:5440 android.view.ViewGroup.removeAllViews
ReactViewManager.java:399 com.facebook.react.views.view.ReactViewManager.removeAllViews
ReactViewManager.java:37 com.facebook.react.views.view.ReactViewManager.removeAllViews
NativeViewHierarchyManager.java:620 com.facebook.react.uimanager.NativeViewHierarchyManager.dropView
NativeViewHierarchyManager.java:617 com.facebook.react.uimanager.NativeViewHierarchyManager.dropView
NativeViewHierarchyManager.java:617 com.facebook.react.uimanager.NativeViewHierarchyManager.dropView
NativeViewHierarchyManager.java:617 com.facebook.react.uimanager.NativeViewHierarchyManager.dropView
NativeViewHierarchyManager.java:494 com.facebook.react.uimanager.NativeViewHierarchyManager.manageChildren
UIViewOperationQueue.java:205 com.facebook.react.uimanager.UIViewOperationQueue$ManageChildrenOperation.execute
UIViewOperationQueue.java:779 com.facebook.react.uimanager.UIViewOperationQueue$1.run
UIViewOperationQueue.java:888 com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches
UIViewOperationQueue.java:42 com.facebook.react.uimanager.UIViewOperationQueue.access$2200
UIViewOperationQueue.java:948 com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded
GuardedFrameCallback.java:28 com.facebook.react.uimanager.GuardedFrameCallback.doFrame
ReactChoreographer.java:174 com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame
ChoreographerCompat.java:84 com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame
Choreographer.java:979 android.view.Choreographer$CallbackRecord.run
Choreographer.java:790 android.view.Choreographer.doCallbacks
Choreographer.java:718 android.view.Choreographer.doFrame
Choreographer.java:967 android.view.Choreographer$FrameDisplayEventReceiver.run
Handler.java:808 android.os.Handler.handleCallback
Handler.java:101 android.os.Handler.dispatchMessage
Looper.java:166 android.os.Looper.loop
ActivityThread.java:7523 android.app.ActivityThread.main
Method.java:-2 java.lang.reflect.Method.invoke
Zygote.java:245 com.android.internal.os.Zygote$MethodAndArgsCaller.run
ZygoteInit.java:921 com.android.internal.os.ZygoteInit.main
It's slightly different from what @henrymoulton has attached as mine clearly has an rnscreens
package in the stack trace. I only had one case on HUAWEI PRA-LX1 Android 8.0.
"react-native-screens": "^2.4.0",
"react-native-gesture-handler": "^1.5.3",
"react-native": "0.61.5",
"react-navigation": "^4.3.7",
"react-navigation-stack": "^2.3.11",
"react-navigation-tabs": "^2.8.11",
We're seeing the same issue in production. Working to find a device and replication steps.
We have the same issue in production. According to logs in Crashlytics we know that it happens on screens with webview.
We have already added workaround for webviews with renderToHardwareTextureAndroid
, and maybe it's related to crashes?
@ardentum if you are talking about https://github.com/software-mansion/react-native-screens/issues/105#issuecomment-669891558 as a workaround, it only works on native-stack
since normal stack
navigator does not fire the same events so it won't work there. Could you try and add this change: https://github.com/software-mansion/react-native-screens/pull/607 if you are using stack
navigator and see if fixes the issue?
@WoLewicki Yes, I mentioned your comment for #105. We use stack
, and there was a lot of crashes on screens with webview, but your workaround somehow helped us. Maybe just for some cases. Thank you!
Hmm Ok, @adkenyon @henrymoulton @akontaroudis can you elaborate on if this crash happens only on screens with WebView
?
Looking at our error logs, the large majority of crashes are on app start, of the ones not happening on app start, I don't see any correlation with screens that have web views.
Not sure if related to this issue 100%, but I have noticed an increasing amount of crashes also in our prod release for ScreenFragment
. I'm currently using v2.9.0, but also React Navigation v5 + React Native v0.62.2.
Here's the last step of the stacktrace:
Caused by: java.lang.IllegalStateException:
at com.swmansion.rnscreens.ScreenFragment.<init> (ScreenFragment.java:38)
at java.lang.reflect.Constructor.newInstance0 (Constructor.java)
at java.lang.reflect.Constructor.newInstance (Constructor.java:343)
at androidx.fragment.app.Fragment.instantiate (Fragment.java:548)
at androidx.fragment.app.FragmentContainer.instantiate (FragmentContainer.java:57)
at androidx.fragment.app.FragmentManager$3.instantiate (FragmentManager.java:390)
at androidx.fragment.app.FragmentStateManager.<init> (FragmentStateManager.java:74)
at androidx.fragment.app.FragmentManager.restoreSaveState (FragmentManager.java:2454)
at androidx.fragment.app.FragmentController.restoreSaveState (FragmentController.java:196)
at androidx.fragment.app.FragmentActivity.onCreate (FragmentActivity.java:287)
at androidx.appcompat.app.AppCompatActivity.onCreate (AppCompatActivity.java:106)
at com.facebook.react.ReactActivity.onCreate (ReactActivity.java:44)
at com.kankkunen.MainActivity.onCreate (MainActivity.java:28)
at android.app.Activity.performCreate (Activity.java:8086)
at android.app.Activity.performCreate (Activity.java:8074)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1313)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3755)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3961)
at android.app.ActivityThread.handleRelaunchActivityInner (ActivityThread.java:5930)
at android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:5820)
at android.app.servertransaction.ActivityRelaunchItem.execute (ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2386)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:213)
at android.app.ActivityThread.main (ActivityThread.java:8178)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1101)
If any other info is needed, I'm happy to help 🙂
@pedpess do you pass null to onCreate
the same way it is shown in the https://github.com/software-mansion/react-native-screens/issues/463#issue-598797663?
Hi, I am getting this error in production build of our app,: react-native screens version is "2.10.1", can anybody tell me why this could be happening Fatal Exception: java.lang.IllegalArgumentException: No view found for id 0x5e9 (unknown) for fragment g{5f69ea9} (48fffc1a-4692-4b67-897b-b59d9ee691b1) id=0x5e9} at androidx.fragment.app.FragmentStateManager.a(FragmentStateManager.java:131) at androidx.fragment.app.FragmentManager.a(FragmentManager.java:237) at androidx.fragment.app.FragmentManager.a(FragmentManager.java:37) at androidx.fragment.app.FragmentManager.b(FragmentManager.java:130) at androidx.fragment.app.FragmentManager.c(FragmentManager.java:94) at androidx.fragment.app.FragmentManager.c(FragmentManager.java:21) at androidx.fragment.app.FragmentManager.n(FragmentManager.java:1) at com.swmansion.rnscreens.ScreenContainer.onDetachedFromWindow(ScreenContainer.java:15) at android.view.View.dispatchDetachedFromWindow(View.java:17612) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3733) at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:5618) at android.view.ViewGroup.removeAllViews(ViewGroup.java:5564) at com.facebook.react.views.view.ReactClippingViewManager.removeAllViews(ReactClippingViewManager.java:13) at com.facebook.react.views.view.ReactClippingViewManager.removeAllViews(ReactClippingViewManager.java:2) at com.facebook.react.uimanager.NativeViewHierarchyManager.a(NativeViewHierarchyManager.java:121) at com.facebook.react.uimanager.NativeViewHierarchyManager.a(NativeViewHierarchyManager.java:115) at com.facebook.react.uimanager.NativeViewHierarchyManager.a(NativeViewHierarchyManager.java:115) at com.facebook.react.uimanager.NativeViewHierarchyManager.a(NativeViewHierarchyManager.java:307) at com.facebook.react.uimanager.UIViewOperationQueue$ManageChildrenOperation.execute(UIViewOperationQueue.java:16) at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:72) at com.facebook.react.uimanager.UIViewOperationQueue.i(UIViewOperationQueue.java:53) at com.facebook.react.uimanager.UIViewOperationQueue.access$2400(UIViewOperationQueue.java) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:31) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:46) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:2) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:984) at android.view.Choreographer.doCallbacks(Choreographer.java:798) at android.view.Choreographer.doFrame(Choreographer.java:727) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:972) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:192) at android.app.ActivityThread.main(ActivityThread.java:6754) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828)
@WoLewicki Yes I do, first I initiate the SplashScreen.show(this, true)
from react-native-splash-screen
lib in my onCreate
After that, I invoke super.onCreate(null)
. Do you think that passing the argument from Bundle savedInstanceState
e.g. super.onCreate(savedInstanceState)
would be the recommended way again?
@pedpess no, it is not recommended, just thought maybe you didn't do it since from the stack trace it seems like the crash happens in onCreate
, so it seems weird. Maybe there is a problem with some of the fragments not being removed properly. Do you use native-stack
? Also, would it be possible for you to make a repo on which I could reproduce this crash? Since no one managed to do it yet afaik and it would be super helpful.
@WoLewicki Sorry for the delay. I think we don't use native-stack
anymore as we recently migrated to react-navigation v5
. We are using @react-navigation/compat, drawer, native and stack
. Unfortunately, I haven't managed to reproduce the issue myself, but if you have ideas on how to force this issue to happen I could make a repo for you and share it here. From the data I got from Google Play, it mostly happens with the latest Android versions 10 and 9.
These are the top 10 devices with this crash:
@pedpess based on the stack trace, it looks like you are not passing null
since the onCreate
's argument is passed up to FragmentActivity.onCreate()
and there is a check for a null in the passed argument, which, based on your stack trace, is not null since the restoreSaveState()
is called. I attach screen of this below. Are you sure the null was passed there when the stack trace was collected? Maybe there is a different option for these methods to be called, but I cannot think of any.
@WoLewicki good news 🙂 the issue is gone adding the super.onCreate(null)
. False alarm from my side, sorry about that. The problem was that we still had quite many users with the older version of the app that was with this crash. I can't force update them for now, but I will ask them to update the app manually if it shows up 👍
@akontaroudis @ANIBIT14 can you provide a repo with the configuration needed to reproduce the issue? Your crashes are caused by onDetachedFromWindow
method, so it is not related to passing null
to onCreate
, so the reproduction of this crash would really help us to remove the problem. Also, @adkenyon, if your crash is similar, could you try and submit a repro?
I have been facing the same issue. Not able to reproduce this, but seeing a number of crashes on Crashlytics. Here are the dependencies I am using - I am passing null to super.onCreate
"@react-navigation/drawer": "5.1.1"
"@react-navigation/native": "5.0.9"
"react-native": "0.63.0"
"react-native-screens": "2.10.1"
Stacktrace -
Fatal Exception: java.lang.RuntimeException: Unable to pause activity {*.*.*/*.*.MainActivity}: java.lang.IllegalArgumentException: No view found for id 0xa9 (unknown) for fragment g{c2f6631} (3d710c8a-fa3f-42a1-a496-69d9773638ef) id=0xa9}
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:4078)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4033)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4817)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4756)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:55)
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:4806)
at android.app.ActivityThread.access$3300(ActivityThread.java:200)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1841)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6823)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
Caused by java.lang.IllegalArgumentException: No view found for id 0xa9 (unknown) for fragment g{c2f6631} (3d710c8a-fa3f-42a1-a496-69d9773638ef) id=0xa9}
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:18)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:18)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1)
at androidx.fragment.app.FragmentManager.W(FragmentManager.java:47)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:9)
at androidx.fragment.app.FragmentManager.dispatchPause(FragmentManager.java:2)
at androidx.fragment.app.FragmentController.dispatchPause(FragmentController.java:2)
at androidx.fragment.app.FragmentActivity.onPause(FragmentActivity.java:2)
at com.pgapps.MainActivity.onPause(MainActivity.java)
at android.app.Activity.performPause(Activity.java:7444)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1466)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:4068)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4033)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4817)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4756)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:55)
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:4806)
at android.app.ActivityThread.access$3300(ActivityThread.java:200)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1841)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6823)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
Device coverage -
@WoLewicki Please let me know if any other info is required to help you debug.
@anirudhagarwal365 (and others), if you want to help, please provide some details of when the crashes happen in the lifecycle of the app. It looks like they happen only when pausing/resuming the activity, so if you would try to reproduce it to provide a repo, this is the direction I would go. You can try to make the app go into the background and then back. The important information would be if it happens when there is no navigation happening, or maybe only if e.g. you switched the screen and immediately paused the activity. You can also try https://github.com/software-mansion/react-native-screens/issues/556#issuecomment-656044339 and see if it helps.
@WoLewicki We tried out the fix you pointed in our production app. This seemed to have reduced the number of crashes, but recently we faced another crash at here.
The stacktrace is -
Caused by java.lang.IllegalStateException: FragmentManager is already executing transactions
at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:4)
at androidx.fragment.app.FragmentManager.generateOpsForPendingActions(FragmentManager.java)
at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:1)
at com.swmansion.rnscreens.ScreenContainer.onUpdate(ScreenContainer.java:1)
at com.swmansion.rnscreens.ScreenContainer.updateIfNeeded(ScreenContainer.java:1)
at com.swmansion.rnscreens.ScreenContainer.setFragmentManager(ScreenContainer.java:2)
at com.swmansion.rnscreens.ScreenContainer.setupFragmentManager(ScreenContainer.java:3)
at android.view.View.dispatchAttachedToWindow(View.java:19723)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3455)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3462)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3462)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3462)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3462)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3462)
at android.view.ViewGroup.addViewInner(ViewGroup.java:5174)
at android.view.ViewGroup.addView(ViewGroup.java:4960)
at android.view.ViewGroup.addView(ViewGroup.java:4900)
at com.facebook.react.uimanager.ViewGroupManager.addView(ViewGroupManager.java)
at com.facebook.react.uimanager.NativeViewHierarchyManager.manageChildren(NativeViewHierarchyManager.java:5)
at com.facebook.react.uimanager.UIViewOperationQueue$ManageChildrenOperation.execute(UIViewOperationQueue.java:5)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:4)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:53)
at com.facebook.react.uimanager.UIViewOperationQueue.pauseFrameCallback(UIViewOperationQueue.java:2)
at com.facebook.react.uimanager.UIImplementation.onHostPause(UIImplementation.java:2)
at com.facebook.react.uimanager.UIManagerModule.onHostPause(UIManagerModule.java:2)
at com.facebook.react.bridge.ReactContext.onHostPause(ReactContext.java:27)
at com.facebook.react.ReactInstanceManager.moveToBeforeResumeLifecycleState(ReactInstanceManager.java:1)
at com.facebook.react.ReactInstanceManager.onHostPause(ReactInstanceManager.java:54)
at com.facebook.react.ReactDelegate.onHostPause(ReactDelegate.java:4)
at com.facebook.react.ReactFragment.onPause(ReactFragment.java:4)
at androidx.fragment.app.Fragment.performPause(Fragment.java:4)
at androidx.fragment.app.FragmentStateManager.pause(FragmentStateManager.java:23)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:23)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1)
at androidx.fragment.app.FragmentManager.W(FragmentManager.java:47)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:9)
at androidx.fragment.app.FragmentManager.dispatchPause(FragmentManager.java:2)
at androidx.fragment.app.FragmentController.dispatchPause(FragmentController.java:2)
at androidx.fragment.app.FragmentActivity.onPause(FragmentActivity.java:2)
at com.pgapps.MainActivity.onPause(MainActivity.java)
at android.app.Activity.performPause(Activity.java:8001)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1667)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:4621)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4582)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:4534)
at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2131)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7707)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Actually the above PR actually fixes this issue(related to onPause). The stacktrace shared above is for another crash. I suspected that the above crash could be affect of the changes made, but on careful examination of crashes on app, I found out that crash on onUpdate method has been happening throughout.
@WoLewicki Any insights on the above mentioned crash?
Wanted to check with you, since we have moved to sync implementation of committing fragments, would it be safe to remove executePendingTransactions() from onUpdate method in ScreenContainer class?
I cannot help you much because I need a repo with a reproduction to work on it and see how the behaviors change. You can try and remove it, maybe it is forbidden when there are only synchronous transitions. It would be best if you could make a repo in which any of these crashes can be seen, otherwise, there is very little I can do.
Any workaround about this?
What a bummer! Had to uninstall react-native-screens because of this issue :/ Tried using the latest version 3.0.0 on rn 0.63.3. The crash happens almost every time when I navigate to a stack screen which was the first screen of the app in react-navigation from a screen that is inside a tab navigator (Usually when someone presses logout) Also, the crash only happens on the play store release build and not on debug (Could it be a pro-guard issue?)
java.lang.IllegalArgumentException: No view found for id 0x215 (unknown) for fragment ScreenFragment{8fa1bf3} (e241da77-f232-46ca-ba62-2ed17e002540) id=0x215} at androidx.fragment.app.FragmentStateManager.a(FragmentStateManager.java:131)
So I think I found where the issue is It got fixed when I set detachInactiveScreens={false} on the tab navigator but then the tab navigator starts behaving weirdly and screens stop changing on changing the tabs.
@shubhamverma27 can you provide a test example in TestsExample project (https://github.com/software-mansion/react-native-screens/tree/master/TestsExample) with minimal configuration needed to reproduce the issue? There still isn't one for this issue so there is not much we can do about it. Setting detachInactiveScreens={false}
is not a solution since it just disables usage of react-native-screens
for the navigator.
Same here. Can't reproduce on debug, only release apk
I'm having the same issue in release. The app crashes on launch.
java.lang.IllegalArgumentException: No view found for id 0x131 (unknown) for fragment ScreenFragment{20c7be9} (74966ce8-d3a7-416e-8c77-895b1f4ea015) id=0x131}
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:315)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:489)
at com.swmansion.rnscreens.ScreenContainer.onDetachedFromWindow(ScreenContainer.java:290)
at android.view.View.dispatchDetachedFromWindow(View.java:20178)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3858)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3850)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3850)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3850)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3850)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3850)
at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:5687)
at android.view.ViewGroup.removeAllViews(ViewGroup.java:5633)
at com.facebook.react.ReactInstanceManager.clearReactRoot(ReactInstanceManager.java:791)
at com.facebook.react.ReactInstanceManager.tearDownReactContext(ReactInstanceManager.java:1200)
at com.facebook.react.ReactInstanceManager.runCreateReactContextOnNewThread(ReactInstanceManager.java:986)
at com.facebook.react.ReactInstanceManager.recreateReactContextInBackground(ReactInstanceManager.java:973)
at com.facebook.react.ReactInstanceManager.recreateReactContextInBackgroundFromBundleLoader(ReactInstanceManager.java:448)
at com.facebook.react.ReactInstanceManager.recreateReactContextInBackgroundInner(ReactInstanceManager.java:440)
at com.facebook.react.ReactInstanceManager.recreateReactContextInBackground(ReactInstanceManager.java:394)
at expo.modules.updates.-$$Lambda$mn1Si_K9lL3awY-mNvAmj9EU9xE.run(Unknown Source:2)
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(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
"react-native-screens": "~3.0.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-41.0.0.tar.gz",
"react-native-gesture-handler": "~1.10.2",
"@react-navigation/bottom-tabs": "^5.11.7",
"@react-navigation/drawer": "^5.12.3",
"@react-navigation/material-top-tabs": "^5.3.15",
"@react-navigation/native": "^5.9.2",
"@react-navigation/stack": "^5.14.2",
"expo": "^41.0.0",
This is an Expo Managed app using the native stack throughout the app. I'm reticent to switch to the default stack due to the performance impact.
@Ideopunk please provide the reproduction of the crash so we can work on it.
I'm also receiving this error. It appears that we are getting it when the app is going to a background state. I've gone through a good number of logs and they all show the below output before crashing
{
screen: MainActivity,
state: paused
}
Here is the crash as logged in Sentry
java.lang.IllegalArgumentException: No view found for id 0xbd (unknown) for fragment ScreenFragment{c736e3a} (6f8185d4-f086-46c6-8d62-ec9d4658e9a8 id=0xbd)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3126)
at androidx.fragment.app.FragmentManager.dispatchPause(FragmentManager.java:3088)
at androidx.fragment.app.FragmentController.dispatchPause(FragmentController.java:284)
at androidx.fragment.app.FragmentActivity.onPause(FragmentActivity.java:390)
at com.facebook.react.ReactActivity.onPause(ReactActivity.java:50)
at android.app.Activity.performPause(Activity.java:8383)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1510)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5202)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5163)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5933)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5869)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:63)
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:5922)
at android.app.ActivityThread.access$3400(ActivityThread.java:301)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2317)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1139)
java.lang.RuntimeException: Unable to pause activity {com.my.app/com.my.app.MainActivity}: java.lang.IllegalArgumentException: No view found for id 0xbd (unknown) for fragment ScreenFragment{c736e3a} (6f8185d4-f086-46c6-8d62-ec9d4658e9a8 id=0xbd)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5212)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5163)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5933)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5869)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:63)
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:5922)
at android.app.ActivityThread.access$3400(ActivityThread.java:301)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2317)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1139)
Here are my related packages:
"@react-navigation/bottom-tabs": "~5.11.11",
"@react-navigation/drawer": "~5.12.5",
"@react-navigation/native": "~5.9.4",
"@react-navigation/stack": "~5.14.5",
"react-native-screens": "~3.4.0",
Can you check if this PR fixes the issue and does not introduce any new ones: https://github.com/software-mansion/react-native-screens/pull/1006/files ? It should be enough to apply changes from ScreenContainer.java
and ScreenStack.java
. It would be really helpful to get feedback about it since we would probably merge it if it does not introduce any new problems.
@WoLewicki So far so good. Hasn't crashed on me yet. I'll continue to do some testing over the next couple of days.
@WoLewicki I will test your PR and notice any problems here too.
It still crashes for me on release and debug both
java.lang.RuntimeException
java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3479) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3651) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:85) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2104) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loop (Looper.java:236) at android.app.ActivityThread.main (ActivityThread.java:7861) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:600) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:967) Caused by: androidx.fragment.app.Fragment$InstantiationException: at androidx.fragment.app.Fragment.instantiate (Fragment.java:566) at androidx.fragment.app.FragmentContainer.instantiate (FragmentContainer.java:57) at androidx.fragment.app.FragmentManager$3.instantiate (FragmentManager.java:390) at androidx.fragment.app.FragmentStateManager.<init> (FragmentStateManager.java:74) at androidx.fragment.app.FragmentManager.restoreSaveState (FragmentManager.java:2454) at androidx.fragment.app.FragmentController.restoreSaveState (FragmentController.java:196) at androidx.fragment.app.FragmentActivity.onCreate (FragmentActivity.java:287) at androidx.appcompat.app.AppCompatActivity.onCreate (AppCompatActivity.java:106) at com.facebook.react.ReactActivity.onCreate (ReactActivity.java:43) at com.barglance.barglance.MainActivity.onCreate (MainActivity.java:10) at android.app.Activity.performCreate (Activity.java:8093) at android.app.Activity.performCreate (Activity.java:8067) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1310) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3452) Caused by: java.lang.reflect.InvocationTargetException: at java.lang.reflect.Constructor.newInstance0 (Native Method) at java.lang.reflect.Constructor.newInstance (Constructor.java:343) at androidx.fragment.app.Fragment.instantiate (Fragment.java:548) Caused by: java.lang.IllegalStateException: at com.swmansion.rnscreens.ScreenFragment.<init> (ScreenFragment.java:42)
Here is my main activity java
import android.os.Bundle; import com.facebook.react.ReactActivity; import org.devio.rn.splashscreen.SplashScreen; public class MainActivity extends ReactActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { SplashScreen.show(this, true); savedInstanceState.remove("android:support:fragments"); savedInstanceState.remove("android:fragments"); } } @Override protected String getMainComponentName() { return "apllloaa"; } }
"react-native": "0.61.5", "react-native-screens": "^3.0.0",
@WoLewicki I no longer work where I reported this issue, but have reached out to someone there to see if they can test
@akshaymulgavkar can you post the whole stacktrace? It looks like the problem from #17, not this issue.
I managed to fix this using https://github.com/react-navigation/react-navigation/issues/7242#issuecomment-512927978 this approach
The updated version of #1006 using Kotlin and compatible with current master is https://github.com/software-mansion/react-native-screens/pull/1066. We would love more people to test it since we would like to include it in the next release.
same issue below what is tried Try setting detachInactiveScreens={false} https://reactnavigation.org/docs/bottom-tab-navigator/#detachinactivescreens. Worked for me.
but i don't think so this is good options any other work around please
@Hatta-Food-Hub switching detachInactiveScreens
to false disables react-native-screens at all in Stack Navigator, so that's not a proper workaround.
Since this issue has already 4 years, I can't suggest anything more than creating a new issue with a proper reproducer if you think this is a bug in screens.
@Hatta-Food-Hub switching
detachInactiveScreens
to false disables react-native-screens at all in Stack Navigator, so that's not a proper workaround. Since this issue has already 4 years, I can't suggest anything more than creating a new issue with a proper reproducer if you think this is a bug in screens.
Thank you for the reply below is what made this issue stop it's just that when debugging in Android log cat only tells that it is coming from RNScreens This usually happens switching between the tabs using react-native "0.74.3" if you suggest anything else it would be great
<Tab.Navigator detachInactiveScreens={false}
54 was closed, I'm creating a new issue for the following dependencies:
Raw Exception:
MainActivity.java:
enableScreens()
is called in the same way ashttps://github.com/software-mansion/react-native-screens/blob/master/Example/App.js#L16
Additional information that might be helpful:
Android Versions:
Manufacturers:
Models
--
Thanks for all your help in advance!