react-native-screens
react-native-screens copied to clipboard
App crashing frequently because of this error
Hi,
App is crashing frequently because of this error -
java.lang.IllegalStateException com.swmansion.rnscreens.ScreenFragment.
Steps To Reproduce
I don't have the exact steps to reproduce this error, but I can see the google playstore console logs.
Expected behavior
The app should not crash.
Actual behavior
App is crashing frequently
Platform
Android 9 (SDK 28) Android 10 (SDK 29)
- Only Android
Workflow
- [ NO ] Managed workflow
- [ YES ] Bare workflow
Package versions
package | version |
---|---|
@react-native-async-storage/async-storage | 1.17.3 |
@react-native-firebase/analytics | 14.9.3 |
@react-native-firebase/app | 14.9.3 |
@react-navigation/native | 6.0.10 |
@react-navigation/native-stack | 6.6.2 |
@react-navigation/stack | 6.2.1 |
react | 17.0.2 |
react-native | 0.68.1 |
react-native-admob-native-ads | 0.6.0 |
react-native-fast-image | 8.5.11 |
react-native-fbads | 7.1.0 |
react-native-fbsdk | 3.0.0 |
react-native-gesture-handler | 2.4.0 |
react-native-image-progress | 1.2.0 |
react-native-image-zoom-viewer | 3.0.1 |
react-native-modal-overlay | 1.3.1 |
react-native-pager-view | 5.4.15 |
react-native-push-notification | 8.1.1 |
react-native-safe-area-context | 4.2.4 |
react-native-screens | 3.13.1 |
react-native-share | 7.3.7 |
react-native-splash-screen | 3.3.0 |
react-native-tab-view | 3.1.1 |
react-native-vector-icons | 9.1.0 |
react-native-video | 5.2.0 |
recyclerlistview | 3.0.5 |
rn-fetch-blob | 0.12.0 |
Google PlayStore Console Logs (Prod)
java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2991) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3126) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1846) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loop (Looper.java:201) at android.app.ActivityThread.main (ActivityThread.java:6882) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:873) Caused by: androidx.fragment.app.Fragment$InstantiationException: at androidx.fragment.app.Fragment.instantiate (Fragment.java:67) at androidx.fragment.app.FragmentContainer.instantiate (FragmentContainer.java) at androidx.fragment.app.FragmentManager$3.instantiate (FragmentManager.java:17) at androidx.fragment.app.FragmentStateManager.<init> (FragmentStateManager.java:15) at androidx.fragment.app.FragmentManager.restoreSaveState (FragmentManager.java:108) at androidx.fragment.app.FragmentController.restoreSaveState (FragmentController.java:8) at androidx.fragment.app.FragmentActivity$2.onContextAvailable (FragmentActivity.java:30) at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable (ContextAwareHelper.java:20) at androidx.activity.ComponentActivity.onCreate (ComponentActivity.java:7) at androidx.fragment.app.FragmentActivity.onCreate (FragmentActivity.java) at androidx.appcompat.app.AppCompatActivity.onCreate (AppCompatActivity.java:10) at com.facebook.react.ReactActivity.onCreate (ReactActivity.java) at com.nicestatus.MainActivity.onCreate (MainActivity.java:3) at android.app.Activity.performCreate (Activity.java:7232) at android.app.Activity.performCreate (Activity.java:7221) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1272) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2971) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3126) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1846) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loop (Looper.java:201) at android.app.ActivityThread.main (ActivityThread.java:6882) at java.lang.reflect.Method.invoke (Native Method) 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.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:21) at androidx.fragment.app.FragmentContainer.instantiate (FragmentContainer.java) at androidx.fragment.app.FragmentManager$3.instantiate (FragmentManager.java:17) at androidx.fragment.app.FragmentStateManager.<init> (FragmentStateManager.java:15) at androidx.fragment.app.FragmentManager.restoreSaveState (FragmentManager.java:108) at androidx.fragment.app.FragmentController.restoreSaveState (FragmentController.java:8) at androidx.fragment.app.FragmentActivity$2.onContextAvailable (FragmentActivity.java:30) at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable (ContextAwareHelper.java:20) at androidx.activity.ComponentActivity.onCreate (ComponentActivity.java:7) at androidx.fragment.app.FragmentActivity.onCreate (FragmentActivity.java) at androidx.appcompat.app.AppCompatActivity.onCreate (AppCompatActivity.java:10) at com.facebook.react.ReactActivity.onCreate (ReactActivity.java) at com.nicestatus.MainActivity.onCreate (MainActivity.java:3) at android.app.Activity.performCreate (Activity.java:7232) at android.app.Activity.performCreate (Activity.java:7221) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1272) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2971) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3126) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1846) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loop (Looper.java:201) at android.app.ActivityThread.main (ActivityThread.java:6882) at java.lang.reflect.Method.invoke (Native Method) 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.IllegalStateException: at com.swmansion.rnscreens.ScreenFragment.<init> (ScreenFragment.java:23) at com.swmansion.rnscreens.ScreenStackFragment.<init> (ScreenStackFragment.java) 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:21) at androidx.fragment.app.FragmentContainer.instantiate (FragmentContainer.java) at androidx.fragment.app.FragmentManager$3.instantiate (FragmentManager.java:17) at androidx.fragment.app.FragmentStateManager.<init> (FragmentStateManager.java:15) at androidx.fragment.app.FragmentManager.restoreSaveState (FragmentManager.java:108) at androidx.fragment.app.FragmentController.restoreSaveState (FragmentController.java:8) at androidx.fragment.app.FragmentActivity$2.onContextAvailable (FragmentActivity.java:30) at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable (ContextAwareHelper.java:20) at androidx.activity.ComponentActivity.onCreate (ComponentActivity.java:7) at androidx.fragment.app.FragmentActivity.onCreate (FragmentActivity.java) at androidx.appcompat.app.AppCompatActivity.onCreate (AppCompatActivity.java:10) at com.facebook.react.ReactActivity.onCreate (ReactActivity.java) at com.nicestatus.MainActivity.onCreate (MainActivity.java:3) at android.app.Activity.performCreate (Activity.java:7232) at android.app.Activity.performCreate (Activity.java:7221) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1272) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2971) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3126) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1846) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loop (Looper.java:201) at android.app.ActivityThread.main (ActivityThread.java:6882) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:873)
Please look into this error. Thank you :)
Hey! 👋
It looks like you've omitted a few important sections from the issue template.
Please complete Description and Reproduction sections.
Hey! 👋
The issue doesn't seem to contain a minimal reproduction.
Could you provide a snippet of code, a snack or a link to a GitHub repository that reproduces the problem?
Already mentioned all the details, please look at it ASAP.
Any update on this? I am having a lot of crashes because of this in prod. :(
Can confirm that this is happening on RN 0.68.2 as well
Same here, I add everything to. MainActivity
Also affected by this on 0.68.2 with correct android MainActivity.java modifications. Again picked up through google play logs (happening often), but unable to reproduce exact steps.
Did you follow the required steps from the main README file? See https://github.com/software-mansion/react-native-screens#android.
Yes:
import android.os.Bundle;
and then to the MainActivityDelegate class:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
}
Seems weird that it happens after this change. It's hard to say anything definitive without a reproduction unfortunately. Is your stack trace the same @chvanlennep ?
Looks like it:
java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4035) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4201) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:103) 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:2438) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:226) at android.os.Looper.loop (Looper.java:313) at android.app.ActivityThread.main (ActivityThread.java:8669) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135) Caused by: androidx.fragment.app.Fragment$InstantiationException: at androidx.fragment.app.Fragment.instantiate (Fragment.java:631) at androidx.fragment.app.FragmentContainer.instantiate (FragmentContainer.java:57) at androidx.fragment.app.FragmentManager$3.instantiate (FragmentManager.java:483) at androidx.fragment.app.FragmentStateManager.<init> (FragmentStateManager.java:85) at androidx.fragment.app.FragmentManager.restoreSaveState (FragmentManager.java:2728) at androidx.fragment.app.FragmentController.restoreSaveState (FragmentController.java:198) at androidx.fragment.app.FragmentActivity$2.onContextAvailable (FragmentActivity.java:149) at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable (ContextAwareHelper.java:99) at androidx.activity.ComponentActivity.onCreate (ComponentActivity.java:322) at androidx.fragment.app.FragmentActivity.onCreate (FragmentActivity.java:273) at com.facebook.react.ReactActivity.onCreate (ReactActivity.java:45) at android.app.Activity.performCreate (Activity.java:8290) at android.app.Activity.performCreate (Activity.java:8270) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1329) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4009) 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:613) Caused by: java.lang.IllegalStateException: at com.swmansion.rnscreens.ScreenFragment.<init> (ScreenFragment.kt:53) at com.swmansion.rnscreens.ScreenStackFragment.<init> (ScreenStackFragment.kt:36)
same issue here, any workaround?
I'm facing it too,
according to Play Store crash details, it is only appearing on Android 8:
It would be best if you could provide a repo with a reproduction of the issue so we could work on it, it is hard to say much without it unfortunately 😞
Hi! Do somebody knows the difference between using the line super.onCreate(savedInstanceState) instead of super.onCreate(null)? I can't find a clear explanation about it.
@sebadiaz-arg
https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-425179033
this issue comments may help you.
For our team, this issue is causing a 3% crash rate (the rate at which total sessions vs crashes per session exist) which is quite a large number for one package. It's possible that the quick fix Override worked before for previous years, but perhaps React Native, React Navigation, Android, or hardware itself has changed something which could mean changing the react-native-screens code to adapt. Edit: Yesterday (10-25), this issue caused a massive 10% crash rate. It seems to fluctuate between 2-10%, depending on the day. Average of 3%.
Our code follows the instructions as written to include the Override and the import android.os.bundle. There is no official reproduction of the error since it's not so cookie cutter styled like that. When I've seen it on my phones, it appears to be once the app has been in the background for a few minutes and then reopening it again. Most of the time, it will not happen, but it will sometimes. Perhaps there's some memory or battery management happening with Android I am unaware of causing a difference re-initializing the app, but I'm only making guesses here.
This is happening on all versions of Android. I cannot give you an open source repo because our company does not disclose that. The app relies on react-navigation which relies on react-native-screens, otherwise I would just remove the package to solve the problem. This error/crash can be assumed to be happening before the JS is loaded in because it is not being detected inside our JS error reporting package (react-native-sentry), and is being reported only by the Play Store, indicating it's likely a native code issue.
Here is the trace according to Play Store's data.
Exception java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4237)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4403)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:104)
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:2498)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:226)
at android.os.Looper.loop (Looper.java:313)
at android.app.ActivityThread.main (ActivityThread.java:8855)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135)
Caused by androidx.fragment.app.Fragment$f: Unable to instantiate fragment com.swmansion.rnscreens.q: calling Fragment constructor caused an exception
at androidx.fragment.app.Fragment.V (Fragment.java:6)
at androidx.fragment.app.g.e
at androidx.fragment.app.n$e.a
at androidx.fragment.app.u.
Ok, here's an idea I'll try that is not directly stated in the directions of the README.
The Override call was added inside the public static class MainActivityDelegate extends ReactActivityDelegate {} function. However, I will instead place this inside the parent function public class MainActivity extends ReactActivity {} above it. I do not know if it will fix it, I just added it where I saw other "Override" terms, and assume that applied.
If this is the difference in what fixes the issue, then please add the specific in the README to add it in the parent one that starts with public class MainActivity extends ReactActivity {} and not the other one.
I'll report back after a while to see if this was my issue. If others have this placement as well or have already tried this placement, do comment on it.
@evan1715 did it help?
@evan1715 did it help?
@xarcnovn Yeah, actually. It does seem to have fixed it.
The documentation for this package and for react-navigation should be updated to clarify location.
I do not know if what I did applies to other people's issues with it.