Supporting iOS 9/10 until the bitter end: How far would you go for old device users?
Tags: ios, swift, objectivec, mobile
Published: 2023-05-22 16:32:48

The companies I've worked for have always been trying to provide a good experience for app users, which involves adopting new technologies and continuously improving the app. To do that, you sometimes have to drop support for old OSes when it comes to new releases. The "cut-off" point varies per company, but if an OS drops to below 2-5% of your user base, it generally stops being a priority for new releases.

This makes quite a bit of sense. However, outside work I also develop apps as a hobby - it's my idea of fun. It's mainly apps  intended for amateur astronomers (as astronomy is my other hobby): [Xasteria](https://apps.apple.com/us/app/xasteria-astronomy-weather/id985030722)/[Xasteria Plus](https://apps.apple.com/us/app/xasteria-plus-astro-weather/id1053736323) is a weather app, while [Polar Scope Align](https://apps.apple.com/us/app/polar-scope-align/id970157965) started as a polar-alignment app for equatorial mounts, but it's got now several tools added to a [Pro version](https://apps.apple.com/us/app/polar-scope-align-pro/id970161373). In fact, it is so popular in its little niche, that I know quite a few Android users buy an old iPhone just to install this app.

You might already see where this is going - as it's a passion project for a hobby community, I tend to care more about individual users (I interact with many of them), so when they tell me they bought this second-hand iPhone just to run my app, I go out of my way to support them.

Although I try to do at least a couple of releases per year, after the Oct 31st 2021 release of _v6.2_, it did take me until the next summer to start work on _v6.3_. My statistics of the installations (new and updates) at that point for the last release (i.e. November 2021 to June 2022) looked like this:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2pdud6gv42way24uhn8.png)

At just under 1% for **iOS 9-11**, these versions would be on the chopping block for most commercial software. However, I could see that this was still hundreds of my users, a few of whom had even messaged me at some point thank me for adding new features or for supporting old devices, so I did not even think about dropping support.

This had some complications of course:

- **New iOS SDK features:** When using a nice new framework feature it had to be behind `if (@available(iOS xx.0, *))` and some effort was required to offer similar functionality for older iOS versions. In the end, old iOS users only ended up with some small visual differences.
- **No SwiftUI:** That might not have been as much of a problem for my apps specifically, as their UI is mostly made of custom elements and is generated programmatically already (yes, still in Objective-C). The fact that many of its screens cram lots of info on small displays in a clear way is part of its appeal. However, SwiftUI  would have made things easier for me at least for the simpler screens.
- **No iOS 9/10 target on XCode 14:** My Mac mini and MacBook Pro are both Apple Silicon, so I could only compile down to **iOS 11** on them. I did most of the development and beta testing on XCode 14  and I was considering getting an old Mac, but then I remembered I had set up my mom with a 2013 MacBook Pro (it has saved me from so many "mom support" calls compared to her Windows laptop!). So, I connected to my mom's Mac at the opposite corner of Europe (AnyDesk), and installed XCode 13.4 on it. This took an extra couple or so rounds of beta testing and debugging of course, but it worked out.

At some point during the development Apple announced they were dropping **iOS 9/10** support from the App store completely. No new uploads would be allowed starting April, so _v6.3_ was released at the start of March, to allow for an extra/final release targeting **iOS 9/10** by the end of the month. In all, I managed to release an **iOS 9** compatible update almost **8 years** after that OS's initial release. Let's look at the installs of that version:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ynbmirqekbaku3bpoq7q.png)

**iOS 9/10** is a tiny sliver of the pie chart and yet I'd like to think that those few dozen users it represents, will have appreciated having an update with several new features come up on their trusty old devices.

**So, do you ever try to support very old devices for your projects? What kind of hurdles do you come against in such an endeavour? Do you think it's ever worth it?**