Designing Apps For watchOS

The Apple Watch is one of Apple’s newest development platforms, and the realities of the hardware as well as the nature of how a user uses a watch make it very different from developing for iOS or macOS. Much like iOS, watchOS quickly moved away from the development model that was introduced at launch. The iPhone launched without the App Store or UIKit, and developers were essentially told to make web apps. It only took one year for that plan to go out the window, with Apple introducing the iOS SDK for native apps, which has had a huge impact on the success of the iPhone.

With watchOS 1, Apple’s application model really treated the watch as a remote terminal. Building apps for the Apple Watch really meant building an extension of your iPhone app which would run on the iPhone but display on the watch. The inevitable outcome of this strategy was obvious even before developers started making apps, as there’s simply too much latency introduced when controlling the UI on one device connected via Bluetooth to another device that is actually executing code.

Fortunately, this app model was thrown out even more quickly than the original iPhone’s model of using web applications. The first Apple Watch was released in April of 2015, and two months later at WWDC Apple announced that watchOS 2.0 would support native apps when it launched in September of that year. Of course, supporting native apps was not a silver bullet to fix the issues with applications being slow and performing poorly, which should have already been clear based on Apple’s own applications suffering those same issues at times. However, moving away from the pure extension model did help to improve performance, especially when combined with the new application caching in watchOS 3.0. Essentially, the changes in the application model since the initial release have moved much of the burden for performance improvements onto the hardware, and I’ve already mentioned how much faster the whole experience is on Apple’s new dual core SiPs with their improved GPUs.

Having experience with iOS and Android development, and having been exposed to WatchKit by making our watchOS display testing application, I thought I’d share some of my thoughts on watchOS as a platform for developers. I'm not going to talk much about the API itself, as it wouldn't really make sense for anyone who isn't an existing iOS developer, and anyone who is doesn't need me to give them a watered down half page summary of things they can read in the developer docs. The only thing I will say is that Apple's main competition is an OS where the developer API is in pure C, so from an implementation perspective even the original system for making watchOS apps was years ahead of the competition.

One of the main things I found interesting about developing for watchOS is how interfaces are designed. In hindsight, the original decision to used fixed layouts for iPhone applications was an incredibly shortsighted and poor choice. No doubt many users remember letterboxed applications on the iPhone 5 due to fixed 3:2 layouts being shown on a 16:9 display, and even now there are iPhone apps and iPad apps that have to be upscaled to work on larger modern devices even if the aspect ratio matches, because their interfaces were designed for a single resolution.

The Apple Watch puts Apple in an interesting position. On one hand, they don’t really need to worry about people’s wrists getting larger, and so the size of the display isn’t going to change significantly. On the other hand, there needs to be some room to change things if needed in the future, and the Apple Watch already comes in two sizes with two different resolutions, which means there’s more variety in the displays now than there was for the first three years of iOS devices. The solution Apple has settled on is somewhere between the fixed layouts of early iOS applications, and the pure constraint-based layouts of modern iOS applications that use Auto Layout.

When positioning the UI elements in an Apple Watch application, you essentially get to choose the horizontal and vertical alignment, along with some attributes related to the size. You can set a fixed size, but this is generally only a good idea for images and other bitmaps where there really is an intrinsic size. For other situations, it’s best to just let the system size a control to fit the content, or if setting it directly, by sizing it relative to the size of the container to avoid the pitfalls of hardcoded sizes should the resolution or size of the display change in the future. Apple also provides groups, which allow you to divide the screen into sections that other controls can be positioned within. This can be helpful when trying to align something in a way that the standard top/left/right/bottom/center options for positioning relative to the entire screen don’t accommodate for, while still making a layout that works independently of the display size and resolution. On the right side of the image above you can see a case where the screen is split into two containers and objects are aligned relative to that.

