Skip to main content
Run any mobile flow on real hardware — actual iPhones, Pixels, and Galaxy devices — instead of an emulator or simulator. Same flows, same agent, real devices.
Real device testing is currently in free beta.

Build requirements

What you can run depends on the build you upload:
PlatformBuildRuns on
iOS.app / .app.zipSimulator only
iOS.ipaReal devices only
Android.apk / .aabEmulators and real devices
For iOS, upload an .ipa built for physical devices. Android builds work on both targets with no changes.

Running on a real device

Click Run on a flow (or suite), set Target to Real device, and pick a device model and OS version. The picker lists the live device catalog — newest models first — and defaults to the newest available device.If your app’s active build is an .ipa, the dialog opens on Real device automatically.

Picking a device

device_filter narrows which device the run lands on. All fields are optional:
  • model — e.g. "iPhone 16 Pro", "Pixel 9". Matches the names shown in the dashboard picker.
  • os_version{ "exact": "18" } matches any 18.x; { "exact": "18.3.1" } matches only that version.
  • manufacturer — e.g. "Samsung", or a list of acceptable manufacturers.
  • form_factor"phone" or "tablet".
If no device matches your criteria, the run fails immediately with a clear error — pick a different model or OS version. Device availability is checked at run time; a model that’s momentarily busy is still attempted.

What you get

Real-device runs flow through the same pipeline as every other run:
  • Full video recording of the session, with per-action replay markers
  • Screenshots and annotations for every agent action
  • Device identity on the run page — the exact model and OS the run executed on (e.g. Pixel 9 · Android 16 · Real device)
  • Suites share one device session across their flows, so back-to-back flows start fast
Real-device runs take ~1–2 minutes longer to start than emulator runs while a device is acquired, and iOS sessions take a few extra minutes to finalize their video after the run completes.