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

Run a Unity or hybrid app on Expo Simulators

Edit page

Build a Unity game or another app for the Android Emulator or iOS Simulator, then install and control it on a remote Expo Simulators session.


Expo Simulators runs Unity apps. Unity exports a native project. Build that project for the emulator or simulator, publish the build to a URL, and pass the URL to eas simulator:start. The same steps apply to any app that produces a simulator .app or an emulator .apk.

Build a Unity app

Build an .apk from Unity and include the x86_64 target architecture, because the Android Emulator runs that architecture. In Player Settings, under Target Architectures, select x86-64. New projects in Unity 6.3 and later list only ARMv7 and ARM64 for Android, so check that your Unity version can build an x86_64 APK before you choose it for emulator testing.

Start a session with the build

Upload the file to storage that returns it directly. Then pass its URL:

Terminal
- eas simulator:start --platform ios --type agent-device --application-archive-url "https://example.com/<YourApp>.app.tar.gz" --name "Unity build review" --non-interactive

For the project setup that EAS CLI or the REST API needs, see Native Android and iOS apps.

Control the app

Use device-level commands, such as open, screenshot, and press with coordinates (press <x> <y>). A Unity app exposes no accessibility tree unless it builds one with the Unity Accessibility module, so snapshot -i finds no elements to press. See Control a remote simulator with agent-device, Argent, or Appium.

Hybrid apps

A hybrid app shows web content inside a native app. If the toolchain produces an Android Emulator .apk or an iOS Simulator .app, install it with the same steps.

Common questions

Which features do not work for Unity apps?

Fast Refresh, Metro, React DevTools, component inspection, and React render profiling do not work. See Expo Simulators limitations.

Can I record the app in motion?

Yes. Use agent-device record start <path> and record stop. Recordings may not capture every frame, so they cannot prove or disprove a short frame drop. See Capture screenshots, recordings, and logs from a remote simulator.