System
Last year’s watchOS 2 release brought with it several massive system-wide changes for the Apple Watch. Third-party apps were allowed to run natively on the Watch for the first time. The brand new WatchConnectivity framework was introduced to facilitate background information transfers and real-time messaging between the Watch and its connected iPhone. NSURLSession allowed the Apple Watch to connect directly to Wi-Fi rather than relying solely on the iPhone for data. Native hardware such as the Digital Crown and Taptic Engine were opened up to third-parties as well, albeit only for extremely limited and specific use cases.
In the conclusion to my watchOS 2 review last year, I wrote:
Apple’s work with watchOS 2 has laid the foundation for the future of watchOS. While the update is not a full solution to nearly any of these problems, it creates a solid base for almost all of them. A base which, in classic Apple style, can then be iterated on for years to come.
With another year in the books, and the first major iteration on that operating system released to the public, it’s fair to say that my conclusion is holding strong. Apple’s system efforts with watchOS 2 are paying off. WatchConnectivity and NSURLSession have proven to be strong foundations indeed, with neither requiring major changes in watchOS 3, and both being utilized throughout the new additions to the system.
For the most part, these new additions fall into several main categories: background tasks, native events, and new system frameworks.
Background Tasks
Background tasks were an extremely limited resource in watchOS 2, and while that’s still true to an extent in watchOS 3, the limitations have been reduced significantly in several key areas. I mentioned background tasks briefly early on in regard to the enhanced privileges of apps in the Dock and apps with active Complications, but there are some other new types of background tasks as well.
Docked apps are given access to a specific type of background refresh, called Background Snapshot Refresh. This type of background activity is designed specifically to allow docked apps to update their user interfaces before a snapshot is taken for use in the Dock. As you scroll through the Dock, all the apps that you scroll by are not actively running – they are just snapshots of the most recently refreshed state of the app. Dock apps are allowed to update these snapshots at a significantly faster rate than apps that do not reside in the Dock are allowed to refresh their information, so most of the time the snapshots in the Dock should not be particularly stale.
Once you stop scrolling through the Dock and land on a particular snapshot, watchOS automatically starts that app up, so that it will be actually running in the shrunken back view. If you then tap on the app, it will zoom to fill the whole screen and be immediately responsive, because it was running before you tapped on it as well.
Once docked apps are running, watchOS will try to keep them in memory when they are exited for as long as it can. This is a similar strategy to iOS, except that the Apple Watch has significantly fewer resources. If you reopen an app from the Dock which never left memory, it will appear to be 100% responsive. If you try to open an app, even from the Dock, which has been purged from memory, you’ll likely experience a few seconds of latency as the Watch boots that app back up from scratch. In general, the Watch does its best to maintain as many resources for Docked apps as it can, so usually booting from scratch still takes significantly shorter time than it did in watchOS 2.
Still, developers are going to have to update their Apple Watch apps for watchOS 3 in order to completely make use of the Dock capabilities. While the Watch seems to do a pretty good job of keeping even watchOS 2 apps which are docked in a state where they load fairly quickly, I have experienced docked third-party apps taking nearly as long to load as watchOS 2 apps after not opening them for quite some time.
Apple first-party apps can take a couple of seconds if I catch them flat-footed too, but in general I haven’t seen any Apple apps take nearly as long as they used to in watchOS 2.
Complications in watchOS 3 are more or less the same deal as apps in the Dock. Rather than using Background Snapshot Refresh, Complications use Background App Refresh. This fulfills essentially the same purpose, except that the system does not take a snapshot of the app’s interface after refreshing. Apps whose Complications are active on the user’s watch face are guaranteed to get 50 push updates each day, so developers who take advantage of these changes should be able to keep their Complications as up to date as most use cases would need them to be.
Apps with active Complications and docked apps can both make use of Background Watch Connectivity and Background URL Session tasks, which allow them to receive updated information from a paired iPhone and from the web, respectively.
Workout apps are the final class of apps which receive access to background tasks, and these get the unprecedented ability to actively run in the background while a workout that they are being used for is ongoing. For the duration of the workout, the app which is controlling it will be active and capable of receiving live HealthKit data from the Watch’s various sensors. Workout apps can even be launched programmatically to run in the background if the workout is started from their iPhone companion app.
Native Events
The next portion of new watchOS enhancements for third-party apps is access to native events from various Watch hardware. Native event handling means the app can get live updates from a hardware sensor or input method on the Apple Watch while the event is occurring. This capability is commonplace on iOS and macOS, but has until now been extremely limited in scope for watchOS apps.
Native Digital Crown Access
With watchOS 3, third-party apps are now given access to the native event stream directly out of the Digital Crown. This means that third-party apps are free to implement the Digital Crown in whatever way they want, including as a gameplay mechanic or other creative and interesting application. In watchOS 2 apps were able to access the Digital Crown, but only as some type of “picker” element. In other words, the Crown could be used to pick an item from a list, but not to move a character around arbitrarily in a game. Kind of.
That “kind of” comes from the fact that one of the picker interfaces was a custom image collection that the Digital Crown could scroll through. This could be used to produce a similar effect to the watchOS Timer app’s custom timer interface, where extra ticks on the clock show up as the Crown moves. While this did make games and other creative applications of the Crown possible, they could be much more intensive to create because the entire interface needed to be made up of pictures that the Crown would scroll through to simulate free movement. With watchOS 3, developers are no longer limited in this manner. They can get access to the raw stream of data directly from the Crown, and do with it what they please.
Native Touch/Gesture Access
Believe it or not, before watchOS 3, third-party developers didn’t even have full access to users touching the screen. Rather, Apple handled touches and swipes itself and simply called standard operations for the third-party apps to follow. For the majority apps, which are mostly just going to be tapping buttons and swiping through pages anyway, this isn’t really a big issue. But for games or other more innovative app ideas, the ability to get access to the native touch or swipe events from a user and do whatever the developer chooses with it could allow for some much more interesting app offerings on the Apple Watch. We’ll have to wait and see what developers cook up.
Real-Time Heart Rate and Motion Data
watchOS 3 enables real-time access by third-party apps to heart rate and motion data coming from the Apple Watch’s variety of different sensors. For fitness and health apps, this means they’ll be able to provide live interfaces during activity showing exactly what is going on, rather than having to wait until the system provides them with this data later on. Workout apps running in the background will be able to monitor conditions live as well, which is the kind of change that makes apps like the upcoming Pokémon Go for Apple Watch possible. If that app was unable to run in the background, or unable to get real-time access to your position and movement data, it would be rendered more or less useless.
System Frameworks
Finally, watchOS 3 is adding support for a variety of new system frameworks. Many of these are familiar, such as SceneKit and SpriteKit, because they already exist on Apple’s other platforms. Seeing many of the most important system frameworks from iOS and macOS make their way onto the Watch is fascinating. We’re seeing an operating system transition from its absolute infancy into its childhood7. watchOS is beginning to show a small semblance of its more mature older siblings, and I’m sure these new frameworks will be built out even stronger in future versions, as well as being joined by many, many more.
SceneKit and SpriteKit
SceneKit and SpriteKit are familiar terms from OS X (now macOS, but OS X when SceneKit was introduced) and iOS development, and now they’ve come to the Apple Watch. SceneKit is a framework for rendering and animating 3D models in a watchOS app. SpriteKit is similar, but for 2D sprite animations. Both frameworks can be utilized anywhere within watchOS app interfaces, but they can also be used to render 3D or 2D content for notifications.
With SceneKit or SpriteKit, developers will have the option of adding animations onto their notifications in watchOS 3. If it makes sense for a developer’s app, it looks like a great way to make a notification a bit more fun and eye-catching, and could even convey information in and of itself (like having different animations for different types of notifications from the same app).
CloudKit
The CloudKit framework allows watchOS apps to place and access content into and from iCloud containers. In other words, its a way for watchOS apps to directly save and load data from iCloud without having to go through their iPhone counterparts.
AVFoundation and Core Audio
The AVFoundation framework will let third-party developers manage and play audio through their Apple Watch apps, and the Core Audio framework provides the audio streams and other important minutia needed for audio file handling.
GameKit
The GameKit framework helps developers create social games by integrating their games into Game Center. This will give Apple Watch apps access to Game Center themselves, making standalone Apple Watch games that connect to Game Center possible without necessitating an iPhone version of the game as well.
HomeKit
The HomeKit framework goes along with the new Home app, and enables support for displaying live streams from camera or doorbell accessories inline within apps, as well as communicating with other HomeKit devices.
Inline Video and Apple Pay
Speaking of inline video, third-party watchOS 3 apps aren’t limited to HomeKit device streams for this, but have the ability to present any videos inline within their apps.
Another new inline ability is the introduction of Apple Pay to watchOS apps. In previous versions users could use their Apple Watch to pay with Apple Pay at physical terminals. In watchOS 3, developers can use the PassKit framework to set up in-app payments via the Apple Pay mechanic on the Watch.
Taken altogether, the system enhancements in watchOS 3 enable a huge variety of new capabilities for watchOS 3 apps. With the strict limitations on Apple Watch apps being rapidly reduced, and the general performance enhancements of watchOS 3, the platform is looking like it could be a lot more tempting for developers to get into. We’ll see in the coming year whether the third iteration of Apple’s smartwatch operating system can start to regain the interest of developers.
Conclusion
watchOS 3 brings new advances to Apple’s smartwatch operating system in nearly all of the areas where its predecessors were lacking. The Cupertino company has redesigned core interfaces across the OS, and rethought their approach to distributing limited system resources. The results of their efforts are impressive, and the benefits are axiomatic throughout everyday use.
In retrospect, the idea of the underpowered Apple Watch hardware fueling every app on the system seems quixotic at best, and benighted at worst. This ardent objective was one of the main downfalls of watchOS 2, but its revision is a keystone of watchOS 3. By surrendering the pursuit of an unreachable ideal, the system has been freed to focus on obtainable goals.
The outcome of this course correction is an Apple Watch unafraid of its limitations. With clever new interfaces, watchOS 3 even recasts them as advantages. Rather than Apple trying to regulate resources for every app on the system, this task is now yielded to the user through the Dock and Complications. The result is a Dock of ten favorite apps which actually function, and Complications with up-to-date information whose apps can be opened on the fly. This picture is the same one that Apple wanted for watchOS 2, but by reducing its scope to a reasonable level, watchOS 3 achieves it on a smaller scale.
While the power distributions and interface designs of watchOS 2 aged poorly, not everything from the update was a failure. In particular, Apple’s work last year on the NSURLSession and WatchConnectivity frameworks laid the foundation for nearly all of the new system enhancements in watchOS 3.
I think the best way to look at watchOS today is to fully separate the interface and the system elements. Building a smartwatch operating system is a huge challenge on both of these levels, and Apple’s first shot at the interface didn’t go in. These design missteps, however, are of little consequence to most of the system-level decisions.
In watchOS 1, Apple built a system framework that was incomplete by design. Rather than rush out the foundation they were building, they held back until it was properly finished, and released it with watchOS 2. While that decision caught them a lot of flack from the press and developers alike, time has borne it out as prescient. Power distribution needed some adjustment, but beyond that, almost everything at the system level of watchOS 2 has been kept around to make up the building blocks of watchOS 3.
In watchOS 3, the interface side of the update establishes a new foundation in the same way that the system side did in watchOS 2. While it may have taken a year of the Watch being in consumers’ hands for Apple to figure it out, their second attempt truly looks like a solid base to build upon. The Dock and Complications are an opportunity to get a small-scale system running as smoothly as the entirety of the OS surely will in several years. From here Apple can work to expand slowly toward that vision, as well as adding new features year-over-year rather than wasting time rebuilding the old.
There’s still a lot more to do for interfaces in watchOS. The Home screen layout could use a revisal, Control Center needs the Now Playing screen, and I’d love to see a feature like Time Travel reimagined in a new form that might actually be useful. As a whole, though, I no longer think of watchOS with disdain. Apps feel useable, the side button is no longer wasted, and Complications are really kept up to date.
watchOS 3 is a huge step forward for the Apple Watch. After two years of turmoil and a potent feeling that the platform was lost, it has suddenly snapped into focus. With a new direction plotted and its misguided hubris in check, the future of the Apple Watch is looking brighter than ever before.
- I suppose this is likely a similar transition that Apple watchers witnessed for iOS throughout the last decade, but 9 years ago was a bit before my time of paying rapt attention to Apple’s movements, so I missed out on the youngest few years of iOS. ↩︎