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

Test your project in Expo Go on a remote simulator

Edit page

Install Expo Go on an Expo Simulators session, connect it to Metro through a tunnel, and test a project that has no custom native code without creating a build.


Expo Go on Expo Simulators lets you test your project without a build. Pass --expo-go to eas simulator:start. EAS CLI selects the Expo Go version that matches the Expo SDK of your project, and EAS installs it. Then Expo Go opens your project from Metro through a tunnel.

Expo Go works only for projects that have no custom native code. For other projects, use a development build. See Use Fast Refresh with Metro on a remote simulator.

Connect Expo Go to Metro

1

Start Metro with a tunnel

The remote device must reach Metro over the internet. Start Metro first, because EAS opens the Metro URL while the session starts:

Terminal
- EXPO_UNSTABLE_TUNNEL_V2=1 npx expo start --tunnel

EXPO_UNSTABLE_TUNNEL_V2=1 selects a tunnel that is signed for your Expo account. From SDK 58, npx expo start --tunnel uses this tunnel by default and ignores the variable.

2

Start the session with Expo Go

Terminal
- eas simulator:start --platform ios --type agent-device --expo-go \
--open-url "exp://<metro-host>" \ --name "Expo Go live preview" --non-interactive

Replace <metro-host> with the host of the tunnel URL, without a port. Use an exp:// URL.

On iOS, EAS starts Expo Go with launch arguments that skip the developer menu onboarding screen and hide the floating developer menu button. You do not need to pass them.

3

Check the result

Open the browser preview URL (webPreviewUrl) in a desktop browser, or take a screenshot through the controller. Edit a source file to see the change with Fast Refresh.

Select an Expo Go version

EAS CLI reads the Expo SDK version from the project. To use a different version, pass --sdk-version together with --expo-go:

Terminal
- eas simulator:start --platform ios --type agent-device --expo-go --sdk-version <version> --name "Expo Go SDK check" --non-interactive

--sdk-version works only with --expo-go.

A create session link can also start Expo Go. Set these parameters:

  • expoGo=true
  • platform=android or platform=ios. Android support is still in development.
  • sdkVersion: the Expo SDK version of your project, such as 58
  • openUrl: the Metro URL
https://expo.dev/accounts/<account>/projects/<project>/simulator-sessions/create?expoGo=true&platform=ios&sdkVersion=<version>&openUrl=exp%3A%2F%2F<metro-host>

A link does not read the SDK version from your project. Without sdkVersion, the session installs the current Expo Go release.

See Start a session from a link.

Common questions

Expo Go cannot find the SDK version. What do I do?

Run the command from an Expo project with a valid app config, or pass --sdk-version <version> with --expo-go.

Why does my project not load?

The usual causes are that Metro was not running when the session started, or that the --open-url value does not use the exp:// scheme. Start Metro first, and pass an exp:// URL. Do not pass the webPreviewUrl to --open-url. See Troubleshoot Expo Simulators.