← Fixes/Crash

Fix: App Crashes on Launch

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.

Updated Mar 2026·6 min read

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.

Step 1: Read the crash log

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.

Common causes and fixes

Missing or misconfigured dependency

Both

Fix

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

iOS

Fix

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

Both

Fix

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

Android

Fix

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

Both

Fix

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

Both

Fix

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

Both

Fix

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.

Before resubmitting

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

Verify your fix with a Health Check

Upload your fixed APK, AAB, or IPA. Confirms release build status, correct signing, and flags any other issues before you resubmit.