Skip to main content
Device coverage

Test the devices your users actually hold

You cannot cover every phone and every OS version, and you do not have to. Build a coverage matrix from your own audience, run most of it on virtual devices in seconds, and keep real hardware for what only it can answer.

Virtual for breadth · real devices for the verdict

Your coverage matrix≈ 89% of sessions
OS version
2 back
1 back
Latest
iPhone 15
iPhone 12
Pixel 8
Galaxy S23
Galaxy A14
You test this6 of 15 · illustrative

You can't test every phone. You don't need to.

Every model times every OS version is thousands of combinations. Owning one of each is a budget, not a plan — and most of them never load your app. The combinations that matter are the ones your own users are already on.

Cover the cells that cover your users

Read the models and OS versions in your own analytics, mark the handful that reach most of your audience, and test those. A short list you actually run beats a long list you never get to.

Your top combinations4 picks
  • Galaxy S25

    Samsung

    Android 16
  • Pixel 9

    Google

    Android 15
  • iPhone 15 Pro

    Apple

    iOS 18
  • Galaxy A54

    Samsung

    Android 14

Run them in parallel. Add real hardware for the ones that need it.

How to size your matrix

Rank every device and OS combination by how many of your users actually hit it. A short head covers most of them; the long tail is where you choose your battles.

Device / OS combinations — ranked by real usageshifts each release
  1. 1

    Start from analytics

    The models and OS versions your users actually load, not a wishlist.

  2. 2

    Cover the top of the curve

    A handful of combinations usually reaches most of your audience.

  3. 3

    Add the risky edges

    The oldest OS you support, the smallest screen, one low-end device.

  4. 4

    Re-read it each release

    The curve moves every quarter. Refresh the matrix instead of re-buying hardware.

Run most of the matrix virtually. Confirm the rest on hardware.

An Android emulator runs the same Chrome and the same Android a phone runs; an iOS simulator runs real WebKit. Layout, engine and logic are genuine there — so you cover breadth in seconds and keep real devices for what only they can answer.

Virtual, for breadth

Layout, CSS, JavaScript, browser engine, and building automated suites.

Hardware, for the verdict

Camera and sensors, gesture feel, real performance, and every release sign-off.

Which environment for which job

A layout change across screen sizes

Virtual — a breakpoint does not depend on silicon.

A cross-browser web regression

Virtual first — the engine is real in both places.

Writing and debugging an automated suite

Virtual — a failed run costs seconds, not a queued handset.

Camera, microphone or sensor flows

Real device — a synthetic camera only proves the permission dialog.

Gesture feel and animation smoothness

Real device — touch and GPU are the phone's, not the host's.

Release sign-off

Real device — the last pass should run where customers do.

FAQ

Frequently asked questions

There is no fixed number — build the list from your own analytics rather than a target. In practice a handful of your top device and OS-version combinations usually reaches most of your sessions, and you add the oldest OS you still support, one small screen and one low-end device for the risky edges. Then re-read it each release, because the mix shifts.

Build your matrix and open the first cell

Pick the device and OS-version combinations your users are on, and open one — an emulator, a simulator or a real phone — from the same picker, with the same toolbar.