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 Expo Simulators 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 Expo Simulators opens the Metro URL while the session starts:
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
Replace <metro-host> with the host of the tunnel URL, without a port. Use an exp:// URL.
On iOS, Expo Simulators 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
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:
--sdk-version works only with --expo-go.
Start Expo Go from a link
A create session link can also start Expo Go. Set these parameters:
expoGo=trueplatform=androidorplatform=ios.sdkVersion: the Expo SDK version of your project, such as58openUrl: 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.