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

Run an Expo or React Native app on Expo Simulators

Edit page

Install an Expo or React Native development build or release build on a remote Android Emulator or iOS Simulator, and use Fast Refresh, component inspection, and profiling.


Expo Simulators supports all of its features for Expo and React Native apps. Create a simulator build with EAS Build or on your computer, then install it on a session. A development build connected to Metro also gives you Fast Refresh and the React Native features of agent-device.

Choose a build

GoalBuildGuide
See source changes with Fast RefreshDevelopment build connected to MetroIterate on your code
Inspect a fixed build or capture evidenceRelease buildInstall your app
Test a project without custom native codeExpo GoExpo Go

A release build contains the JavaScript from build time. It does not show later source changes, even when you connect it to Metro.

Expo projects

An Expo project already has what EAS CLI needs. Link it to EAS one time:

Terminal
- eas init

eas init adds the EAS project ID to the app config. Then start a session with an application source:

Terminal
- eas build --platform ios --profile remote-device --non-interactive
- eas simulator:start --platform ios --type agent-device --build-id <build-id> --name "Release build review" --non-interactive

The remote-device profile needs an APK build type for Android and ios.simulator: true for iOS. See Build a simulator-compatible app.

React Native projects without Expo

EAS CLI finds the EAS project from the current directory. It needs package.json and an app config that contains the project ID. Add an app config to the repository root if the project does not have one:

app.json
{ "expo": { "name": "my-app", "slug": "my-app", "extra": { "eas": { "projectId": "<project-id>" } } } }

To use the REST API instead, pass the project ID as appId. The REST API does not read files in the repository. See Expo Simulators REST API.

Use React Native features

agent-device has features for React Native apps:

  • React component, props, and hooks inspection
  • React render profiling, such as slow commits and re-renders
  • JavaScript evaluation through the Chrome DevTools Protocol (CDP) of Metro

Component inspection and render profiling need Metro and a React DevTools connection. On React Native 0.87 and later, add agent-react-devtools as a dev dependency and run npx agent-react-devtools init once. JavaScript evaluation needs only Metro. Keep Metro running while you use these features. For version-matched guidance, read the agent-device help through the session:

Terminal
- eas simulator:exec npx agent-device@latest help react-native
- eas simulator:exec npx agent-device@latest help react-devtools

Common questions

Do I need to add a library to my app?

No. Device-level actions such as snapshots, presses, text entry, screenshots, and logs work on the installed app with no library added to the project.