Picking your minimum iOS version to support

When a new iOS version arrives, it’s oftentimes a moment to reflect on the supported iOS versions and see to which minimum iOS version your project should be set. It’s an important decision in a developer’s job and not something you can do without reasoning.

We can be fortunate with the iOS adoption rate in which most of our users update to the most recent version within a year. This might be different for your app based on the target audience for which a case per case decision is required.

It’s important to realise that dropping support for older devices does not mean they can not use your app anymore. You can decide as a team to deliver a latest update for a certain iOS version before you finally drop it. Let’s dive into details into what it takes to drop a version.

What is a minimum iOS version?

The minimum iOS version is the lowest iOS version supported by your app. Users running an older iOS version will not download newer updates of your app from the app store.

The minimum iOS version can be set in the build settings under iOS Deployment Target. The same counts for macOS, tvOS, and watchOS.

Which minimum iOS version should my app support?

Which minimum iOS version should I support? That’s the big question for which the answer is different case by case. Many companies rely on the “current minus one” rule, which comes down to supporting the latest and previous iOS version.

However, it’s not always that easy, and multiple reasons could make you decide differently. As the above poll shows, it’s not the same decision for everyone.

Reasons for (not) dropping an iOS version

Losing customers and revenue: Take a look at your data

Dropping an iOS version means losing customers, and losing customers could mean losing revenue. Therefore, the first reason why it would not be easy is based on losing customers and revenue.

This differs case by case and can be decided based on your analytics data. Make an overview of the number of active users per iOS version to know how much it’s worth supporting an older iOS version. If there’s a relatively high number of users using an old iOS version and you still want to try dropping that OS, you can decide to look a little closer and verify how much those users are worth. If they don’t bring in any profits, but it does cost a lot of time to maintain the old OS, you might still want to drop the old version.

Your customers might have a choice

It’s good to evaluate whether your users have a choice since iOS 15 is compatible with all of the same iPhones as iOS 13 and iOS 14, including older devices like the original iPhone SE and iPhone 6s. If your current minimum support OS is iOS 13, you could argue that it doesn’t really matter to drop iOS 13 as all your users can update to iOS 14 and get the latest app version.

New APIs are only available on newer iOS versions

Sometimes, you have a particular use case for your app, which requires your app to use a certain minimum iOS version to use a new API. An example could be ShazamKit, SharePlay, or Machine Learning features.

Time reasons

Each iOS version you support needs to be tested, which can take up a lot of time. It will take even longer if an older iOS version contains certain bugs or features which need to be fixed. Therefore, time could be a big reason to drop an iOS version.

The previous paragraph discussed the fact of dropping a version based on certain released APIs. Although you might be able to make it possible to create your app for an older iOS version, it could be that new APIs make you develop twice as fast because they’re simply making it easier to implement a certain feature. This could be another time-related reason to drop support.

Data, data, data

Although mentioned before, data is your best friend when dropping an iOS version. Please make sure you know the facts and you have an overview of what it means for your app to drop a certain iOS, macOS, tvOS, or watchOS version.

If you didn’t build in any analytics, you could always go to the App Analytics page in App Store Connect.

App Analytics allows showing the number of active users for a specific minimum iOS Version.

Within App Store Connect, there are multiple ways of looking at your data. One of the options you have is to look at the active users for the last 30 days per iOS version. In the above image, you can see 3.84K active users on iOS 13.7 over the last 30 days. You can combine this number with other iOS versions you consider dropping and calculate the percentage based on the total number of users. If this percentage is low enough, you might want to consider dropping the version.

Convincing your colleagues or managers

It might be clear that you want to drop an iOS version, but you’re often not alone. Make sure you have reasons to drop an iOS version and use them to convince both your colleagues and your managers. You should not only drop an iOS version because it makes your life as a developer easier. Think further, make reasoning, and convince your colleague that both you and the product should drop an iOS version.

If you can’t make that strong case, you should be honest with yourself and wait for another few months to come back to this decision and see whether something has changed.

How to drop an iOS version?

The easiest part would be to change the iOS deployment target to your new minimum iOS version:

Changing the minimum iOS version within Xcode using the deployment target build setting.

However, there’s more effort required to make this a smooth process.

Prepare and decide how your last supported version will be

You’re dropping support for older devices, but it does not mean they can not use your app anymore. If they already installed your app, it will still be available for them to use.

Therefore, it’s important to think about the features you want in this latest supported build. Sometimes you can decide to create a stable release of your last new features, so those users at least have the most up-to-date version possible.

Informing your backend engineers might be good too. Older app versions can make use of older APIs, which can eventually be phased out. You might have dropped iOS 10 a few years back, for which a specific API endpoint was still maintained, which might now no longer be needed.

Informing the users

If you’re a good citizen, you make sure the users of an unsupported iOS version get informed. Tell them they’re running an unsupported iOS version and that they’ll only be up to date if they update their iOS device. Although this might not always be possible for each user due to an old device, it will make sure those other users think about updating their software. This will make both you and the other developers happy as the adoption rate will grow.

Updating your codebase

Once you decided which minimum iOS version to support, it’s time to update your codebase. Xcode will automatically show new warnings once you build for the first time with the new deployment target:

  • Certain #if available checks which are no longer needed
  • Deprecated methods as of the new minimum deployment target

Take time to either fix those directly or plan and make sure that you fix them later.

Watch older WWDC sessions

You might be surprised by this one, but it’s actually one of the main reasons I started writing this blog post. Older WWDC sessions are still precious, and you can now directly start implementing code from those sessions as you raised your minimum iOS version!

It might be a bit hard to know which WWDC sessions are now relevant. To make it a bit easier, here’s a simple list:

  • Watch WWDC 2021 when dropping iOS 14
  • Watch WWDC 2020 when dropping iOS 13
  • Watch WWDC 2019 when dropping iOS 12
  • Watch WWDC 2018 when dropping iOS 11
  • Watch WWDC 2017 when dropping iOS 10

I do want to point out that you could obviously always directly start implementing code from those sessions once their related iOS version is released. However, you’ll not be the first developer to skip and wait till you actually only support that iOS version and up. It can be precious for those (like me) to revisit those older sessions and see which parts you can now implement.

Conclusion

Dropping an iOS version can be an easy decision if you’re developing an app on your own. When working on a team though, it can be very hard. Making a solid decision based on data and facts is required to convince your colleagues about dropping a version. Once you drop a certain version, inform your users and update your backlog with new APIs to implement.

If you like to improve your workflow even more, check out the workflow category page. Feel free to contact me or tweet me on Twitter if you have any additional tips or feedback.

Thanks!