Operating System (OS) updates are a regular part of the computing world, but they often have implications on the software that rides on top of them. Apple unveiled iOS 10, its latest operating system for iPhones and iPads in mid-June this year, with the public release occurring on September 13th. Similarly, Google released their beta build of Android 7 called Nougat in mid-March, with a release to the public on August 22nd. These new mobile OS releases are much-anticipated around here, bringing fresh features that our developers look forward to using.
In addition to the excitement that comes with new tech, the new releases also bring some questions. Many of our clients rightly ask whether or not an update will impact the functionality of an app they built on a previous OS. The answer is generally “It might!” It’s always a wise idea to take a look at existing code to ensure it will function as well on a new OS as it did when it was first written. Our Android and iOS developers share a few of the challenges created by a new OS version.
Implications of an OS Update
There are a few different ways an OS update can affect current code. As an OS matures, each release will naturally include changes to the SDKs (Software Development Kits—the underlying frameworks that make an OS what it is) an app relies on to work. Those changes can cause app code to break. For example, when deprecated methods are justifiably removed from an SDK, but are still used in the app, some recoding is required. Or, if the semantics of existing methods change for the sake of long-term OS strategies, it may negatively affect a part of the app, again requiring recoding and recompiling.
OS changes can also bring about some new UI conventions that affect existing apps. While the code might still work, the visual appearance and usability of an old app may be negatively impacted. For example, the default size and presence of navigation bars can change with a new OS, making the app look awkward if not recoded. Similarly, for Android apps, many of the icons and design cards can feel stale if they are not updated with each new OS release.
Updates also impact developers (and thus apps) in areas like forward and backward compatibility, requiring code changes due to the interconnected nature of development tools. Forward compatibility refers to a design characteristic that allows a system to accept input intended for a later version, while backward compatibility is a property that allows for interoperability with an older version. When developing for both forward and backward compatibility, and using a number of tools, developers may be forced to upgrade an app, even when they don’t want to.
For example, our developers often work with Xcode, a suite of software development tools created by Apple. If they update Xcode in order to build apps with the latest technologies like iMessage Apps, they may be required to also update their Swift code for other apps, in order for those apps to compile in the updated XCode. One of our developers stated, “I felt betrayed by my tools” when he was required to make a change he did not desire to make.
Managing an OS Update
Fortunately, the time between the beta release and the public release of a new OS is long enough for developers to start using the new features before users are typically affected. Developers are generally given 3-5 months to install the beta version of the OS and begin tinkering on it before that release is publicly available. This provides an opportunity to understand where the new OS has potential to cause a current app to break.
All of our developers spoke about the need to do testing, testing and more testing to make sure the apps are functioning superbly on the new OS. One of our Android developers stated, “Ideally, I would build a test platform that pulls code from all of our projects and runs it on different virtual devices at different OS levels, taking screenshots and notifying us of any failed tests.” When time does not allow for that ideal scenario, we rely on regression tests to test all the code in the app. We are provided with release notes from Apple and Google detailing the changes in the new OS, so we can focus our tests on the areas with the most change. With a whole new OS though, the list of changes is so long that it makes more sense to run a complete regression test.
The Bright Side
Transitioning to the new OS and overcoming the challenges mentioned above takes some forethought. However, the changes can also provide opportunities for clients to upgrade the functionality of their apps, incorporating new features that weren’t previously possible. For example, now that Siri is open to developers, outside apps can activate from Siri’s voice commands. Such new functionality might just be the perfect addition for user engagement with an app that already exists.
If you want to talk more about possibilities for changes to your app, or concerns you have about how it functions now, please contact us. We’d be happy to take a look.