WWDC 2021: 10,000-Foot Overview
Privacy changes
Apple has once again raised the industry's bar on privacy. For the first time, mobile phone users now have the ability to look at an application's network traffic and audit its hardware accesses. For example, if your app is constantly accessing the microphone, that's something that users will now be made aware of.
While changes are a welcome addition for privacy-conscious users, this now means developers will be forced to be more deliberate about what they do and more transparent about why. While communication between a mobile app and a network isn't "hidden," it also isn't easy for the average user to see what exactly apps are doing. "Never trust the client" is common parlance we hear from API developers, and for good reason. If your apps were exposing secrets in their network calls, with Apple's new privacy updates those secrets will be even more public now. Well-designed apps should be unaffected, but it's possible that there may be some security gotchas for code that was rushed to delivery.
New review guidelines
If you haven't already, check out the new review guidelines. One of the more impactful changes states:
Now, as a user, this generally makes a lot of sense. Realistically, this goes hand-in-hand with privacy. If a user wants to try out your service and decides they don't like it, they should be able to clean up their account and leave, taking all their data with them. Companies that don't currently support account deletion will need to begin working towards supporting that feature in the near future.
SharePlay
Apple's new SharePlay feature is a fantastic way for people to share music or video in a FaceTime session. The exciting part of this feature is the introduction of shared group activities. A group activity allows you to synchronize almost any iOS experience you want between users. This includes listening to music, watching movies and videos, or even screen sharing to help others with their device. SharePlay opens up a world of new feature possibilities for products that want to allow their users to interact with each other.
Swift package collections
One interesting new feature is the ability for organizations to curate their own private list of Swift packages. This is quite advantageous for organizations that have security and compliance processes. Now, frequently used libraries can be stored in a company collection, making it easier for developers to find and use what common packages are already approved for company use. This new feature will also help bring some consistency across multiple projects by showing the developer at a glance what packages other projects used, allowing them to adapt their project to use them as well.
Swift programming language changes
Swift has provided a great new update for developers as it now supports async
and await
. These concepts are hardly new to programming and other languages have supported async/await for some time now. This is considered a very important addition to the Swift framework as concurrency is often difficult for developers. Concurrency is inherently hard to wrap your head around and as a result, has the potential to introduce many common errors such as race conditions and deadlocks. In addition to async/await, Apple is adding structured concurrency to Swift which will help eliminate many of those bugs.
SwiftUI updates
SwiftUI is getting some enhancements that make it even easier to develop user interfaces across multiple Apple Platforms. One example is refreshable
, which allows developers to add refresh functionality to a View, enabling the user to pull down on a List
to refresh the data. There's also searchable
, which similarly adds a natural-feeling search to a View
. While separate, some of these new updates do not seem all that exciting, but together they give us insight into something important. Apple is making it really easy to make Views
that conform to their conventions. While SwiftUI is adaptable enough that you will be able to build something that fits your own design system, it's going to be much more effort than adopting Apple's new conventions. Creating an application that will be easy, fast, and accessible is going to be the new standard on all Apple platforms.
Moving beyond passwords
There was a talk at this year's WWDC that didn't seem to get much attention, but was absolutely excellent and has the potential to be an exciting innovation that changes how we interact with technology in the future. Apple is working to move beyond the need for passwords. They are beginning to add public/private keypairs to iCloud, enabling some really useful flows with WebAuthn. Your Apple device will soon gain the ability to become a secure key. This means your Apple device will soon be able to log into virtually anything, all without having to use online servers to store your secrets. It will take a few years for this to really come to fruition, but it's something that we'll be watching with great interest.
So, do I have to update my code now?
There are a number of very good reasons to spend the time and update your Swift product with many of these new changes. Updating provides the users with the latest iOS performance improvements, bug fixes, and functionality that is exclusive to the newest operating system. Nearly every app deals with concurrency in some way or another, so improvements will be seen throughout the code.
All that said, you do not have to update your code right away. Apple is very diligent about maintaining backward compatibility for some time after releases. Old features such as Grand Central Dispatch will continue to be supported for a while and Xcode 13 is still in beta. If your application is already out-of-date, it should probably make it on your near-term roadmap to update.