Problems with Supporting iOS 10 and Older Versions [Our Dedicated iOS Developer’s Opinion]

At the beginning of a software product development every iOS developer faces a dilemma which platform we are going to implement it on. Everything should be simple and obvious, as we just choose which operating systems we would need during our work. As a rule, after choosing a system, seems the problem is gone. However, the next question arises “Which version of the operating system should we begin with to support the application?” and the first answer which comes into my mind is “with the minimal one”. Now I will describe the choice of the minimal version of OS for the iOS development in more details.

At the moment of writing this article, the latest version of the operating system is iOS 12. Apple recommends us to support the two latest versions of the system, which are iOS 11 and iOS 12. But can iOS 8, 9, 10 support be superfluous? Now let’s have a closer look.

Firstly, we would need to see which devices have the ability to install iOS 10 and 11. For these purposes let’s visit the official Apple website. Here we can see the info with all the devices which support iOS 12. You can also see that iOS 11 can be installed on the same devices.

devices which support iOS 12

Based on this data, I have the first argument in support of the Apple recommendation.

Do you really need a targeted audience, where people have not updated their devices for the last 5 years?

Do You Have iOS 9? In Which Museum Have You Found Your iPhone?

iPhone 5s was released on September 20, 2013. Due to the fact that now is September 2018, your phone is more than 5 years old at the moment. Still, it can be updated to the latest iOS version. The same situation with the iPad mini 2 which was released on November 12, 2013. The latest device is the iPod Touch (6th generation) which was released on July 15th, 2015. By all means, it is 3 years old, but after this iPod series the devices were not released at all, so we can assume that Apple stops producing this product, however, it still supports its last iOS.

Based on this data, I have only 2 thoughts on why people might not want to install iOS 12. The first one is people do not have the opportunity to install it due to the fact that their model is younger than the minimum possible one, meaning it is over 5 years old.

Do you really want the application to be available for people who do not have the opportunity to update their device during the last 5 years when technologies are jumping like crazy?

The second thought is that people do not want to update their phone or system for other reasons, for example, because they do not like changes, but it’s more difficult to offer a new product to such a group of people and it’s doubtful that they will be the first to use your product. And in a year or two when the current one is not already popular, another couple of operating system versions will be released.

Time Travel or People Who Are Still in 2013

The second argument in favor of supporting only the last two operating systems will be statistics on the use of operating systems below iOS 11, according to Nodes Agency.

the usage of different vesrions of iOS

As we see, at the moment the number of people who use the operating system version below iOS 11 is 2.84% of all iOS users in general, based on the fact that the presentation of iOS 12 was on September 17th. If we peek into the past, we see that on September 21 the number of versions less than iOS 11 users was 3.09%, that is, this figure also slightly drops.

Coders Problems Programming for <11 iOS Versions

If you are still not satisfied with the reasons for abandoning the support for iOS 10 and older versions, see what problems arise when developing software for these versions. And this is not all the problems, these are just a few of them, in order to demonstrate that there are more and more issues depending on the number of supported versions, which slow the iOS development down significantly.

