This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Use an iOS Simulator on Linux or Windows

Edit page

Build an iOS app with EAS Build and run it on a remote iOS Simulator from Linux, Windows, or a cloud sandbox with Expo Simulators.


The iOS Simulator runs only on macOS. With Expo Simulators, the iOS Simulator runs on a Mac on EAS, and you control it from any computer. Use EAS Build to create the iOS Simulator build, then install it on an Expo Simulators session.

This workflow also works in a cloud sandbox or for a background coding agent that cannot run a local simulator.

Build and run on a remote iOS Simulator

1

Add a simulator build profile

Add an EAS Build profile that targets the iOS Simulator. For live edits with Fast Refresh, also add developmentClient: true:

eas.json
{ "build": { "development-simulator": { "developmentClient": true, "ios": { "simulator": true } } } }

iOS Simulator builds are not signed, so EAS Build does not ask for credentials for this build.

For a fixed build without live edits, leave out developmentClient, skip step 3, and remove the --open-url flag from the command in step 4.

2

Create the build on EAS

Terminal
- eas build --platform ios --profile development-simulator --non-interactive

Record the build ID from the output.

3

Start Metro with a tunnel

Terminal
- EXPO_UNSTABLE_TUNNEL_V2=1 npx expo start --tunnel

From SDK 58, npx expo start --tunnel uses this tunnel by default and ignores EXPO_UNSTABLE_TUNNEL_V2. On Windows, see Run commands on Windows for the syntax that sets the variable.

4

Start the session with the build

Terminal
- eas simulator:start --platform ios --type agent-device --build-id <build-id> \
--open-url "<scheme>://expo-development-client/?url=<encoded-public-metro-url>" \ --name "Profile screen live edits" --non-interactive

5

See and control the simulator

Open the browser preview URL from the start output in a desktop browser. You can also use agent-device commands through eas simulator:exec. See Control a remote simulator with agent-device, Argent, or Appium.

6

Stop the session

Terminal
- eas simulator:stop

Stop Metro too.

Run commands on Windows

EAS CLI runs on Windows. The shell examples in these docs use the shell syntax of macOS and Linux. For example, EXPO_UNSTABLE_TUNNEL_V2=1 npx expo start --tunnel sets an environment variable for one command, which does not work in PowerShell or Command Prompt. In PowerShell, set the variable first:

Terminal
- $env:EXPO_UNSTABLE_TUNNEL_V2=1; npx expo start --tunnel

In Command Prompt, use set. Do not put a space before &&, because the space becomes part of the value:

Terminal
- set EXPO_UNSTABLE_TUNNEL_V2=1&& npx expo start --tunnel

Commands that continue on a new line with \ also fail in PowerShell. Put the command on one line, or end each line with a backtick (`) instead.

You can also run the examples as written in Windows Subsystem for Linux (WSL) or Git Bash.

Common questions

Do I need Xcode?

No. EAS Build creates the iOS Simulator build, and Expo Simulators runs the iOS Simulator. You need Xcode only to create a build on your own computer.

Which iOS devices can I use?

iPhone 17, iPhone 17 Pro, iPhone 17 Pro Max, iPhone 17e, iPhone Air, and several iPad models. See Expo Simulators devices.

Can I use an Android Emulator on Linux instead?

Yes. A local Android Emulator runs on Linux and Windows. Use an Expo Simulators Android session when your computer cannot run an emulator, or when an agent in a sandbox needs one.