Skip to content

Expo EAS Build errorExpo EAS build failed: the app runs locally, the build doesn’t

You run eas build, wait in the queue, and the build fails on Expo’s servers, often with a log full of warnings. The app works in Expo Go or on your machine, so the difference is in what reaches the build server and how it’s built there. Here’s how to find the real error, in Expo’s own words, or hand it over at a fixed price.

Short answer

Open the failed build on the EAS dashboard and read the first phase that failed, not the last; lines marked [stderr] are often only warnings. Then check the usual causes in order: a file your code imports is in .gitignore so it never uploads, your .env values aren’t on the build server, the JavaScript doesn’t bundle (run npx expo export locally), or a package doesn’t match your Expo SDK (run npx expo-doctor).

The usual causes, most common first

  1. 01

    A file the app imports is in .gitignore

    “When you run eas build, your project's files are uploaded to Expo's build servers. However, any file or directory mentioned in the .gitignore is not uploaded.” Expo, Troubleshoot build errors and crashes

    EAS uploads your project without anything .gitignore excludes, so an import that works locally fails on the server with "None of these files exist" or "Unable to resolve module". Check the path named in the error against .gitignore, and against the filename’s capital letters in Git. If the file holds secrets, keep it out and use an EAS environment variable instead.

  2. 02

    Your .env values aren’t on the build server

    “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. Those files usually aren’t committed, so the build runs without them and anything that reads those values gets nothing. Add them as EAS environment variables for the environment the build profile uses (development, preview or production). Use Plain text or Sensitive for values the app bundle needs, since anything in the bundle is public, and Secret only for values the build itself uses.

  3. 03

    The JavaScript doesn’t bundle

    “You can build the production bundle locally by running npx expo export to bypass all of the other build steps so you can see this error much more quickly.” Expo, Troubleshoot build errors and crashes

    On Android this shows as Task :app:bundleReleaseJsAndAssets FAILED, on iOS as Metro encountered an error, usually followed by the syntax error or missing module. It comes late in the build, so reproduce it locally, much faster than waiting for another cloud build.

    npx expo export
  4. 04

    A package or config plugin doesn’t match your Expo SDK

    “Run npx expo-doctor to determine that the versions of Expo SDK dependencies in your project are compatible with your Expo SDK version.” Expo, Troubleshoot build errors and crashes

    A native error in a project that uses Continuous Native Generation often comes from a config plugin or a dependency, often one added since the last build that worked. Run expo-doctor, fix what it flags, and use the Compare button on the build page to see what changed against the last good build.

    npx expo-doctor
  5. 05

    The Android build ran out of memory

    “To increase memory limits on your EAS Build builders, use large resource class in your eas.json.” Expo, Troubleshoot build errors and crashes

    If the Gradle log says the build daemon disappeared unexpectedly, the process bundling your JavaScript was killed, often because the bundle is very large or a huge text or JSON file is imported as code. Shrink what you import, or set a large resource class for the build profile in eas.json.

Checked against the vendor’s docs on : 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: Google Play 12 testers for 14 days · App Store Guideline 2.1 rejection · Web app to the App Store

Questions

More on this error

The log is full of [stderr] lines. Are those the errors?

Not necessarily. Expo’s docs point out that tools write warnings to stderr too. Start from the earliest phase that failed on the build page; later failures usually follow from it.

How do I test the build without waiting in the EAS queue?

Build in release mode on your own machine with npx expo run:android --variant release or npx expo run:ios --configuration Release. Expo’s docs say a project that builds and runs locally in release mode will also build on EAS, as long as tool versions, environment variables and the uploaded files match.

It built last week and fails now. Where do I start?

Open the failed build and use Compare against the last build that passed. It shows the two logs side by side by phase, which usually points at a new package, a lock file change or a different SDK version.

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.