---
modificationDate: September 03, 2026
title: Troubleshoot EAS Simulator
description: Diagnose access, session lifecycle, controller, installation, preview, and Fast Refresh issues in EAS Simulator.
---

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.

# Troubleshoot EAS Simulator

Diagnose access, session lifecycle, controller, installation, preview, and Fast Refresh issues in EAS Simulator.

<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 "/preview/eas-simulator/troubleshooting/" "<actionable feedback>"

Direct HTTP fallback:
curl -X POST https://api.expo.dev/v2/feedback/docs-send -H 'Content-Type: application/json' -d '{"url":"/preview/eas-simulator/troubleshooting/","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.

</AgentInstructions>

## Command not found

### `Command simulator:start not found`

The installed EAS CLI is too old. [Install or update EAS CLI](https://docs.expo.dev/eas/cli.md), then inspect the command:

```sh
eas simulator:start --help
```

The commands remain hidden because the API is experimental.

### `simulator:start` rejects a documented flag

Update to the latest version of [EAS CLI](https://docs.expo.dev/eas/cli.md), then compare the command with the installed help:

```sh
eas simulator:start --help
```

## Access and project errors

### EAS Simulator is not enabled for the account

Check before starting:

```sh
eas simulator:availability --json
```

If `available` is `false`, do not retry `simulator:start`. Use a local simulator or emulator, or [join the waitlist](https://expo.dev/services/simulators) for access.

### EAS CLI reports that a user account is required

Log in interactively or provide `EXPO_TOKEN` in a headless environment:

```sh
eas whoami
```

### EAS CLI reports that the project is not linked

Run the command inside the Expo project and initialize EAS:

```sh
eas init
```

## Session lifecycle problems

### The session takes a long time to start

Boot time varies with device capacity. While the device is starting, poll the existing session:

```sh
eas simulator:get --id <session-id> --json --non-interactive
```

The session is ready when the status is `IN_PROGRESS` and `remoteConfig` is present. If it reaches `STOPPED` or `ERRORED`, or the start command reports a terminal failure, start a new session. Starting a second session while the first is still booting does not speed up the process.

### A non-interactive session did not stop automatically

`--non-interactive` returns after the controller is ready. It does not stop the session. Run:

```sh
eas simulator:stop
```

### Starting a session left the previous session running

`simulator:start` creates a new session by default, even when **.env.eas-simulator** contains another session ID. It replaces the local configuration, but it does not stop the previous remote session.

List active sessions and stop the old one explicitly:

```sh
eas simulator:list --status in-progress
eas simulator:stop --id <old-session-id>
```

Use `--no-force` when you want `simulator:start` to fail instead of creating a new session while the environment already contains an ID. Give every session a descriptive `--name` so it is easy to identify in the list.

## Controller and tunnel problems

### `Remote daemon is unavailable` or the tunnel endpoint is offline

The controller tunnel has dropped or the remote VM has ended. A dropped controller invalidates the installed app state, accessibility references, and connection configuration.

Stop the session if it is still active, then start a fresh session and repeat install → open → drive. Do not repeatedly retry a controller command against the dead endpoint.

### `Unknown command: tap` or `Unknown command: click`

The agent-device action is named `press`:

```sh
eas simulator:exec npx agent-device@latest press @e2
```

### A controller action hangs

Some iOS snapshots and interactions can take tens of seconds. If an action times out, refresh the interactive accessibility tree before retrying:

```sh
eas simulator:exec npx agent-device@latest snapshot -i
```

The original action may have reached the device even when the response was delayed, and blindly retrying can perform it twice.

### `install requires an active session or an explicit device selector`

Pass the platform:

```sh
eas simulator:exec npx agent-device@latest install com.example.app ./MyApp.app --platform ios
```

### Screenshot reports that there is no active session

Open an installed app before taking the screenshot:

```sh
eas simulator:exec npx agent-device@latest open com.example.app --platform ios
eas simulator:exec npx agent-device@latest screenshot ./shot.png
```

## App and build problems

### `Launch options require an application source`

`--launch-arg` and `--open-url` apply to an application installed during session startup. Pass exactly one source with the command:

-   `--build-id <build-id>` for an EAS Build
-   `--application-archive-url <url>` for a remote application archive
-   `--expo-go` for the Expo Go version matching the project SDK

For a local **.app** or APK, start a blank session and install it through agent-device or another controller instead.

### Expo Go cannot determine the SDK version

Run the command from an Expo project with a valid app config, or pass `--sdk-version <version>` together with `--expo-go`. The SDK override is not valid with `--build-id` or `--application-archive-url`.

### The remote device does not contain the app

This is expected when the session starts without `--build-id`, `--application-archive-url`, or `--expo-go`. Install a local simulator or emulator build through the controller, or start a new session with an application source.

### The screenshot shows old source code

A release build embeds JavaScript at build time. Rebuild it from the current source, confirm that an existing EAS Build has the matching fingerprint, or install a development build and connect it to Metro.

Changing source files does not update an already-installed release build.

### Fast Refresh does not work

Confirm all of the following:

-   The installed binary is a development build with `expo-dev-client`, not a release build
-   Metro is running once, without another process occupying port 8081
-   The development client is connected to the public Metro tunnel URL
-   The simulator session and controller are still active

Use tunnel v2 in remote or headless agent environments:

```sh
EXPO_UNSTABLE_TUNNEL_V2=1 npx expo start --tunnel
```

If the first connection fails, reset the simulator session and Metro once, then repeat the documented development-build flow. Reconnecting a release build cannot enable Fast Refresh.

## Browser preview problems

### Android did not return a `webPreviewUrl`

Android browser preview is not currently supported. Use agent-device or Argent and collect screenshots or recordings instead.

### The preview appears inside the simulator

The `webPreviewUrl` was opened as though it were an app URL. Open it in the desktop browser instead. It is a browser stream, not an application deep link.

## Report feedback

EAS Simulator and its CLI are experimental. Include the EAS CLI version, session ID, platform, controller type, and failing command when reporting a problem.

For feedback about the official EAS Simulator skill:

```sh
npx --yes submit-expo-feedback@latest --category skills --subject "eas-simulator" "<actionable feedback>"
```
