How Apple Watch apps’ death spiral nearly killed my iPhone app

By

Developing watch apps ain't easy
Developing watch apps ain't easy
Photo: Graham Bower/Cult of Mac

Two years ago, my partner and I launched an Apple Watch app to complement our iPhone fitness app. Little did we know that our embrace of Apple’s smartwatch would threaten the very existence of the gym app we’d been developing since 2012.

Each year since we launched Reps & Sets, we updated it to keep up-to-speed with all the cool new features Apple rolled out at its Worldwide Developers Conference. That all changed last year, though. That’s when we discovered that, by adding support for Apple Watch, we had inadvertently taken a poison pill that could effectively kill our iPhone app.

It doesn’t have to be this way. With a few key changes, Apple could turns things around and reinvigorate the Apple Watch app ecosystem.

Why most developers are scrapping their Watch apps

When we started developing Reps & Sets, we hoped it would earn us millions. That never happened. In reality, all the revenue it ever generated we spent on developers.

But we stuck at it, because as a hobby project it’s kinda fun. Plus, along the way I’ve learned a lot, from nice things like UX design to ghastly stuff like provisioning profiles.

However, after getting the Apple Watch app up and running, Apple made changes that left us in a horrible position. All development on our iPhone app immediately ground to a halt as we scrambled to deal with the new reality.

I knew we were not alone in having trouble with our Apple Watch app. Much bigger and better developers than us had already thrown in the towel. Instapaper is only the latest. Twitter, Instagram, Google Maps, Amazon, eBay, Lyft, Slack and TripAdvisor are just some of the big names that have abandoned the platform.

But I also knew that our problems were somewhat different from those companies’.

In most of these cases, the trouble is that they developed their Apple Watch apps for watchOS 1. Back then, Watch apps were “non-native.” While the user interface ran on your watch, all the rest of the app functionality got offloaded onto your iPhone.

This approach resulted in a rather clunky user experience. So Apple added support for native apps in watchOS 2 in 2015. This year, Apple is withdrawing support for non-native apps in watchOS 5.

That means developers who quickly embraced the platform are now being punished for their support. They must either completely redevelop their watch apps, or scrap them altogether. It seems most of these early adopters have opted for the latter.

Our Apple Watch problem was different — and far worse

Luckily for us, we’d been late to jump on the Apple Watch bandwagon, so our watch app was already native. But watchOS 4 still gave us a headache. One so big, in fact, that it didn’t just threaten the future of our watch app. It brought development of our iPhone app to a crashing halt as well.

Without getting into the boring technical details — which, to be honest, I barely understand myself — Apple made some changes to the way it handles notifications. As a result, when the app was compiled with Xcode 9 (Apple’s platform for developers), notifications were not delivered to the watch when our app was running.

Apple’s techies no doubt had some very good reasons for changing the notification system, so you could say it was our fault for still relying on an out of date framework. But Cupertino could have done a lot more to help us. The changes in Xcode 9 made the old notification system behave in surprising and undocumented ways. It took plenty of trial and error to work out what was going on.

Fixing this problem involved some serious changes to our code. And not just for the Apple Watch app, but for the iPhone app as well. And until we completed that work on notifications, we could not publish any other updates to the App Store.

This was incredibly frustrating. We were all ready to go with an update that added support for the iPhone X last fall. But we couldn’t publish it, because if we did, it would break our Apple Watch app.

Fitness is one of the few categories where third-party Watch apps are genuinely useful
Fitness is one of the few categories where third-party Watch apps are genuinely useful.
Photo: Graham Bower/Cult of Mac

Why we couldn’t scrap our Apple Watch app

It was tempting to just scrap the Watch app altogether and move on, as so many other developers have done. But in our case, it was not so simple.

Many Apple Watch apps are duds. People just don’t use them. Take Google Maps, for example. When Google quietly scrapped the Watch app, it took weeks for anyone to even notice.

But that’s not the case with our app. Fitness is one of the few categories where third-party Watch apps prove genuinely useful, thanks to the glanceable UI, heart rate monitoring and Activity integration. As a result, our Apple Watch app quickly became indispensable for most of our users. Scrapping it was out of the question.

We were stuck.

Finding a good Swift developer is not easy

My partner did the original development work on Reps & Sets, but he was too busy with his day job to work on it. Apple Watch apps must be developed in Swift (Apple’s native programming language), so we had to find another good Swift developer, fast. But that proved practically impossible.

Why?

One of the issue is that these days, many iPhone apps are not actually developed in Swift. Big companies like Facebook, Instagram and Uber rely on cross-platform frameworks such as React Native instead. It’s never been easy to find good Swift developers, but these days it’s even harder, because a lot of them specialize in these cross-platform frameworks rather than Swift itself.

Another problem was that our app is relatively old, and we’ve added a lot to it over the years. As a result, it contains plenty of legacy code and idiosyncrasies. Working on a project like that involves a lot of what developers call “domain knowledge.” It’s just not realistic to expect a new developer to hit the ground running without a long and very involved induction.

We found a way forward — for now, at least

Fortunately, after months of hunting and practically giving up, a freelancer who worked with us on the app for many years agreed to take a look at it in his spare time.

The end result is that, 12 months later than we planned, we finally updated our app to support watchOS 4 and iPhone X. (Ironically, just in time for watchOS 5 and iPhone XS, which are barreling down the Apple product pipeline).

For the time being, the future of our app looks secure. But developing for Apple Watch means that you never really know what new curveball Cupertino is about to throw at you.

If big companies like Google and Facebook have given up, it’s no wonder that tiny indie devs like us are struggling.

Apple Watch apps are in a death spiral

To all this, you might just say, “Meh, whatever, who uses Apple Watch apps these days anyway?” Increasingly, people are happy to just use their smartwatches for notifications, fitness and Apple Pay. Most apparently don’t see much need for third-party apps.

But I disagree. The demise of Apple Watch apps has become a self-fulfilling prophecy. More importantly, things don’t have to play out this way.

What I see happening with Watch apps right now is what business guru Seth Godin once described as a “death spiral.”

Developers find it hard to maintain their Apple Watch apps, so they stop developing them. Users see a limited choice of clunky, dated Watch apps and don’t bother to download them. Apple sees declining interest in third-party Watch apps, so it doesn’t bother to improve the tools for building them. And so the cycle continues.

You can’t shrink your way to greatness. Allowing the Watch App Store to wither and die while focusing on a few core features might make sense in the short term. But in my opinion, this approach undermines the future potential of the platform.

Why third-party Apple Watch apps still matter

I think the only reason Apple Watch apps currently suck is because right now it sucks to be a Watch app developer.

Apple could do plenty of things to encourage developers to support watchOS going forward. The most important step, in my opinion, is to improve the Apple Watch developer tools. Then, Apple should stop making big changes to the frameworks every year. Only then will developers return to the platform.

I realize that apps will never be as important to Apple Watch as they are to iPhone. But if Cupertino gave us developers a little more love, I think Apple Watch apps could become a rich and varied ecosystem in their own right.

If Apple tweaks its approach, an invigorated lineup of third-party Watch apps will inject new value and innovation into the watchOS platform. And developing Apple Watch apps won’t feel like a life or death gamble for indie devs.