Another interesting thing about UI design on the Apple Watch is that layouts have implicit vertical scrolling. Vertical scrolling has always been needed on mobile devices due to the limited space available, but this has always been something that you have to actively implement, generally through the use of a UIScrollView or the more structured UITableView and UICollectionView classes. Most mobile applications make use of these, even apps like the iOS weather application where the customization of the cells is so heavy that you don’t even see the UI as being a table. However, if you do not make use of these, the interface will not automatically allow for scrolling if you position views off the edge of the display.

Because the amount of space on the Apple Watch is so limited, Apple essentially treats every screen like a scrolling view if needed. A standard TableView API is provided for cases where you actually want to structure things in table form, but for all other cases you can simply place as many elements stacked vertically as needed to construct the interface, and the system will make it scrollable if needed. Xcode’s Interface Builder also makes this fairly obvious by extending the size of the preview to indicate that they can’t fit within the standard area. In addition to vertical scrolling on a screen, the process of implementing paging so users can swipe horizontally between screens involves zero lines of code and can be done within a few seconds in Interface Builder.

Of course, not everything about the watchOS interaction model is perfect. As I mentioned earlier, Force Touch often ends up being a way to implement mystery menus that the user won’t discover naturally. As long as you follow Apple’s guidelines of using Force Touch to implement navigation between sections or contextual commands you’ll generally be okay once users discover how Force Touch works in your app, but that doesn’t solve the problem of users having to consciously Force Touch in every single new app just to figure out if it’s implemented, and what function it performs if it is. The very nature of using Force Touch to bring up these menus leads to this situation, as there are no visual cues that allow the user to discover the menu through other means. This may just be one of the limitations when adding functionality to a device with such a small amount of space on the screen, but I still feel that there has to be a better solution than this.

Despite my misgivings about Force Touch introducing menus with poor discoverability, the interface and interaction models for watchOS are generally well suited to the Apple Watch’s small screen. Apple essentially gives you scrolling and paging views for free, which removes a ton of overhead that would exist if developers had to implement full TableView classes with their data source and delegate objects, and separate page view controllers to manage groups of Interface Controllers. The layout system itself also gives developers sufficient control over the placement of objects on the screen, while also being flexible enough to scale to both sizes of the Apple Watch, and any future watchOS devices that may come in new sizes or resolutions.

watchOS 3.0: Health and Fitness Final Words
Comments Locked

126 Comments

