iTranslated by AI
How to Determine the Supported iOS Versions for New App Development
Introduction
I recently had the opportunity to consider which OS versions to support for new iOS apps in development, so I would like to share the results.
Conclusion
- Supporting the latest OS version and the one immediately preceding major version is cost-effective (projecting over 90% coverage).
- Even for apps targeting iOS 13/14 or later, you must still account for the iPhone SE (1st generation).
- If you adopt SwiftUI, you need at least iOS 13 (though some features require iOS 14 or later).
Information Used for Consideration
I used the following information:
- iOS/Android market share
- OS share within iOS (and Android)
- Device share within iOS (and Android)
- Correspondence table between devices and iOS versions
- Correspondence table between devices and screen resolutions
The sources for this information are listed in the reference table below.
| Required Information | Reference |
|---|---|
| iOS/Android market share | StatCounter |
| OS share within iOS (Android) | Smatab info |
| Device share within iOS (Android) | DeviceAtlas, mixpanel |
| Device to iOS correspondence table | iOS Device List |
| Device to resolution correspondence table | iOS Device List |
Note: I discovered this after writing this article, but the mixpanel site provides very detailed research on OS and device market share.
Additionally, depending on the app you are building, the following information might be useful for selecting target OS/devices, though I am unsure if such data exists:
- OS/device share by age group
- OS/device share by gender
Device to iOS Correspondence Table
I will use this for later analysis.
[Reference]
| Supported iOS | Devices | Notes |
|---|---|---|
| ~10 | iPhone 5, iPhone 5c | - |
| ~11, 12 | iPhone 5s, iPhone 6, iPhone 6 Plus | All devices supporting iOS 11 support iOS 12 |
| ~13, 14 | iPhone SE (1st generation), iPhone 6s and later | All devices supporting iOS 13 support iOS 14 |
[Sad News]: The iPhone SE (1st generation) supports iOS 14.
Resolution and Device Correspondence Table
I will use this for later analysis.
[Reference]
| Resolution | Devices |
|---|---|
| 640 x 1136 | iPhone SE (1st generation) |
| 750 x 1334 | iPhone 6s, iPhone 7, iPhone 8, iPhone SE (2nd generation) |
| 828 x 1792 | iPhone XR, iPhone 11 |
| 1080 x 2340 | iPhone 12 mini |
| 1125 x 2436 | iPhone X, iPhone XS, iPhone 11 Pro |
| 1170 x 2532 | iPhone 12, iPhone 12 Pro |
| 1242 x 2208 | iPhone 6s Plus, iPhone 7 Plus, iPhone 8 Plus |
| 1242 x 2688 | iPhone XS Max, iPhone 11 Pro Max |
| 1284 x 2778 | iPhone 12 Pro Max |
Which version should you support?
Survey of already released apps
First, I checked the supported OS versions of apps released as of November 2020.
You can check the supported OS on an iPhone by navigating to App Store > Select any app > Information > Compatibility - Works on this iPhone.
(Example of the YouTube app)
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259125/c49e40f4-c0e3-6278-fb8c-b37e8f3ed1a4.jpeg width=40%>
Here are the results of checking supported versions for apps I personally use frequently (checked in November 2020).
This data is based on my impression.
| Version | Supported Apps |
|---|---|
| Supports iOS 9+ | Super conservative apps (Finance) |
| Supports iOS 10+ | Conservative apps (Coupon-related) |
| Supports iOS 11+ | Ordinary apps (General) |
| Supports iOS 12+ | Cutting-edge apps (SNS) |
| Supports iOS 13+ | None found |
Ranked by quantity, the impression was: Supports iOS 11+ > Supports iOS 10+ > Supports iOS 12+ = Supports iOS 9+.
While it depends on the initial release timing, it seems there aren't as many apps "supporting iOS 12+" as I thought.
Regarding the iPhone SE (1st generation)
It is confirmed that the iPhone SE (1st generation) supports up to iOS 13 and 14. Therefore, apps supporting iOS 13/14 must account for behavior on devices with a resolution of 640 x 1136.
Because low-resolution devices have fewer characters per line, if text doesn't fit on an iPhone SE (1st generation), developers need to consider handling it, such as: (1) using "..." at the end, (2) breaking lines, or (3) changing the text size.
By the way, the only device with a resolution of 640 x 1136 that supports iOS 13/14 is the iPhone SE (1st generation).
According to DeviceAtlas research, the share of the iPhone SE (1st generation) in Japan in 2019 was 3.54% (-0.73% year-over-year), and it is expected to be lower in 2020.
(*This share rate includes all devices, including Android.)
If the share of the iPhone SE (1st generation) becomes extremely low in the future, I believe it will be necessary to consider how much to guarantee behavior on the iPhone SE (1st generation) even for apps supporting iOS 14.
It will be necessary to keep an eye on the device share of the iPhone SE (1st generation) going forward.
Which version should new apps support?
Ultimately, the version to support for newly developed apps often depends on the coverage rate you aim for.
Roughly, the target coverage rate and OS version support align as follows:
| Coverage Rate | Supported OS Version |
|---|---|
| 90% or more | One major version back or newer |
| 95% or more | Two major versions back or newer |
| 99% or more | Even older versions |
For example, two months after iOS 14 was released (September 17, 2020), supporting iOS 13 or later covered about 93% of users, and iOS 12 or later covered about 98%. (Smatab info research as of 2020/09/30 )
Incidentally, it seems that supporting iOS 11 or later only saves about 1.2% more users.
Also, since iOS updates roughly once a year, if you don't drop support for older OS versions early, the number of target OS versions will keep increasing, raising development and operational costs.
Dealing with bugs dependent on old OS versions, maintaining test devices for old OS versions, and the cost of testing on old OS versions are not trivial.
In an extreme scenario, adding one supported OS version adds about 0.5 to 1 person to the testing and development teams respectively.
Considering everything, I think it is cost-effective to support the current latest OS version and the one major version preceding it.
Surprisingly, it seems Japanese users update their iOS frequently.
Technical Perspective
If you support iOS 13 or later, you can use SwiftUI, a new framework for iOS app development.
Since you can develop apps with less code than the traditional UIKit framework, I recommend adopting SwiftUI for apps targeting iOS 13 or later.
Also, iOS and SwiftUI are evolving every day. For example, LazyVGrid / LazyHGrid, which make it easy to implement grid designs, are new additions and only available on iOS 14 or later. It might be wise to investigate beforehand whether the core features of your app can be implemented with the version of SwiftUI available in those OS versions.
Summary
- Supporting the current latest OS version and the one major version preceding it is cost-effective.
- Even for apps targeting iOS 13/14 or later, you must still account for the iPhone SE (1st generation).
- If you adopt SwiftUI, you need at least iOS 13.
Discussion