The Limitations of WatchKit

If you’re reading this, you’re probably interested in WatchKit, but I’ve got some bad news for you. WatchKit does a lot of things really well, from making it easy to design your UI for multiple watch sizes, to allowing you to place content from your app on your users clock screen, but it also does a lot bad.

The Good

We’ll start on a lighter note.

  • WatchKit is fun to develop for
      • Obviously this is a subjective opinion, as some people love to develop for an Arduino, and some (like myself) aren’t too fond of it. But I find that in WatchKit you can spend more time developing your idea and less time worrying about constraints.
  • Interactions are (usually) fast
      • I’m an outlier in this, as most WatchKit apps are designed for short interactions. Be it replying to notifications, shooting of a quick text or email, or quickly asking Siri for basketball scores. This means you can worry less about user retention and providing your user with a constant stream of interesting information, and more time on polishing your UI.
  • Less devices to worry about
      • What this means is that instead of worrying about having to scale your UI all the way down to an iPhone SE, and then all the way up to an XS Max, you can focus on the stuff that matters: your idea. UI design on iOS is a constant source of headaches for me, which is a lot of the reason why I choose to focus on the Apple Watch. Having only 4 screen sizes to worry about, not to mention having an incredibly simple constraint system, means I can spend more time fleshing out my idea instead of worrying about making sure it looks good on every device.

The Bad

Somethings in WatchKit make downright no sense.

  • Lack of memory warnings
      • watchOS limits how much RAM any given app can use, based on a number of factors (current RAM usage, how many other apps are open, etc). iOS does this too, but iOS is a lot smarter about it. While yes, WatchKit is designed for short interactions, the lack of a memory warning is a prohibition on apps intended to be used for long periods of time.Apps like Chirp or Nano use a WKInterfaceTable in order to display content fetched from Twitter and Reddit respectively. Depending on the device and the content of the posts, each app can hit the memory limit imposed by Apple. What happens when your app hit the limits? You get a warning and a recommendation to start freeing up ram? No, of course not, that would be reasonable. Your app is terminated. On iOS, a function gets called in your app func didReceiveMemoryWarning() which allows you to begin to free up resources, such a function does not exist on watchOS. Why? I don’t know.
  • Features locked to Apple
      • LTE Streaming
          • Using Apple Music on your cellular enabled Apple Watch is a breeze. You can stream 40 million songs to your wrist. But you can’t do that with any other app. Spotify? Nope. Third-party podcasting apps? Nope. Some developers have gone to extreme limits to circumvent these restrictions, to varying degrees of success, but they shouldn’t have to. Apple should allow this right out of the box, as they do with iOS.
      • WebKit
          • Why oh why does the WatchKit not have WebKit? The argument for the Apple Watch being for short interactions sort of went out the window when Apple introduced WebKit into their own first-party apps, Messages and Mail, back in July 2018.

            I was initially quite excited by this announcement, but my excitement was short-lived when I jumped into Xcode only to discover they hadn’t opened it to third-party developers such as myself. While Chirp and Nano both have some form of a web-browser in them, they are quite limited and would truly benefit from a standardised approach such as with WebKit.

There’s other stuff too, like being unable to assign swipe-gestures to WKInterfaceTable row controllers,

Which just doesn’t make sense.

How can it be fixed?

It’s unfortunate that WatchKit, as Marco Arment eloquently put it on his website (really recommend reading that by the way!), will only provide baby apps until Apple finally focus on true upgrades to it.

WatchKit is a sweet solution that will only ever give us baby apps – Marco Arment

While Arment is of the belief that

WatchKit needs to be discontinued and replaced.

I am of the belief that Apple can make WatchKit great, if they would only focus on what’s holding it back right now. Apples own apps are not built using WatchKit, they’re built in UIKit, the powerful UI framework for iOS. This is evident by a post by UranusHalo which showed UIKit leaking.

How can Apple build a great UI framework for developers if it’s not even good enough for their own apps?

Apple should write their own apps in WatchKit, which will force them to focus on the issues which developers already face.


Dmitry January 7, 2019

Thank you for good article ! I’m not a programmer for WatchOS but now I finally know why Chirp crashes every 2 minutes (haha). Nice app anyway ! Good job.

Will Bishop January 7, 2019

Haha, sorry about that! There’s a 99% chance that’s due to the memory problems I discussed.

Comments closed