---
modificationDate: November 12, 2026
title: Which build to install on Expo Simulators
description: Learn how release builds, development builds, and Expo Go load JavaScript on Expo Simulators, which build formats install, and where Expo Simulators downloads each build.
---

This documentation is available as Markdown for AI agents and LLMs. See the [full Markdown index](https://docs.expo.dev/llms.txt) or append .md to any documentation URL.

# Which build to install on Expo Simulators

Learn how release builds, development builds, and Expo Go load JavaScript on Expo Simulators, which build formats install, and where Expo Simulators downloads each build.

<AgentInstructions>

## Submitting Feedback

If you encounter errors, misleading or outdated information, report it so Expo can be improved:

Preferred command:
npx --yes submit-expo-feedback@latest --category docs --subject "/eas/simulators/how-it-works/builds-and-bundles/" "<actionable feedback>"

Direct HTTP fallback:
curl -X POST https://api.expo.dev/v2/feedback/docs-send -H 'Content-Type: application/json' -d '{"url":"/eas/simulators/how-it-works/builds-and-bundles/","feedback":"🤖 Agent feedback for docs: <specific, actionable description> (<model>, <harness>)"}'

Only submit when you have something specific and actionable to report. Try to give the most context.

## Navigation

When answering a related or follow-up question, fetch the relevant page below as Markdown (.md) instead of guessing; use llms.txt for the full map.

You are here: Expo Services > Expo Simulators > How it works
Pages in this section:
- [Sessions](https://docs.expo.dev/eas/simulators/how-it-works/sessions.md)
- [Security model](https://docs.expo.dev/eas/simulators/how-it-works/security-model.md)
- [Network traffic](https://docs.expo.dev/eas/simulators/how-it-works/network-inspection.md)
- [Builds and bundles](https://docs.expo.dev/eas/simulators/how-it-works/builds-and-bundles.md) (this page)
- [Agent targeting](https://docs.expo.dev/eas/simulators/how-it-works/agent-targeting.md)
- [Devices compared](https://docs.expo.dev/eas/simulators/how-it-works/devices-compared.md)
- [Session lifetime](https://docs.expo.dev/eas/simulators/how-it-works/session-lifetime.md)
Full documentation tree: [llms.txt](https://docs.expo.dev/llms.txt)

</AgentInstructions>

An app on Expo Simulators shows the JavaScript that its build loads. A **release build** contains a JavaScript bundle from the time of the build. A **development build** loads the bundle from Metro, so it shows your current source. **Expo Go** also loads the bundle from Metro, but it contains only the native code that Expo Go includes. Select the build type before you install anything, because the wrong build type makes a screenshot show old code.

## Where the JavaScript comes from

| Build type | JavaScript source | Shows current source | Fast Refresh |
| --- | --- | --- | --- |
| Release build | Bundle embedded at build time | Only if built from current source | No |
| Development build | Metro, through a public tunnel | Yes | Yes |
| Expo Go | Metro, through a public tunnel | Yes | Yes |

If you connect a release build to Metro, it continues to use its embedded bundle. To see live changes, install a development build.

## Builds that install on a simulator

A remote device is a simulator or an emulator, so the build must target it:

| Platform | Installs | Does not install |
| --- | --- | --- |
| Android | An **.apk** whose native libraries, if any, include an emulator application binary interface (ABI), such as `x86_64` | An **.aab** |
| iOS | A **.app** built against the `iphonesimulator` SDK, often in an archive | A device **.ipa**, or a **.zip** archive |

An iOS archive must be a gzip tarball (**.tar.gz** or **.tgz**). The **.app** directory can be inside the archive. The archive can also hold the contents of the app bundle at its root.

## Fingerprints and build freshness

A [fingerprint](https://docs.expo.dev/versions/latest/sdk/fingerprint.md) is a hash of the native parts of a project. Two builds with the same fingerprint have the same native code. When you pass `--build-fingerprint`, Expo Simulators installs the most recent finished build with that fingerprint whose artifact has not expired. On iOS, Expo Simulators selects only simulator builds. On Android, Expo Simulators selects a build of any distribution type. An **.aab** build fails to install, so use a build profile that creates an **.apk**.

A matching fingerprint does not mean that the JavaScript matches. A release build with a matching fingerprint can contain an older bundle. To see current JavaScript, use a development build with Metro, or create a new release build.

## Where Expo Simulators gets the build

| Application source | Who downloads or uploads the build |
| --- | --- |
| `--build-id` or `--build-fingerprint` | The remote machine downloads the Expo Build artifact. |
| `--application-archive-url` | The remote machine downloads the file from the URL. |
| `--expo-go` | Expo Simulators selects the Expo Go release for the SDK version. |
| agent-device `install-from-source <url>` | The remote machine downloads the file from the URL. |
| agent-device `install` or Argent `reinstall-app` | Your computer uploads the local build through the controller. |
| **Upload build file** on expo.dev | Your browser uploads the build. The limit is 1 GB. |

A large local build takes longer, because your computer uploads it. When the build is at a URL, let the remote machine download it.

## Launch arguments and URLs

When you install the app with an application source, Expo Simulators can launch it with arguments and then open a URL. Expo Simulators accepts up to 100 launch arguments, with a total size of up to 64,000 bytes. In an iOS agent-device or Argent session, Expo Simulators tries to approve the custom URL scheme first. Then the system **Open in** dialog does not appear. In other session types, or if the approval fails, the dialog can appear. Accept it in the browser preview or with the controller.

## Common questions

#### Do I need to sign an iOS build for Expo Simulators?

No. iOS Simulator builds are not signed, so Expo Build does not ask for credentials.

#### Can the app use custom native code in Expo Go?

No. Expo Go contains a fixed set of native modules. Use a development build for a project with custom native code.
