Written By Brian Miller, Russell Mirabelli, Will McGinty, Earl Gaspard and Tyler Milner
WWDC 2021 is only a few days away, and we are extremely excited to see what Apple has in store for us this year. Our technical leaders have their hopes and ideas of what is coming next, which we will share with you, but first we’d like to look back and remember some of the biggest announcements from last year.
WWDC 2020 Biggest Announcements
The biggest announcement from last year was certainly Apple Silicon. Apple’s shift from Intel to their own in-house SOC’s was a welcome, albeit scary, change. Would they be able to handle the workload that we put our current Macs through on a daily basis? As it turns out they most certainly can. We’ve been testing out MacBook 13” models with the M1 chip and they absolutely scream. We can’t wait for the 16” models to be releaed so we can say goodbye to Intel and shave time off our builds and other daily tasks.
We received a new cross platform Widget system that utilizes SwiftUI in order to minimize battery usage on both our mobile and non-mobile devices. This new system allows Widgets to be added next to your other app icons on the iOS home screen as well as on the new Today View in iPadOS. In addition, users were also given the ability to create smart stacks of multiple widgets that rotate based on usage patterns, making sure that the right Widget is visible at the right time.
In iOS 14 Apple also introduced App Clips. Developers can now create small, downloadable slices of functionality within their apps and surface them to users through the scanning of an App Clip code, QR code, a smart app banner and even tapping on a link in Messages. When the App Clip card pops up on the screen, the clip is already being downloaded so that the user experiences a seamless transition into the clip. Furthermore, Apple removed additional friction points by adding an eight-hour notification setting so that additional permission requests for notifications aren’t needed inside the Clip. Lastly, the Clip can prompt the user to download the corresponding full application at an opportune moment in the experience, which acts as a great way to overcome the barrier of entry to getting a user to install the app. It just becomes an easy secondary step once they’ve received value from a piece of your experience. Open the Camera App on your iPhone to launch a few of the App Clips we’ve worked on this year for Robert Half and Caesars Rewards.
In watchOS 7, we saw updates to complications using SwiftUI. With the ability to create multiple complications per family and a way to preview those complications with SwiftUI previews in Xcode it has never been easier to add this feature to any watchOS app. Apple also added the ability to share watch faces through URL’s and the messages app. When a user taps on one of these links they are shown the watch face and also prompted to purchase any apps that don’t already have for the complications that are configured for that watch face.
All of the platforms received significant UI updates, but the most important UI update to us was to Xcode. We now have document tabs, a new sidebar and better full screen support. Code completion also got an updated UI and is now 12x faster than before. SwiftUI previews were given a new toolbar for quick controls, allowing you add additional previews and configurations with just a few clicks.
SwiftUI 2 brought forward its most requested feature by adding collection views in the form of a Lazy Grid. Stacks were also given the Lazy treatment so now having a stack of hundreds of views will no longer chew through memory like candy. ViewBuilders added the ability to handle ‘switch’ and ‘If let’ statements. We gained new views such as Outline and Paging views. MapKit and AVKit were also modified to be first-class citizens in SwiftUI, no longer requiring wrappers. Apple topped it all off with life cycle changes that saw the replacement of @UIApplicationMain with @main as well as a SwiftUI App protocol allowing us to completely remove the AppDelegate from our SwiftUI projects.
Apple gave us 100+ sessions to dive deeper into these changes and so many more that made building apps for their platforms easier and more robust. We are never satisfied completely because we know more innovation and change is always right around the corner with 200+ sessions headed our way this year. So, what are we hoping for in WWDC 2021?
WWDC 2021 Hopes from our Technical Leaders
My biggest hope for this year is an overhaul to Core Data, perhaps Swift Data. Working with it right now it is clear that it is an Objective-C API and I’d prefer a more Swifty API that fits right in with the rest of my code. With SwiftUI 3 I fully expect Apple to add the remaining UIKit pieces we currently need to wrap in order to interop with them. More Navigation control in SwiftUI would be a bonus.
I am also hoping for improved AR tools in Xcode that will open the door to ideas I didn’t think were possible. I’d also like to see apple add common controls to ARKit similar to what we have in UIKit with buttons, sliders, etc. Getting those standards started now would help to align the AR experience across numerous apps so that users aren’t consistently having to figure out how to interact in this new medium. We know glasses are on the horizon so it’s time to start bridging the gap between iPhone/iPad and glasses. My wish, that I’m not expecting to come true, is that Apple gives us a way to build to Android. I know that sounds like heresy, but without that we may be stuck with using Unity or Unreal Engine to deliver AR experiences since they have cross-platform support. Google has Flutter so I can always dream Apple will take a shot, right?
For my “One more thing” moment I really want a peek at the XR HMD we know they are working on. I want to know what kind of power and money I need to run them and if I’ll be developing for them with Apple tools or a 3rd party engine. If not, then I would be fine with Tim unveiling the Apple glasses by telling us that he’s been wearing them throughout the entire presentation.
I like to split my expectations into three groups: what I expect to see, what would be cool to see, and what could really change things.
In the first group, I expect to see and am most looking forward to innovations in Xcode. Much of the work on Swift over the past year can be wrapped up into some improvements, and the absolute baseline for me is simply better & faster code completion. I find myself worrying about compile times less and less, as improved CPUs do the work for the compiler team. I’d really like to see a new tool that shakes up Xcode as well, something like what we got in the object grapher. Finally, I’d be surprised if we didn’t get a bit of a boost in the simulator from the M1.
Something I think would be cool would be some sort of merge between iPadOS and macOS for the M1-based iPads. This isn’t something that would shock me, but I’d be more interested in seeing the details behind such a merge.
In the “what could really change things” category, in addition to the ever-present guess that we’re going to get AR glasses, I’d bet more on some new input mechanism instead of an output mechanism. We haven’t seen any changes in input types in quite some time, and the watch gestures that Apple demonstrated recently (for Global Accessibility Awareness Day) hint at new input types to come.
There’s a lot of things I’d love to see at WWDC 2021, but that list differs from what I think we will see this year. We’re likely to see at least a new major release of SwiftUI, a new version of Xcode and many incremental improvements to existing APIs and frameworks.
When it comes to SwiftUI 3, I think the biggest focus needs to be stability and further expanding the surface of the API compared to UIKit/AppKit. In its current state, SwiftUI is a phenomenal prototyping tool, but you can quickly run into trouble once you begin to add complexity. But, as the API is expanding, so is its adoption and the community surrounding it. New ideas are constantly being explored and shared, and a lot of the kinks are being worked out. I’m hopeful that this is the year that SwiftUI can elevate itself from an experiment to the driving force behind our applications.
One of the best ways that can be achieved is through improvements to the Swift compiler and Xcode, and its integration with SwiftUI. Compilation speed and code completion have both improved drastically in recent years, but that trend needs to continue. While I’m sure that expanded use of the M1 will help things along, this needs to be a big year for Xcode.
Of all the “minor” enhancements to iOS mainstays, WidgetKit is likely to be the area of focus — the possibility of user interaction and more flexible placement and sizing on the home screen would surely be huge draws. My biggest hope (pipe dream?) though, is to see Apple finally do something with its Buddybuild acquisition from 2018. There is a plethora of tools that can be used to build an efficient CI/CD pipeline, but they all have their downsides. I hope that this is the year Apple releases their own solution to help solve those problems.
What I am most interested in seeing this year is improvements to SwiftUI. I have no doubt there will be some. The focus for me is improving SwiftUI views to make them as efficient or better than their UIKit counterparts, I’m looking at you TextField. Support for placeholder customization and keyboard dismissal would be nice. Introducing a search bar view and lazy loading NavigationViews would be a plus.
An additional area I would like to see covered is UITesting in SwiftUI. I don’t recall any sessions on UITesting in SwiftUI last year so showcasing best practices and how to speed up these tests would be helpful.
Last but not least, I want to see Apple demonstrate how to support deep linking/navigation using SwiftUI. Most examples for supporting this has been by other developers. SwiftUI navigation very different from UIKit and having some good examples of how to do it would be outstanding.
For WWDC this year, I would love to see a focus on stability and enhancement of developer tools and the developer experience. Historically, it feels like Apple is always rushing to implement a slew of new features into the new version of Xcode, but this often results in the initial release being buggy and unstable. Core features like syntax highlighting and code completion tend to break, which is unfortunately something we’ve seen for several years now.
Although it’s not entirely coupled to WWDC, I’d also like to see some improvements to the Swift language that we use to build our apps. Concurrency improvements are something that was first teased to us by Chris Lattner in his “Swift Concurrency Manifesto” back in 2017. Ever since then, the iOS community has been waiting for a modern “async/await” style of concurrency management. This will help to greatly simplify our asynchronous code, which is on the rise with the amount of networking and processing-intensive operations like machine learning and computer vision that many modern apps take advantage of. It will also help simplify server-side Swift code, which is something I’ve always been interested in.
WWDC has been our Christmas in June for quite awhile now. Just like younglings hoping for that fancy new toy they’ve been dreaming about, we are hoping for a lot this year. We know we won’t get everything on our list, but certain changes will further enhance our engineering quality of life and allow our minds to widen for greater innovation. We look forward to sharing our thoughts after WWDC on all of the exciting announcements.