1) Get Keyboard rectangle

   @objc private func keyboardWasShown(_ aNotification: Notification) {

       let info = aNotification.userInfo!

       if #available(iOS 11, *) {

           guard let rect = info[UIKeyboardFrameEndUserInfoKey] as? CGRect else {



       } else {

           guard let rect = info[UIKeyboardFrameBeginUserInfoKey] as? CGRect else {




2) Rate app in AppStore

       if #available(iOS 10.3, *) {


       } else {

           let alert = UIAlertController(title: NSLocalizedString("UserRateApp", comment:"UserRateApp"), message: nil, preferredStyle: .alert)

           alert.addAction(UIAlertAction(title: NSLocalizedString("General:Yes", comment:"Yes"), style: .default, handler: { (action) in

               UIApplication.shared.openURL(NSURL(string: Constants.rateInAppStoreURLString)! as URL)


           alert.addAction(UIAlertAction(title: NSLocalizedString("General:No", comment:"No"), style: .cancel, handler: { (action ) in


           present(alert, animated: true, completion: nil)


3) Constraints and problem in animation on view with NavigationController

       if #available(iOS 11.0, *) {

           _userLookupTopConstraint = 0

       } else {

           let statusBarSize = UIApplication.shared.statusBarFrame.size

           _userLookupTopConstraint = self.navigationController!.navigationBar.frame.height + statusBarSize.height


4) Pull to refresh different method to adding

           if #available(iOS 10.0, *) {

               _tableView.refreshControl = refreshControl

           } else {



These problems appear constantly and the more versions we support, the more similar challenges arise. The biggest complication is they are only revealed during testing when the application behaves in an inappropriate way, for example, on iOS 10.

Although, this is not the biggest issue in terms of time wasting. Let’s look at the amount of time a QA needs to test one feature depending on the number of supported versions. Let’s pretend that the testing of one feature on the OS version and one device take N time. For full and maximum quality testing you need to check this feature on all possible operating systems and on all possible devices. Let’s simplify the task a bit, so we will only have the support for the iPhone and check only the latest part of the major iOS version, for example, 11.4.1. And also we will not check all devices, but only will divide them by the size of the screens.

hire iOS developer at Mobilunity

iOS 12 -(iPhone SE, iPhone 7, iPhone 7 Plus, iPhone XS, iPhone XS Max,  iPhone XR) 6N
iOS 11 – (iPhone SE, iPhone 7, iPhone 7 Plus, iPhone X) 4N
iOS 10 – (iPhone 5c, iPhone SE, iPhone 7, iPhone 7 Plus)  4N
iOS 9 – (iPhone4s, iPhone 5, iPhone SE, iPhone 6, iPhone 6 Plus) 5N
iOS 8 – (iPhone4s, iPhone 5, iPhone SE, iPhone 6, iPhone 6 Plus) 5N

So, supporting iOS 11 and 12, the time spent on one feature will be 10N.

For iOS 10,11,12 – 14N

For iOS 9,10,11,12 – 18N

For iOS 8,9,10,11,12 – 23N

Imagine this is a simple feature and it takes 30 minutes to test it (about 5 minutes to install the build, and at least 10 minutes to mark all the results of the passage of the check sheet).

With the support of only the last two versions, it will take 5 hours

With the support of third – 7 hours

With the support of fourth – 9 hours (which is more than a working day)

With the support of fifth – 11 hours 30 minutes.

If there is a bug on one of the versions, then the developer fix it in 2 hours on average, and then you need to go through all the stages of this feature testing again. As the testing duration increases, the cost also becomes higher, but if there is not enough time for testing, some of the devices on which it needs to be tested are often missed and the testing is not complete.

You decide if it is worth it to pay 2 times more for testing because of these 3% of users.

3% That Do Not Allow to Implement a Business Solution

Even if you are willing to spend time and money on the testing for these 3% of users, consider how much they limit the options for using business features. If you do not support only the last 2 versions of the operating system, you will have many different tools that you can use and those which will not work with the support of younger versions.

For example:

  1. WKWebView вместо UIWebView, про их сравнение и преимущества можете почитать отдельно.
  2. ARKit
  3. MusicKit
  4. SiriKit
  5. Core NFC

Make a right choice!

Here we are to help you with building your perfect dedicated team of iOS developers!

Request a quote

We will contact you as soon as posible.

Attach File (max file size 5MB; allowed extensions: doc, txt, pdf, docx)

Your email address will not be published. Required fields are marked *

Contact us Request a Quote

Your email address will not be published.

Required fields are marked *

Attach File

(max file size 5MB; allowed extensions: doc, txt, pdf, docx)

subscribe to newsletter

Your email address will not be published.

Required fields are marked *

Ask a Question

Your email address will not be published.

Required fields are marked *

Sorry, this page isn't quite ready yet

redirecting to the old site



cannot account for customer alterations, as the site may reflect changes made after the project was completed.

Mobilunity - Dedicated Developers