How to test your iOS app on real iPhones without a device cloud

By Dean Hajjar ·

Plug your own iPhones into one Mac and drive them from there. Xcode runs your app and XCUITest suites on a connected phone; for a no-code device lab, iFarm records a flow once, replays it on every iPhone, and writes a pass/fail HTML report with a screenshot of every check. Cloud device farms are the alternative when you need models you don't own.

Why real iPhones still matter

The Simulator is fast and free, and it's where most testing should start. But some things only show up on hardware:

A support ticket that says "it breaks on my iPhone" is often one of these. Reproducing it on the same model and iOS version is the fastest fix.

Your options

Xcode + XCUITestCloud device farmDevice lab on one Mac (iFarm)
DevicesYour own, plugged inThe provider'sYour own, plugged in
Tests written asSwift code in your projectYour existing test code (XCUITest, Appium and others)Recorded or edited steps, no code
Many phones at oncePossible, with your own CI setupYesYes, in one window
ReportsXcode test resultsThe provider's dashboardPass/fail HTML page per run, with screenshots
SchedulingYour CIThe provider or your CIBuilt in, for example nightly
CostFree with XcodePaid; see each provider's pricingFree (iFarm), plus your phones
Your dataStays with youYour build runs on their devicesStays on your Mac

Xcode and XCUITest

The standard path. Plug in an iPhone, choose it as the run destination, and press Run; Apple explains it in Running your app in Simulator or on a device. For automated checks, UI tests built with XCTest (often called XCUITest) launch your app and tap through it from code.

It's precise and it lives in your repository. The costs are writing and maintaining test code, and the work of running suites across several phones on a schedule.

Cloud device farms

Services such as AWS Device Farm and BrowserStack App Automate host real iPhones in their data centers. As of November 2026, AWS describes running tests on "a large selection of physical devices", and BrowserStack lists Appium and XCUITest among the frameworks it runs on real devices. Their own pages have current pricing.

They shine when you need models you don't own, or a wide matrix for a release. The trade-offs: you pay per use or per plan, your build runs on someone else's hardware, and you usually still need test code.

A device lab on one Mac

If you already have a drawer of iPhones (old personal phones, team phones, a few cheap older models), you can turn them into a lab without a server, Docker or a subscription. That's what iFarm does: a free Mac app that runs real iPhones from one Mac. Every phone shows live in one window, you control any of them with the mouse, and you automate them by recording.

For a code-first, self-hosted alternative built on Appium, see self-hosted iOS device farm vs iFarm.

Build a device lab with iFarm

What you need

How many phones one Mac runs

Mac memoryPhones, comfortably
8 GB5–10
16 GB10–20
32 GB or more20–30, limited by USB hubs

Each phone costs about 140 MB of Mac memory. iFarm's Health page shows "Room for about N more phones" for your Mac.

Steps

  1. Install Xcode and iFarm, and add your Apple ID in Xcode → Settings → Accounts.
  2. Connect each iPhone by USB, trust the Mac and turn on Developer Mode. iFarm's setup guide installs its helper on each phone, signed with your team.
  3. Install your build on the phones the way you normally do (Xcode, TestFlight or the App Store).
  4. Open one phone large and press Record. Go through the flow you want to test: sign up, log in, check out, change a setting. Press Stop and save.
  5. Open the automation and turn on Test mode in its header.
  6. Add checks where they matter: a Wait for text step for every screen that must appear.
  7. Press Run on all phones, a group, or the checked ones.
  8. Open the report from the run (Open report) or from History (Report).

What test mode changes

Normal automations are forgiving: they dismiss popups and recover when something gets in the way. A test shouldn't be. In test mode:

Why recordings survive different screen sizes

For each tap, iFarm remembers the text on screen under your finger, not just the coordinates. On replay it waits up to 8 seconds for that button, picks the copy of the text nearest where you tapped, and then checks for the word that appeared after it. So a flow recorded on one iPhone runs on other sizes. Steps without text fall back to the position on screen.

Run it nightly

Add a schedule (Plan → Schedules) to run the test every night on all phones or a group, on chosen weekdays. History lists every run with the phone, what started it and the result, with a screenshot of any failure. Chain tests into a flow if one depends on another (on success, on failure, always).

Tests worth running on a phone lab

TestWhy a real device
Sign-up and log-in on every phoneKeyboard, autofill and layout differ by size
Permission prompts (camera, notifications, location)System prompts appear only on device in their real form
Languages and text sizesSet phones up differently and run one flow to see where layouts break
Bug from a support ticketSame model and iOS version as the customer
Reliability over hoursCrashes, memory growth and battery drain
App Store screenshotsSeveral iPhone sizes at once

For network testing, set a phone's Wi-Fi proxy (Settings → Wi-Fi → ⓘ → Configure Proxy) to a debugging proxy such as Charles or Proxyman. iFarm never changes the phones' network settings itself.

One phone, one driver

iFarm's helper and Xcode's own UI tests (XCUITest) can't drive the same phone at the same time. Give each its own phone, or stop iFarm on that phone while your XCUITest suite runs.

Tip: If you test for clients, use phones dedicated to testing and follow each client's rules. A replay taps whatever is on screen, so don't run one on a phone someone is using.

Frequently asked questions

Can I test an iOS app on a real iPhone for free?

Yes. Xcode is free and a free Apple ID can install your app on your own iPhone, though it has to be reinstalled every 7 days. iFarm is free too.

Do I need a device cloud to test on several iPhones?

No. You can plug several iPhones into one Mac and run the same flow on all of them. A cloud farm helps when you need models you don't have.

Can iFarm run my XCUITest suite?

No. iFarm replays its own recorded or edited steps. Run XCUITest from Xcode or CI, on a phone iFarm isn't driving at that moment.

How do I share test results with a client?

Each test-mode run writes an HTML report with screenshots in its own folder under ~/Library/Application Support/iFarm/Reports. Zip the folder and send it.

Does testing need a jailbreak?

No. Stock iPhones with Developer Mode on are all you need.