In this guide
The iOS simulator is fast and free, so it is tempting to stop there. But it runs your app on your Mac's hardware, not on a phone. Some bugs only show up on the real thing. This guide sorts checks into "simulator is fine" and "use a real device".
The table reflects general developer experience, not an official Apple list. Capabilities change with every Xcode release, so treat it as a starting point and check what your own Xcode version offers.
What the simulator is good for
- Layout across screen sizes. Switch between small and large iPhones, Dynamic Type sizes, dark mode and landscape in seconds.
- Localization. Change language and region, and check long German words or right-to-left layouts.
- Basic flows. Sign-up, navigation, forms, empty and error states.
- Quick regression passes after every code change.
- Different iOS versions, as long as you have installed those runtimes.
What needs a real iPhone
| Area | Why the simulator falls short | What to check on a device |
|---|---|---|
| Performance | It uses your Mac's CPU and memory, so speed says little about a phone. | Launch time, scrolling, heat, battery drain |
| Camera and sensors | No real camera; motion and location are simulated at best. | Photo capture, scanning, permissions |
| Push notifications | Delivery through Apple's service is not the same as a local test. | Real delivery, tapping a notification, notification settings |
| Biometrics | Face ID and Touch ID are only simulated. | Real enrollment, failure and fallback to passcode |
| Network quality | The Mac's connection is usually stable. | Weak signal, switching between Wi-Fi and mobile data |
| In-app purchases | Store behavior differs from a real account flow. | Purchase, cancel and restore with a test account |
| Interruptions | Calls, low power mode and background limits behave differently. | Incoming call, app switching, locked screen |
| Memory pressure | The Mac has far more memory than a phone. | Crashes after long use or heavy images |
A simple rule
Use the simulator to find layout and logic bugs quickly. Use a real device to confirm anything involving hardware, timing, the network or money before a release.
How to choose real devices
You do not need many. Pick:
- The oldest iPhone your app still supports.
- A small screen and a large screen.
- The newest iOS version and one version behind.
Write the choice down so you can see what is covered.
When you have only one device
Test the highest-risk flows on it first: install, sign-in, purchase, anything using the camera or notifications. Then ask outside testers to cover what you do not own. Testers on other devices find problems you cannot see on yours. In TestFlight, see how to get feedback before App Review.
Next steps
- Back to the iOS app testing guide.
- Before you submit: iOS release checklist.
- Inviting testers: TestFlight tester onboarding message.
AppReviewX gives you private, structured feedback from other developers on devices you do not own. One feedback you write earns one credit. Get started on AppReviewX.