This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Get started with EAS Simulator
Edit page
Check whether EAS Simulator is available, start a remote device session, and connect to it.
EAS Simulator is a limited-access preview. It is not included with paid or free plans and is currently available only to select partners. Join the waitlist if you are interested in trying it.
3 requirements
3 requirements
1.
EAS Simulator access is granted directly to select partners. Check the current project's account before starting a session.
2.
Run these commands from the project directory. If the project does not have an EAS project ID,
run eas init first.
3.
The simulator:* commands are experimental and hidden. Install or update EAS CLI
before using them.
Expo Skills for AI agents
If you use an AI agent, install Expo Skills and ask it to use the EAS Simulator skill. The skill can perform the session workflow below, drive the app, and collect evidence for you. Use this page when you want to understand or run the commands manually.
Run and control a user's app on a remote iOS/Android simulator hosted on EAS cloud.
Start a session manually
1
Authenticate and verify the project
On an interactive machine, log in and confirm the current user:
- eas login- eas whoamiIn CI or a headless agent environment, provide an Expo access token in EXPO_TOKEN instead of starting an interactive login.
If the project is not linked to EAS, initialize it:
- eas init2
Check account availability
The availability check is read-only. It does not start a device or consume simulator usage. The --json flag is optional, but it makes the result easy for an agent or script to inspect:
- eas simulator:availability --jsonAn enabled account returns:
{ "available": true, "accountName": "my-account" }
If available is false, do not call simulator:start. Use a local simulator or emulator, or join the waitlist for access.
3
4
Choose a controller and start a remote device
Choose the controller you plan to use for installation and device actions. Pass its type explicitly when you start the session.
See agent-device and Expo for controller setup and commands.
- eas simulator:start --platform ios --type agent-device --non-interactiveSee Argent and Expo for controller setup and commands.
- eas simulator:start --platform ios --type argent --non-interactiveUse --platform android for an Android Emulator. Android sessions do not currently include a live browser preview.
When --platform is omitted in an interactive terminal, EAS CLI asks which platform to use. Non-interactive runs require the flag.
The start command waits for the selected controller to become ready, then writes .env.eas-simulator. It also prints:
- A direct simulator session page on expo.dev
- A temporary
webPreviewUrlfor supported iOS sessions - The command pattern for controlling the device
--non-interactivedoes not automatically stop the session. The command returns when the session is ready, and the remote device remains active.
5
Confirm that the session is active
Use the session ID from .env.eas-simulator:
- eas simulator:get --json --non-interactiveContinue when status is IN_PROGRESS and remoteConfig is present. A stopped session can still have old connection configuration, so the dotenv file alone is not proof that the device is live.
6
Open the web surfaces
The start command links to a session page with this shape:
https://expo.dev/accounts/<account>/projects/<project>/simulator-sessions/<session-id>
The project-level session list is:
https://expo.dev/accounts/<account>/projects/<project>/simulator-sessions
For supported iOS sessions, open webPreviewUrl in a desktop browser to view and interact with the live simulator. The preview URL is not an application deep link. Do not pass it to a controller command that opens apps or URLs.