Device Fragmentation
Thousands of phones, dozens of screen sizes, many OS versions. Learn what device fragmentation is, how to choose a smart device matrix, and which bugs only show up on certain devices.
A banking app passes every test on the team’s three test phones: a new iPhone, a new Pixel and a new Galaxy. Two days after release, support tickets pile up: “The Confirm button is missing on my phone.” “The app crashes when I open my statements.” “I never get the payment notification.”
All three complaints come from devices the team never tested: an iPhone SE with its short screen, a cheap Android phone with 2 GB of RAM, and a Xiaomi phone whose battery saver freezes apps in the background. That’s device fragmentation, and it’s one of the main reasons mobile testing is harder than it looks.
What is fragmentation?
FragmentationFragmentationThe huge variety of device models, screen sizes and OS versions an app must support.Open in glossary → means your app runs on a huge variety of devices that differ in many ways at once:
| Dimension | Examples | Why it matters |
|---|---|---|
| Screen size & shape | 4.7″ iPhone SE, 6.7″ phones, tablets, foldables, notches and punch-holes | Layouts overflow, get cut off or look stretched |
| Pixel density | 160 to 640+ dpi on Android, @2x and @3x on iPhone | Blurry images, wrong sizes if the app uses pixels instead of dp/pt |
| OS version | iOS 17–26, Android 11–16 at the same time | Different permissions, APIs and behaviors |
| Manufacturer skin | Samsung One UI, Xiaomi HyperOS, OPPO ColorOS, stock Pixel | Different fonts, settings, battery savers, sharing and permission screens |
| Hardware power | 2 GB to 16 GB RAM, budget vs flagship chips | Slow screens, memory crashes, the app killed in the background |
| Form factor | Phones, tablets, foldables (folded and unfolded), Chromebooks | Layout must adapt when the screen changes size at runtime |
| Other hardware | Cameras, sensors, NFC, fingerprint vs face unlock | Features that only fail on some devices |
| User settings | Font size, display size, dark mode, language, battery saver | The same phone behaves differently for different people |
Android has tens of thousands of device models from hundreds of makers. Apple only sells a few dozen iPhone and iPad models, but even there you still have small and large screens, older and newer iOS versions, and iPad multitasking.
Why it matters
- Your users don’t own your test phones. Teams usually test on new, expensive devices. Many users have older, cheaper or smaller ones.
- Device-specific bugs are hard to reproduce. “It works on my phone” is the start of the conversation, not the end. Without the device details, developers can’t fix the bug.
- Bad reviews are public. An app that crashes on a popular budget phone gets one-star reviews from all of its owners.
- You can’t test everything. That’s the real lesson: you need a smart, small set of devices that represents your users. It’s a form of compatibility testingCompatibility testingChecking the product works across different devices, OS versions, browsers and screen sizes.Open in glossary →.
How teams choose a device matrix
A device matrix is the list of devices (and OS versions) you test on. Here’s how good teams build one:
- Start with your analytics. Look at which devices, OS versions and screen sizes your real users have (Firebase Analytics, App Store Connect, Google Play Console). For a brand-new app, use public market-share data for your target countries.
- Know your supported range. The product team decides the minimum OS version (for example “iOS 17+ and Android 11+”). Test the oldest one you still support: that’s where crashes hide.
- Cover the newest OS. New releases change permissions, notifications and navigation. Install betas early.
- Add the most popular devices. A handful of models often cover a big share of your users.
- Add the extremes: a small screen (iPhone SE, a 360 dp Android), a low-end device (2–3 GB RAM), and a tablet or foldable if you support them.
- Mix manufacturers. At least Samsung plus one other Android maker (Xiaomi, OPPO, Motorola, Pixel), because skins behave differently.
- Review it regularly. Every few months, update the matrix from fresh analytics.
A typical starter matrix looks like this:
| Slot | Example | Covers |
|---|---|---|
| Newest iPhone | The latest iPhone on the latest iOS | New iOS behaviors |
| Oldest supported iPhone | iPhone XR on iOS 17 | Old iOS, older hardware |
| Small iPhone | iPhone SE | Short 4.7″ screen |
| Popular Samsung | Galaxy A-series | Biggest share, One UI |
| Low-end Android | 2–3 GB RAM phone on an older Android | Performance, memory, old OS |
| Other maker | Xiaomi or OPPO | Aggressive battery savers, different skin |
| Stock Android | Pixel on the latest Android | Newest Android features first |
| Large screen | Foldable or tablet | Adaptive layouts, resizing |
Build your device matrix
Now it’s your turn. Pick devices from the (example) analytics below. Try to cover the risks without blowing the time budget.
🧩 Build your device matrix
You test a food-delivery app. Analytics show these models (example data). Pick the devices for your regression run and watch the feedback.
Screen sizes are approximate logical sizes (pt on iOS, dp on Android). The remaining 29% of users are spread over hundreds of other models.
Users
17%
Devices
2
Time
1.2 h
One regression pass takes about 35 min per device. Your team has 6 h per release.
OS range
iOS: 26 – 26 (supported 17–26)
Android: 16 – 16 (supported 11–16)
Coverage checks 2/8
- Both platforms
- Oldest supported OS (iOS 17, Android 11)Old OS versions are where crashes and missing APIs hide. Add the iPhone XR and the Galaxy A12.
- Newest OS (iOS 26, Android 16)
- A small screenSmall or short screens (iPhone SE, 360 dp Androids) are where buttons get cut off.
- A low-end device (≤ 3 GB RAM)Cheap phones expose slow screens, memory crashes and the app being killed in the background.
- A tablet or foldableLarge and changing screens break stretched images and fixed layouts.
- More than one Android manufacturerSamsung, Xiaomi and Google phones behave differently (battery savers, fonts, permissions).
- At least 45% of users on these exact modelsStart from your analytics: the most popular models give the most value per device.
Screen sizes, to scale
Real devices, emulators and cloud device farms
You have three ways to get a device in front of you. Good teams mix all three. (For a deeper look at the first option, see Simulators and emulators.)
| Emulators & simulators | Real devices | Cloud device farms | |
|---|---|---|---|
| What it is | Software on your computer: Android emulatorEmulatorSoftware that imitates a real device's hardware and OS on your computer, like the Android Emulator.Open in glossary →, Xcode iOS simulatorSimulatorSoftware that imitates a device's behavior on your computer, like Apple's iOS Simulator.Open in glossary → | Physical phones on your desk | Real (and virtual) devices in a data center, used over the internet |
| Good for | Fast checks, many OS versions and screen sizes, early development | Real performance, camera, sensors, gestures, push, battery, OEM skins | Many models you don’t own, automated runs at scale |
| Weak at | Performance, real hardware, OEM skins (emulators run stock Android) | Cost, maintenance, limited number of models | Latency, cost per minute, some hardware (e.g. NFC) is hard to test remotely |
| Cost | Free | Buying and replacing phones | Subscription or per-minute pricing |
Popular cloud options:
- BrowserStack gives you real iOS and Android devices in the browser. App Live is for manual, interactive testing; App Automate runs automated test scripts.
- Firebase Test Lab (Google) runs automated tests on physical and virtual devices: instrumentation tests and the automatic Robo crawler for Android, and XCTest for iOS. You get videos, screenshots and logs, but it isn’t meant for manual tapping.
- AWS Device Farm offers real Android and iOS devices for both automated test runs and remote access sessions where you interact with a device manually.
Bugs that only happen on some devices
| # | Bug | What you see | Typical severity |
|---|---|---|---|
| 1 | Content cut off on small screens | The main button is below the screen edge and the screen doesn’t scroll | High |
| 2 | Overlap with large fonts | Text runs under prices, icons or other text at 130–200% font size | Medium |
| 3 | Stretched or blurry images | Photos distorted on tablets and unfolded foldables, blurry on high-density screens | Low–Medium |
| 4 | Layout breaks on fold/unfold (see Orientation and screen sizes) | The screen resets, loses input, or keeps the phone layout on the big screen | Medium–High |
| 5 | Low-memory crashesCrashWhen an app suddenly closes or stops working because of an unhandled error.Open in glossary → | App crashes on 2–3 GB phones when loading images, maps or the camera | High |
| 6 | Background work killed by OEM battery savers | No notifications, stale order status, uploads stop (Xiaomi, OPPO, Samsung “sleeping apps”) | High |
| 7 | Camera differences | Wrong orientation, black preview or crash when scanning a card on some models | High |
| 8 | Notch / cutout overlap | Header or buttons hidden behind the camera cutout; see safe areaSafe areaThe part of the screen not covered by the notch, Dynamic Island, rounded corners or home indicator.Open in glossary → | Medium |
| 9 | OS-version-only bugs | A feature works on Android 15 but crashes on Android 11 (missing API) | High |
| 10 | OEM font or setting differences | A maker’s system font is wider, so labels truncate only on that brand | Low–Medium |
Find the bug
This food-delivery product screen looks fine on the default iPhone 16. But it has five bugs that only appear on certain devices or settings. Switch device profiles, change the font size, tap around, and lock the phone for ten minutes to see what happens to the order status.
🐞 Bug hunt: Device profile lab
This demo has 5 hidden bugs. Explore it like a tester, then check your findings.
Margherita pizza, wood-fired with extra basil
€18.90
San Marzano tomatoes, fior di latte, fresh basil and olive oil.
Extras
Device profile
Font size (system setting)
Apple · 8 GB RAM · shown at 63% scale
- 1
Hint: Switch to the iPhone SE.
- 2
Hint: Set the font size to 200% on any device.
- 3
Hint: Pick the unfolded Galaxy Z Fold or the iPad.
- 4
Hint: On the Moto E13 (2 GB RAM), open the photos.
- 5
Hint: Lock the phone for 10 minutes on the Xiaomi, then compare with the Pixel.
Tools and how-to
- Android Studio › Device Manager: create virtual devices for different screen sizes, densities and Android versions, including foldable, tablet and Resizable profiles.
- Change size and density on a real phone with adbadbAndroid Debug Bridge: a command-line tool for installing apps, reading logs and controlling Android devices.Open in glossary →:
adb shell wm size 720x1280andadb shell wm density 320. Undo withadb shell wm size resetandadb shell wm density reset. - Font and display size: Settings › Display. Combine the largest font with the largest display size for the worst case.
- Low memory: test on a real low-end phone. In Developer options, Don’t keep activities helps you find state-loss bugs.
- Battery savers: keep the maker’s default battery settings, lock the phone for a while, and watch for missing notifications.
- Xcode Simulator: install simulators for the smallest (iPhone SE) and largest iPhones and an iPad. Add older iOS runtimes in Xcode › Settings › Components.
- Larger Text: Settings › Accessibility › Display & Text Size › Larger Text, with Larger Accessibility Sizes turned on.
- Display Zoom: Settings › Display & Brightness › Display Zoom makes the UI bigger, similar to a smaller screen.
- Real devices: keep at least one old, supported iPhone around. The simulator won’t show real memory limits or performance.
- BrowserStack App Live: upload your build (or install from TestFlight / Play), pick a real device and test manually in the browser.
- Firebase Test Lab: upload an APK/AAB and run a Robo test across a list of devices to catch crashes and layout issues automatically; or run your team’s instrumentation or XCTest suites.
- AWS Device Farm: run automated tests across a device pool, or start a remote access session to use a real device manually.
- Always record the exact device model and OS version from the farm in your bug report.
Example test cases
TC-DEV-001Main button is reachable on the smallest supported screenedgehigh
Preconditions
- iPhone SE (3rd gen) or a 360×640 dp Android device
Steps
- Open a restaurant
- Open a product
- Scroll to the bottom of the screen
Expected result
"Add to order" is fully visible and tappable, either pinned to the bottom or reachable by scrolling.
TC-DEV-002Product page is readable at the largest font sizeedgemedium
Preconditions
- Font size set to the maximum (Android 200% / iOS largest accessibility size)
Steps
- Open a product with a long name
- Check name, price, extras and button
Expected result
No text is clipped or overlapping. The price is fully readable next to or below the name.
TC-DEV-003Layout adapts when a foldable is unfoldedpositivemedium
Preconditions
- Foldable device or foldable emulator
Steps
- Open a product on the folded cover screen
- Select size L and one extra
- Unfold the device
Expected result
The selection is kept, the layout uses the bigger screen sensibly, and images keep their proportions.
TC-DEV-004Photo gallery works on the lowest supported deviceedgehigh
Preconditions
- Android device with 2 GB RAM on the minimum supported Android version
Steps
- Open a product
- Tap "See all photos"
- Scroll through all photos
Expected result
The gallery opens and scrolls smoothly. No crash, no "keeps stopping" dialog.
TC-DEV-005Order updates arrive with the OEM battery saver on default settingsedgehigh
Preconditions
- Xiaomi or OPPO device, default battery settings
- Notifications allowed
- Active order
Steps
- Place an order
- Lock the phone for 15 minutes
- Unlock and open the app
Expected result
Status notifications arrived while locked, and the order status is up to date when the app opens.
TC-DEV-006App launches and core flow works on the oldest supported OSpositivehigh
Preconditions
- Device on the minimum supported OS (e.g. Android 11, iOS 17)
Steps
- Install the release candidate
- Log in
- Place an order with a test card
Expected result
No crashes; every step works as on the newest OS.
Tip: click a test case to expand it.
Checklist
Device fragmentation checklist
0 of 13 checked
Check your understanding
Quick quiz
0/5 answered · 0 correct
1.What is device fragmentation?
2.You can test on only six devices. Which set is the BEST choice?
3.Order notifications never arrive on a Xiaomi phone but work on a Pixel. What is a likely cause?
4.Which statement about Firebase Test Lab is TRUE?
5.Why should important bugs be confirmed on a real device?
Key takeaways
- Fragmentation = many screen sizes, densities, OS versions, manufacturer skins, hardware levels and form factors at once.
- You can’t test every device. Build a device matrix from analytics: popular models plus the extremes (small screen, low-end, oldest and newest OS, another maker, tablet or foldable).
- Mix tools: emulators and simulators for speed, real devices for truth, and cloud device farms (BrowserStack, Firebase Test Lab, AWS Device Farm) for reach.
- Classic device-only bugs: cut-off buttons on small screens, overlap with large fonts, stretched images on big screens, low-memory crashes, and background work killed by battery savers.
- Every device bug report needs the model, OS version, settings and build. Without them, nobody can reproduce it.
Finished this page?Nice work, this page is complete!
Mark it as done to track your progress. It's saved in this browser, no account needed.
Its review cards are now in Bites ⚡