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

Expo Simulators session types

Edit page

Compare the four Expo Simulators session types, what each one provisions, and how each one installs apps, reports activity, and connects to the remote device.


The session type sets which controller Expo Simulators starts next to the remote device. There are four session types: agent-device, argent, appium, and web-preview-only. Set the type with --type in EAS CLI or type in the REST API. The default type is agent-device.

Compare the session types

Session typeControllerUse it for
agent-deviceagent-device daemonAgent-driven control, app installation, screenshots, and recordings.
argentArgent tool serverArgent tools and its Model Context Protocol (MCP) server.
appiumAppium serverExisting Appium clients and test suites.
web-preview-onlyNoneBrowser preview, with direct EAS CLI controls available on iOS.

Each session type includes a browser preview. Each session type also provisions only its own controller. For example, agent-device commands do not work in an argent session.

On iOS, eas simulator:control sends direct actions through the preview server. It works independently of the selected controller, including in a web-preview-only session.

Connection details

When a session is ready, Expo Simulators returns its connection details. EAS CLI writes them to .env.eas-simulator. The REST API returns them in remoteConfig.

Session typeVariables in .env.eas-simulatorFields in remoteConfig
agent-deviceAGENT_DEVICE_DAEMON_BASE_URL, AGENT_DEVICE_DAEMON_AUTH_TOKENagentDeviceRemoteSessionUrl, agentDeviceRemoteSessionToken, optional webPreviewUrl and webPreviewToken
argentARGENT_TOOLS_URL and, when required, ARGENT_AUTH_TOKENtoolsUrl, optional toolsAuthToken, optional webPreviewUrl and webPreviewToken
appiumAPPIUM_URL, APPIUM_CAPS (JSON)appiumUrl, capabilities, optional webPreviewUrl and webPreviewToken
web-preview-onlyOnly EAS_SIMULATOR_SESSION_IDwebPreviewUrl, optional webPreviewToken

The remoteConfig fields above are the REST API fields. In the REST API, webPreviewUrl is the address of the public preview. When webPreviewToken is present, it opens only with the token, and a URL with the token is a public link. See Open the browser preview. In --json output, the field is remoteConfig.webPreviewUrl, or remoteConfig.previewUrl for a web-preview-only session. By default, EAS CLI puts the private link in this field and leaves out the token. The private link requires an Expo login. For a session started with --public-link, EAS CLI puts the public link there, with the token.

The tokens in these values give access to the remote device. Keep them secret. See Expo Simulators security, permissions, and data retention.

Behavior by session type

Behavioragent-deviceargentappiumweb-preview-only
Start flags install and launch the appYesYesYesYes
Controller activity resets the idle timerYesYesYesNo
Supports --max-idle-time-minutesYesYesYesNo
Activity appears in eas simulator:eventsYesYesYesNo

Notes:

  • The start flags are --build-id, --build-fingerprint, --application-archive-url, --expo-go, --launch-arg, and --open-url. To connect an Appium client, see Run Appium tests on a remote Android Emulator or iOS Simulator.
  • Controller activity from agent-device, Argent, or Appium resets the idle timer. Browser preview activity does not. For sessions that a person controls in the browser preview, use --max-duration-minutes to limit the session. See How long an Expo Simulators session runs.
  • A web-preview-only session does not report activity, so it does not support an idle timeout.

Choose a session type

  • Use agent-device for most work, and for coding agents. The Expo Simulators skill uses it.
  • Use argent when your agent already uses Argent tools or its MCP server.
  • Use appium when you already have Appium tests.
  • Use web-preview-only when a person only needs to see and use the simulator in a browser.

The Create new simulator dialog on expo.dev offers the Agent Device, Argent, and Appium controllers. Agent Device is the default.

The removed serve-sim type

The preview-only type is now web-preview-only. Its old name was serve-sim. Expo Simulators rejects new sessions with "type": "serve-sim". Update EAS CLI and use web-preview-only.

Sessions created before the rename still return "type": "serve-sim" from the REST API. In --json output, EAS CLI shows them as web-preview-only.

Common questions

Can I change the session type of a running session?

No. Expo Simulators sets the session type when the session starts. Start a new session with a different --type.

Do Android sessions include a browser preview?

Yes. Android sessions include a browser preview that streams the emulator. Select Open preview on the session page on expo.dev to open it in a new tab. Android support is still in development, so some features that work on iOS may not work on Android yet.

Which session type does a create session link use?

A create session link always starts a web-preview-only session. Links support Android and iOS. Android support is still in development, and Android application archives must be .apk files. See Share a live Expo Simulators session or start one from a link.