The last mobile app my team wrote for a current client was an internal app with an audience of several hundred to maybe a couple thousand. That allowed the client to easily dictate what OS versions we were willing to support. It didn’t make sense to spend a few thousand dollars trying to fix an issue specific to an old version of Android when they could potentially buy those users new phones for a fraction of the cost (or even simply wait out those users in the hopes they’d buy a new phone themselves).
But the latest app we’re writing is heading to the two big app stores, and that presents a bigger challenge.
Recently Apple released a chart on their developer portal showing that 93% of iOS devices in use were running iOS 6 (the latest version of iOS at the time of this writing). That’s pretty straightforward, then: always code for the newest version of iOS, right? Maybe…
iOS 6 is coming up on a year old, and while iOS doesn’t have the same manufacturer fragmentation concerns Android does (more on that later), older iOS devices can get left in the dust. So if possible, it’s a good rule of thumb to support at least one major iOS revision back.
There are some caveats here and there, of course. Maybe one of your headlining features doesn’t work in the old version of iOS, or at least doesn’t work as well. You have to decide how crucial that feature is to the percentage of users still on that version. If it’s a major deal, it may be worth the investment to figure out how to make the app work on the older version, but for iOS, it’s more likely that you can wait until those users upgrade their devices.
Android is a bit more complicated. Everyone knows about Android fragmentation. Apple loves rubbing it in everyone’s faces. And regrettably, it’s at least partially true.
According to Google’s latest charts (as of July 2013), only 37.9% of Android users are on the latest major version (in this case, Jelly Bean, or Android 4.1+). The numbers get a little better, though, when you throw in Android 4.0+ (Ice Cream Sandwich): 61.2%. Better, yeah, but still not great. So where are the rest of Android users? Unfortunately 34.1% of Android users are still running Gingerbread (Android 2.3.x), a two and a half year old OS. That may not seem like such an old OS compared to a desktop OS like Windows, but for mobile devices, that’s a lifetime – almost literally a phone’s lifetime (In the US, phone contracts are typically two year cycles, meaning most people get new phones every two years).
Why are there so many users running such an old version of Android? There are a number of theories. One is that because manufacturers like to put their own ‘skin’ on top of Android, it makes updating the devices more difficult when a new version of the OS is released. Another view that is probably more cynical, but is also probably closer to the heart of the matter, is that Android device manufacturers are constantly competing with the iPhone, therefore are always trying to release the next latest and greatest device. When those manufacturers turn their attention to a new device, older ones tend to get left behind. Why should Samsung spend significant dollars supporting a two-year-old phone no one is buying anymore when they have the shiny new Galaxy S4 to tout and market?
So what’s a developer and/or product owner to do about Android?
Fortunately, it appears that this issue isn’t going to be as prevalent with Android moving forward. Android 4.0 was a major milestone that unified the fledgling OS and made vast improvements to the SDK. In a couple of years, supporting ICS is going to be much easier than supporting Gingerbread today.
Additionally, Google has started releasing “Google Edition” versions of the most popular Android devices, which will allow them to get updates significantly faster. This is on top of the Nexus program, which allows devices with that tag to be the first to get new Android OS updates.
So then, at this point it’s likely time to cut ties with Gingerbread unless you absolutely have to support it because your target audience is saturated with it and is unable or unwilling to upgrade.
As of now, you can probably use the same rule of them for Android that you would for iOS: support the previous major revision.
Yes, you could be losing a sizable portion of potential app users, but in the case of Android, it’s a waiting game. Users will eventually get new phones that run new software. Until then, how much time, effort, and money are you willing to spend on an old OS whose share is dwindling daily?