WWDC 2019 Viewing Guide

Wow that was an interesting WWDC! After a “quiet” year in 2018, Apple has unleashed some dramatic changes in 2019. Here’s my viewing guide for the sessions I found most interesting this year.

Where Do I Start?

Watch the Platforms State of the Union. After that, I recommend prioritising the sessions on updating for iOS 13.

There’s a huge amount of new stuff to learn this year and it can seem like you’re getting left behind. Don’t let it overwhelm you.

You don’t have to learn everything new today!

It’s exciting but you probably don’t need to ship an App written 100% with SwiftUI or convert your iPad App for the Mac on day one. It’s great to learn new things but you’ve got time. Don’t burn yourself out trying to keep up.

Updating For iOS 13

What do you need to know to update your App for iOS 13? These sessions tell you where you need to spend your time over the summer:

  • Session 224 Modernizing Your UI for iOS 13 Start here to plan your updates. By April 2020 you’re required to use launch storyboards, be resizable on new devices (no more letterboxing) and support iPad split screen multi-tasking.

  • Session 808 What’s New in iOS Design Designing for dark mode, modal style card sheets and contextual menus.

  • Session 214 Implementing Dark Mode on iOS Updating your App for dark mode is pretty much required by iOS 13. Switch from hard-coded to semantic colors. Add light and dark variations to the asset catalog.

    The initial trait collection for a view controller is no longer nil but set based on the destination view hierarchy. If you rely on traitCollectionDidChange being called on initialization you will need to move setup code elsewhere.

  • Session 212 Introducing Multiple Windows on iPad This is a major change for iPad Apps. Your App can now have multiple window scenes. It’s likely you need to move code from your App delegate to a scene delegate. State restoration also changes to using NSUserActivity.

For more details on multiple window support see these three sessions:

SwiftUI

The biggest change since Apple introduced Swift? It requires iOS 13 so adoption will take a while but the future is SwiftUI. The SwiftUI sessions together with the two framework sessions on Combine are essential watching:

Catalyst

Almost lost in the excitement we also got the much anticipated Catalyst (formerly known as Marzipan). A framework for bringing your iPad Apps to the Mac:

Essential Framework Sessions

Lots of exciting improvements across the application and system frameworks. This first set of sessions is essential viewing:

The Combine framework is part of Foundation but you’ll want to understand it when working with SwiftUI:

Swift

I didn’t expect much Swift news at WWDC but Apple sneaked in Swift 5.1 and Xcode support for Swift packages and binary frameworks!

Developer Tools

Xcode 11 looks like another solid release:

Core Data

Some solid improvements to Core Data this year including the latest try at a sync solution:

  • Session 230 Making Apps with Core Data Fetched results controller can now return a diffable data source snapshot ready to use with the new table and collection view data sources. Use the new Combine framework to add UI bindings to your managed objects that update automatically. New derived attributes in your model to transform or aggregate items (for example a count of items).

  • Session 202 Using Core Data With CloudKit It looks easy to turn on CloudKit sync (if you’re using NSPersistentContainer). How well this works remains to be seen.

Other Framework Sessions To Explore

A mixed bag of other framework sessions I found interesting:

Accessibility

  • Session 201 Accessibility Lessons A reminder that accessibility is more than VoiceOver. Writing good labels, custom actions, not relying on color alone, reducing motion and autoplay and using dynamic type.

  • Session 238 Accessibility in SwiftUI You get a lot for free in SwiftUI but you’ll likely need to tweak some things (as with UIKit). API for setting labels, traits, actions, etc.

App Store and Distribution

  • Session 301 What’s New in App Store Connect The new, standalone, Transporter App handles App uploads. New analytics including App deletions.

  • Session 304 App Distribution Custom Apps replace the enterprise program. Distribute private Apps from the App Store (so subject to App Store review) with MDM or redemption codes to internal or external customers with an Apple business manager.

watchOS

Machine Learning and Augmented Reality

There are a lot of deep dive sessions but these gave me a good overview of what’s new in CoreML 3, ARKit 3 and the new RealityKit: