Ionic Angular Cordova App stuck in iOS Flashscreen

My app serves fine, works perfectly fine in the Play Store, builds fine (ionic cordova build ios --prod --release), is compiled and deployed successfully by Appflow, but in TestFlight the app gets stuck in the Splashscreen. When I changed the @ionic-native/splash-screen/ngx for @awesome-cordova-plugins/splash-screen/ngx, the splash-scren seemed to load eternally. That’s all I could get.

Ionic Info:
Ionic:

Ionic CLI : 6.20.8 (/usr/local/lib/node_modules/@ionic/cli)
Ionic Framework : @ionic/angular 6.3.4
@angular-devkit/build-angular : 14.2.10
@angular-devkit/schematics : 14.2.8
@angular/cli : 14.2.8
@ionic/angular-toolkit : 6.1.0

Cordova:

Cordova CLI : 11.0.0
Cordova Platforms : ios 6.2.0
Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 5.0.0, cordova-plugin-ionic 5.5.3, (and 5 other plugins, among them cordova-plugin-splashscreen)

Utility:

cordova-res : 0.15.4
native-run : 1.7.1

System:

ios-deploy : 1.12.1
ios-sim : 8.0.2
NodeJS : v18.12.0 (/usr/local/bin/node)
npm : 8.19.2
OS : macOS
Xcode : Xcode 14.1 Build version 14B47b

Can you help, please?

Since Appflow and TestFlight are just deployment mechanisms, it’s unlikely to be them.

When I changed the @ionic-native/splash-screen/ngx for @awesome-cordova-plugins/splash-screen/ngx, the splash-scren seemed to load eternally.

It sounds like this plugin change is the culprit. Since the splash screen is loading continuously, that typically means the app is crashing immediately. Review your app load code, especially Splash Screen usage. Is there anything else you are doing on app load that is suspect?

Try debugging the app locally on a device too using our debugging guide to identify the culprit.

As far as I know, since cordova-ios 6 integrated the splash screen into the platform, none of @ionic-native/splash-screen nor @awesome-cordova-plugins/splash-screen work anymore (since there is no plugin anymore).
You should uninstall those two packages and also cordova-plugin-splashscreen and hide the splash with the javascript API (navigator.splashscreen.hide();) instead of using the typescript helpers (awesome-cordova-plugins/ionic-native).

1 Like

Thanks for the answer. The app works fine without AppFlow. Why would it if the splashscreen plugin was making it crash?

It was not crashing, but if you install cordova-plugin-ionic, it requires you to hide the splash screen programmatically.
Since latest cordova-ios and cordova-android both integrated the cordova-plugin-splashs-screen plugin code, the @ionic-native/splash-screen and @awesome-cordova-plugins/splash-screen wrappers no longer work, because they prevent cordova-plugin-splashs-screen from installing to avoid conflicts. So the only way of hiding the splash screen is to call navigator.splashscreen.hide(); (which is included in both cordova-ios and cordova-android.

If you uninstall cordova-plugin-ionic, then you don’t need to call navigator.splashscreen.hide(); programmatically and the splash screen hides automatically.