Apple’s latest efforts to increase simplicity and possibility for both new and veteran developers
This June I was fortunate enough to attend WWDC 2019. It was all very exciting, and Apple announced a multitude of intriguing new products, features, and dev tools. As an iOS developer, some of these announcements will have a profound effect on my day-to-day work and on the things I must consider during development—but some are also just cool and fun! A not so hidden trend I recognized was Apple’s efforts to lower barriers of entry for people new to Apple development (or mobile development as a whole), which is likely as much a clever business play as it is a benevolent gesture.
The following is my list of the most important things developers (and people generally involved in making iOS apps) should be aware of in the wake of WWDC 2019.
New tools designed to make iOS development more intuitive, efficient, and powerful
SwiftUI is a completely new API for creating user interfaces on Apple platforms. It is terse and declarative, automatically managing much of the minutiae that developers usually have to reason with. While impressive, the first iteration of SwiftUI simply cannot match the granular hooks and control provided by UIKit and its many delegates. Still, speaking with an Apple engineer at one of the SwiftUI labs gave me the impression that matching the capabilities of UIKit may indeed be the ultimate goal for SwiftUI.
Brass Tacks: In the medium-near future, SwiftUI will make a lot of iOS UI development much simpler, and utilizes a style of reasoning that will be much more accessible to web developers who are familiar with frameworks like React.
SwiftUI lab at WWDC 2019
Recommended Viewing: Combine in Practice
Combine is a new API for managing the flow of information through an app. It attempts to both leverage and unify the use of Notifications, Callbacks, Closures, and Key-Value Observation. It utilizes a declarative syntax (noticing a theme yet?) to provide some incredibly robust, out-of-the-box functionality, and I can’t wait to play with it.
Brass Tacks: Combine is going to help formalize the flow of data through different parts of an application, making that flow more predictable and therefore reliable.
Recommended Viewing: Advances in Collection View Layout
Compositional Layout is a new alternative to the classic Collection View workhorse, the Flow Layout. Compositional Layouts will allow developers to create highly complex and precise layouts, requiring significantly less code and reasoning than in the past implementations. Now only a single bit stands between you and section-specific orthogonal scrolling.
Brass Tacks: Certain highly complex UI paradigms—some of which users are expecting more and more from modern interfaces—are going to be significantly easier to implement.
*Recommended Viewing: Advances in UI Data Sources
Starting in iOS 13, there will be a new alternative to Table and Collection View Data Sources. These new Data Sources will take a huge amount of effort out of re-rendering views containing mutable data—your implementations of diffable data sources simply provide a “Snapshot” of the updated data, and then the view will handle updating the UI in the most efficient way possible. Farewell, performBatchUpdates!
Brass Tacks: This will make the very common task of programming interfaces that represent mutable data far more efficient.
Mandatory and suggested considerations for developers when seeking acceptance into the App Store and/or acceptance by users
Recommended Viewing: Introducing Sign In with Apple
Sign In With Apple is a new alternative authorization system provided by Apple. The most important thing to understand about it (and perhaps the most important message in this entire article) is this: starting in the near future, if your iOS app supports any alternative auth system, it must also support Sign In With Apple. Why? Because you can’t have users creating accounts with Sign In With Apple on iOS, only to be locked out on all other platforms where Sign In With Apple is not supported. Fortunately for web developers, there is a JS API ready to go. As for Android—let’s just say the race is on to see who can write a Java or Kotlin wrapper for the JS API first. Sign In With Apple lab at WWDC 2019
Recommended Viewing: Implementing Dark Mode on iOS
Dark Mode is a new feature in iOS 13 that people seem extremely excited about. It allows iOS users to choose a darker color palette for their default interface style. It is not an explicit requirement for App Store submissions per se, but if Dark Mode users install your app and it doesn’t support Dark Mode, or worse, it is unusable in Dark Mode (this is very possible - please test your apps in Dark Mode), you are basically begging them to delete and leave a bad review. Luckily, supporting Dark Mode won’t be very hard in most situations, just watch the video for this one.
Recommended Viewing: Advances in Networking, Part 1
Low Data Mode is a new setting that users can enable to tell the system—and their installed apps—that it is important to use as little data as possible on specific networks. Low Data Mode is not a “requirement”, per se, but it is worth understanding because it will affect the way your app interacts with networks regardless of whether your app explicitly supports Low Data Mode or not (but it should). If you are on a Low Data Mode network, discretionary networking tasks will be deferred, and Background App Refresh will be disabled. The recommended viewing contains some very helpful techniques for embracing Low Data Mode.
Recommended Viewing: Platforms State of the Union
At the two minute mark of the Platforms State of the Union, Apple’s VP of Software stated that, “starting next Spring, it will be an App Store requirement to deliver UI that adapts to different screen sizes.” This statement is a bit vague—there has even been speculation online that it means all apps will have to be universal. I don’t think it is anything this extreme; the likely meaning is that whatever platforms your app does support, it must adapt cleanly to all screen sizes available on those platforms. This is really something you should be doing already.
Fuel for your imagination. Ok, that’s redundant. Essentially, these are powerful new tools and features that empower developers to create wholly novel experiences and make it more accessible to create some of the more advanced experiences that were already possible.
Recommended Viewing: What's New in Machine Learning
There are some very cool new features available in CoreML 3, but the one that excites me the most is on-device model processing. This means that very soon we will be able to create some really impressive customization for our users without making them worry about sacrificing their privacy, because we will no longer need to send their data to a server to generate said customization.
Recommended Viewing: Introducing ARKit 3
It’s like ARKit 2, only better! ARKit 3 introduces some very cool features like People Occlusion, Motion Capture, Collaborative Sessions, Plane Classification, and more. I’m actually most excited for Plane Classification, as it will empower us to make AR experiences more immersive in subtle but impressive ways—now that I know the vertical plane is not just a plane but a window, for example, I can utilize that information to apply characteristics of glass to the plane to make my experience more immersive.
Recommended Viewing: Introducting RealityKit and Reality Composer
Reality Kit is a new API built to simplify the integration of AR assets into your experiences, and Reality Composer is a new 100% code-free tool for creating anything from individual assets to entire scenes. These tools fit in with one of the bigger themes from WWDC 2019, which was making the development of some of the more complex—and interesting—experiences possible on Apple’s platforms more accessible.
These didn’t make my top list, but are definitely worth paying attention to.
Recommended Viewing: Advances in App Background Execution
There is a lot of cool new stuff in background processing, but the most significant is the ability to schedule background tasks for when the device has an external power source, and the device is likely not in use (perhaps while the user is sleeping). This allows apps to do heavy background work without impacting app background and battery usage metrics; scheduling background work in this manner will give our apps minutes, not seconds, of processing time. While this is most obviously helpful in empowering the aforementioned on-device ML model processing, it is highly beneficial for any background processing that can wait for later.
Recommended Viewing: Introducing SF Symbols
SF Symbols is a comprehensive library of over 1000 symbols that are built to scale, support variable weights, and cleanly match text. This may not mean much for heavily branded, fully custom interfaces—but for products hoping to leverage the familiarity of the OS, this is a big deal. These are the same symbols that users will interact with in all of iOS 13’s first-party apps.
Recommended Viewing: Advances in Networking, Part 1
Do I even need to expand on this? No need for 3rd party libraries or complex wrappers, Apple platforms now natively support Web Sockets.
While this is by no means a comprehensive list, it should give you a good idea of the direction Apple is trying to move with their developer tools. All of these new tools will make it easier and more consistent for developers to produce high-quality, stable applications for Apple platforms. But perhaps more notably, Apple is positioning itself as the go-to platform for anybody looking to dip their toe into the world of mobile development making it more accessible to people who are less familiar with existing Apple development paradigms. This is particularly true when it comes to the more technically heady and impressive experiences possible on Apple platforms, such as Machine Learning and Augmented Reality. For example, with the introduction of Create ML and Reality Composer, Apple is opening the door for people with virtually no technical experience to create some truly cutting-edge experiences. With this clever positioning, Apple is effectively stacking the odds that the newest and best ideas will find their way to Apple platforms first.
Representing Durham with my Runaway hoodie at WWDC 2019