Skip to content

Expo runtime errorExpo app works in Expo Go, crashes in TestFlight or production

The EAS build succeeded, but the app closes on launch or sits on the splash screen in TestFlight, Play testing or the store. Here’s how to find out why, with Expo’s own steps, or hand it over at a fixed price.

Short answer

Expo calls this a runtime error: the build succeeded, but the app crashes or hangs when it runs. Start with the crash report, in the Google Play Console’s crashes section or Xcode’s Crashes Organizer for TestFlight and App Store builds. Then capture native logs from a device that crashes, and run the app locally in production mode with npx expo start --no-dev --minify. We also check that the environment variables the app reads are set for the build, then narrow it down change by change.

Find the crash, then the cause

  1. 01

    Read the crash report first

    “For iOS apps on TestFlight or the App Store, use the Crashes Organizer in Xcode.” Expo, Debugging runtime issues

    For an Android app on Google Play, open the crashes section of the Play Console. For an iOS app on TestFlight or the App Store, open the Crashes Organizer in Xcode. Also check Sentry, BugSnag or a similar service if you use one.

  2. 02

    Capture the native logs

    “Native logs often reveal the root cause when JavaScript error boundaries don't catch the problem.” Expo, Debugging runtime issues

    Connect a device that crashes. On Android, run adb logcat. On iOS, open the Console app on your Mac, select the device under Devices and click Start streaming.

  3. 03

    Run it in production mode locally

    “Running your app in production mode locally will show errors that normally wouldn't be thrown.” Expo, Debugging runtime issues

    Development mode hides some errors that only show up in a release build. Start the app locally in production mode to see them.

    npx expo start --no-dev --minify
  4. 04

    Values from .env aren’t in the build

    “During local development, environment variables are loaded from your local .env or .env.local files.” Expo, Environment variables in EAS

    Locally, Expo reads .env and .env.local, which usually aren’t uploaded to EAS. If the app reads those values at startup, make sure they’re set for the EAS build, then build again.

  5. 05

    Narrow it down change by change

    “Apply your recent changes piece by piece, until it breaks.” Expo, Debugging runtime issues

    If the logs don’t name the cause, go back to a version that worked, which can be a blank npx create-expo-app project, and add your recent changes back until it breaks.

Checked against the vendor’s docs on : Expo docs: Debugging runtime issues; Expo docs: Troubleshoot build errors and crashes; Expo docs: Environment variables in EAS.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

Related: Expo EAS build failed · App Store Guideline 2.1 rejection · Beta testing and crash reporting tools

Questions

More on this error

Why does it work in Expo Go but not in my build?

Expo lists “my app works in Expo Go but hangs on the splash screen in my build” as a runtime error: the build succeeded, and the problem shows up when it runs. Production mode, native logs and the crash report are where Expo says to look.

The crash only happens for some users. Where do I start?

With the crash report: it gives the stack trace and device info. Expo also suggests reproducing the crash locally first, then following the same steps as for a development error.

What do I need to give you to fix the crash?

The project, the crash report or a screen recording, and access to the Expo account. We reproduce it, find the cause and send the fix as a pull request you review and build.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; we reply by email, usually within one business day.