View All Comments

  • ddriver - Tuesday, December 20, 2016 - link

    It has got to be the shortest lived fad so far.
  • name99 - Tuesday, December 20, 2016 - link

    And IMHO you have no idea what you are talking about. This is EXACTLY the same as the nonsense we heard when the iPhone came out: "why do I want a phone that can run a browser when my PC has a bigger screen? my feature phone already runs apps fine. and it's sooo expensive".

    If you haven't used an aWatch you don't have a right to comment on it, it's that simple.
    Brandon actually left out a huge number of use cases.
    - He left out Siri -- I frequently use this especially for reminders "when I get home, remind me to pick up the alcohol swabs", "add soy milk to list Costco", "how many grams is 3.5 ounces".

    - He left out notifications which again are really nice on the wrist.

    - I have five different watch faces: sleepytime which tracks my sleep and uses big red numbers so less sharp when I see it in the dark; everyday which is dense with info - time, date (tap to get today's calendar events), weather, activity rings (small) next alarm, time in one other time zone; workout --- big activity rings, heart rate, button to get to workout app, battery left; space and time which allows easy access to Maps, where my friends are (Find my Friends) , and HomeKit control; and Photos (random photos of adorable baby animals that make my smile every time I see them).
    I swipe between all of these every day.

    In the dock I have "Now Press Record" which records what it hears and stores it to the cloud --- ready in case I have an encounter with police or other bolshy authority. Next is the audio controller app. (Unfortunately the one BIG missing feature on aWatch today is decent handling of audiobooks as opposed to just music. Hopefully in WatchOS4 ...) Next the Nest Camera app. It doesn't do much (in particular it does NOT send you a snapshot of what the camera is seeing) but it DOES allow you very easily and quickly to validate that the camera is correctly armed when you expected it to be. Next Automatic (just gives direction to where you parked, but that's all you want on the wrist). Next Homekit which I, for now, primarily use to check out the temperature in my bedroom.

    Some other subtleties the article missed. In addition to replying to texts via voice, you can also write one letter at a time. This might sound dumb but is occasionally useful for a short reply that needs to be exact. (Like giving a price or a time.) And with WatchOS 3 and Series 2 the device FEELS delightful in a way that Series 0 did not because the performance just wasn't there.
    Oh and Apple Pay is really convenient (modulo the on-going stores too stupid or too cheap to support wireless payments).

    It's not all perfect. The one HUGE case that doesn't work well is if you want to go on an outdoor walk/run to somewhere you don't know, so you want both Maps and Workout to be active simultaneously. In this case both apps want to control the screen, there's no ideal way to flip between them and in one case their fighting landed up wedging my watch (that was with an older version of the OS so hopefully it's fixed now). There seems room for at least some special-case intelligence here to appreciate that this is a common situation and to handle it better.

    As for how well they are doing, like other commenters on the internet, I'm starting to see them more and more. For the first year I never saw one in the wild, now I see one at least once a week, on the wrists of people like cashiers or waiters.
  • negusp - Tuesday, December 20, 2016 - link

    But for $400? I made my argument against premium priced wearables.
  • fanofanand - Wednesday, December 21, 2016 - link

    "If you haven't used an aWatch you don't have a right to comment on it, it's that simple."

    Interesting logic. So nobody is allowed to have an opinion about anything they don't personally own or haven't experienced? I suggest you start out by telling all of the protesters who were never in a war that they don't have the right to an opinion. To all the folks protesting police for questionable behavior, if they haven't personally been shot then they have no right to an opinion. If you don't own a 2014 Ford Mustang, you have no right to have an opinion on it. To all the vegans who think meat is murder, if they've never had a steak they have no right to their opinion.

    Simple as that.
  • monopodman - Friday, December 23, 2016 - link

    A world would definitely be a better place with fewer opinions from people who have no idea. But yeah, that's just a dream.
  • MonkeyPaw - Tuesday, December 20, 2016 - link

    I bought a Series one for $190 on Black Friday. I like it quite a bit for that price, and I've tried other bands as well. I like that I can keep my phone on silent all day long, and I don't even have to dig it out of my pocket (or even have it on me) for many things. It's also compatible with my work's Outlook setup, so I have my calendar events right on the face. Having an extra motivator to be active is nice as well.

    I get that these aren't for everyone, and I think $400 is too much, but I like the Apple Watch for what I use it for.
  • amdwilliam1985 - Tuesday, December 20, 2016 - link

    my wife just got a XiaoMi fit 2 for $200HKD.
    It got like close to 1 month of battery life(wtf), tells time, heart time, sleep tracking, vibrate with phone call and notification.
  • Midwayman - Wednesday, December 21, 2016 - link

    I don't have an issue paying $400 for a watch. I have plenty of those. They even do far less. The real issue is the lifespan. I can expect decades out of a quality traditional watch. A smartwatch I'm probably lucky if it lasts 3 years between battery issues and plain getting outdated. Its just another fairly large recurring cost. You have to pick and choose which tech products are worth keeping up with I guess.
  • jaydee - Wednesday, December 21, 2016 - link

    It's all about Apple trying to convince you that your time an effort is such a valuable commodity, that you have to buy a $400 device to do 20% of what your $800 iPhone can do, just by looking at your wrist instead of the arduous and back-breaking task of pulling something out of your pocket.

    Hence Brandon's comment in the article:
    "Being able to check the time, the weather, the date, and other information simply by raising your wrist is just a convenience, and it's nothing your iPhone can't do as well, but it's a convenience that I wouldn't want to give up now that I have it."
  • KoolAidMan1 - Thursday, December 22, 2016 - link

    I see wearables everywhere now. The most common are Apple Watches and Fitbits.

Log in

Don't have an account? Sign up now