issue:
I developed an app that works fine in the development environment. Then I ran expo build:android --type app-bundle, allowed the Keystore to be generated automatically and uploaded the app bundle to Google Play Console and made it available for internal testers.
However, once the app is installed on the tester’s phone and the Open button is tapped it gets stuck on the splash screen and will not go any further. The tester has tried restarting the phone, Force Stop the Google Play app, Clear Data and Clear Cache for Google Play app, uninstall/reinstall the app. None of these have helped. What would cause this behavior? What steps should I take next to debug/resolve this issue?
the most likely case is that something unexpected is happening in your app and hideAsync() for splash screen isn’t called. it’s very common for developers to keep splash screen visible with preventAutoHideAsync() or AppLoading and then not handle a condition that would cause hideAsync() to never be reached (eg: maybe you use await loadSomething() and then later hideAsync() but don’t wrap the loading function in try/catch).
basically, when the splash screen doesn’t hide it’s because there is something in your app preventing it from happening. so i would look towards your app code to try to see what might happening. also, you can build an apk with expo build:android to test it in your local emulator or easily install it on your device without going to the play store, if you’re unable to reproduce it using production mode locally in expo client.
@notbrent - Your reply was instrumental in getting to the bottom of this issue. The “frozen on the splash screen” behavior was reproducible by running the app locally in Production mode using expo start --no-dev --minify, as detailed in the link you provided. I had been unaware of that command previously. By going back to earlier versions of the app and running them locally in Production mode it was possible to isolate where the issue was introduced. The root cause turned out to be animation code. Once that code was removed the app worked normally both in local Production and in Google Play for internal testers. Hooray!
@gilberton Yes, the “frozen on the splash screen” behavior was reproducible when run locally in production mode using expo start --no-dev --minify. After the animation code was removed from the project then the app ran normally when that command was issued.
The app was originally developed using Expo SDK 36 but when an app bundle was built it would not upload to the Google Play Store which is what triggered upgrading the project to SDK 39. The upgrades were done one at a time (36 → 37, 37 → 38, 38 → 39) but all on the same day.
The “frozen on the splash screen” behavior first surfaced when an app bundle was built and uploaded to the Google Play Store after the SDK upgrades. That is when I became aware of the issue and when I learned how to run an app locally in Production mode. I don’t know if this behavior occurred in any of the SDKs prior to 39 because I never tried running expo start --no-dev --minify in the earlier versions (being unaware of the command expo start --no-dev -minify at that point).