A crash on launch is an instant rejection from both App Store and Google Play. Here is how to diagnose the exact cause, fix it, and verify the fix before resubmitting.
Instant rejection: Both App Store and Google Play automatically reject apps that crash on launch. The reviewer opens the app, it crashes, they reject. This is the single most preventable rejection cause.
iOS
Connect the device to Xcode. Open Window > Devices and Simulators. Select your device, then View Device Logs. Find the crash report for your app. Look for the top-of-stack frame that is in your own code.
Android
Run: adb logcat -v time | grep FATAL — or open Android Studio > Logcat and filter by your app package. The exception type and stack trace will show the exact cause.
Firebase Crashlytics
If Crashlytics is integrated, the crash will appear in your Firebase Console within minutes of occurring. The dashboard shows the exact line, device, and OS version.
Missing or misconfigured dependency
BothFix
A third-party SDK that is not initialised correctly, or a framework that is present in debug but not included in the release build. Check your Podfile.lock (iOS) or build.gradle dependencies for any release-only exclusions.
Nil force-unwrap at launch
iOSFix
A forced optional unwrap (!) on a value that is nil at launch. Enable Address Sanitizer in Xcode scheme settings to catch these before the crash. Read the crash log for the exact line.
Missing Google Services or Firebase config file
BothFix
GoogleService-Info.plist (iOS) or google-services.json (Android) not included in the release build target. Confirm both files are added to the correct target in Xcode / build.gradle.
Keystore or signing mismatch
AndroidFix
Release build signed with a keystore that does not match what is expected by a dependency (e.g. Facebook SDK, Google Maps). Verify your signing config in build.gradle matches the certificate registered with each service.
Main thread blocked at launch
BothFix
A network call, database read, or heavy computation running on the main thread during app initialisation. Xcode's Time Profiler or Android Profiler will show what is blocking the main thread at startup.
Permissions not handled before use
BothFix
Code that accesses camera, location, or contacts before requesting permission at launch. Causes an immediate crash on iOS. Wrap permission-dependent code in proper request flows.
Version incompatibility with OS
BothFix
APIs used that do not exist on the minimum supported OS version. Use @available() guards (iOS) or Build.VERSION checks (Android) for any APIs introduced after your minimum SDK target.
Test the fixed build on at least 2 real devices — the oldest supported OS version and the latest
Test from a completely fresh install: delete the app, reinstall, and launch
Run the AppTester Health Check to confirm the build is a release build with correct signing
If you have Firebase or Crashlytics: distribute via TestFlight or internal track and confirm no crash events appear
In the Resolution Center (App Store) or Play Console: describe what caused the crash and what you changed
Upload your fixed APK, AAB, or IPA. Confirms release build status, correct signing, and flags any other issues before you resubmit.