From June 6 to June 10, developers worldwide gathered online for an inspiring week of technology and community at WWDC 2022. In order to keep up with all the latest and greatest, we joined the sessions with our full iOS team. There were many more sessions to watch, continuing even until after the end of the conference, so unfortunately I can't cover them all in this blog. I would strongly encourage everyone to watch the sessions that are of interest to you and your team. And additionally, don’t forget the earlier sessions from the past years, they are as useful as the new ones.
Every day, all the sessions of that day were released in one go at 5 PM, so we had a tough time deciding what to watch first. My tip would be to bookmark the videos you are interested in so you can find them if you would like to watch them again or if you plan to watch them later.
More efficiency with Xcode 14
To start off, we generally watch the ‘What’s new’ section which basically gives a summary of what will be announced. This way you will know which other upcoming sessions you should follow. When we watched Xcode 14, I immediately got enthusiastic. Not only because of the increased speed of the builds, but they also made visual what is taking how long to build so you can identify the bottlenecks much faster and try to improve them. They organized follow-up sessions later in the week to help people to resolve these bottlenecks. And speaking of Xcode 14, have you seen the new developer mode? This is a new security option to enable debugging on your device, which used to work automatically. Do not forget to turn it on and restart your device if you are on iOS 16!
New features in UIKit
Next was the “What’s new in UIKit”. I particularly like the new calendar view, we’ve created these in the past in our apps and it was always a challenge. Seeing that we’re now getting a native version that our app users will get used to, is awesome. Another great feature standing out for me was the SwiftUI support for UIKit UICollection and UITableView cells using the UIHostingConfiguration. This means cells can be created with SwiftUI but they will still use UIKit lists! This will ensure adaptation to SwiftUI much smoother and it opens up possibilities for big projects that were built in UIKit.
Furthermore, UICollectionView and UITableView will have an auto-resize cell default enabled, which also supports auto-layout cells. Can you believe that we will no longer have to manually set the size anymore? It will be interesting to investigate which option will scroll smoother. As this is now enabled by default on iOS 16, we’ll probably have to check our apps now and disable it where we do not want to have auto cell sizing ;)
Talking about checking our apps, UI updates were announced to navigation bars, UIPageControls, UIScreen and UIDevice deprecations. This will mean we’ll have to check our implementations and update to the latest compatible API’s in order not to get unwanted results. Some work to do before iOS 16 is released.. ‘What’s new in UIKit’ also introduced a new permission prompt to the user if you want to use the clipboard, which is another great step in giving users more control over what apps can and cannot access.
If you are using AppClips, I would definitely recommend watching ‘What’s new in AppClips’, as they introduced some neat features and tweaks. The AppClip size can now be 15MB instead of 10MB (possibly because bitcode is now deprecated?). Enabled support for KeyChain sharing and iCloudKit (though limited for security reasons) will make it easier to share and use data across AppClip and after installing the main App. You can reuse the same code and it is safer as you talk directly to the KeyChain instead of the AppGroups.
Wallet Identity and dynamic linking
The one video that stood out for me when watching ‘What’s New’, was Wallet and Apple Pay’, and specifically the Wallet Identity requests for some US states. With this functionality, the user can add their ID to their Apple Wallet and app developers can request some data to determine if a user is 18 years or older (without knowing the exact date of birth). This will be a nice user experience enhancement for some apps! I cannot wait to try it out.
Apple also added an interesting explanation video about static VS dynamic linking. It discussed what the advantages and disadvantages are and when you should use the feature. They even added some tips on how developers can improve the build/launch times of their app! We would definitely recommend watching it if you have a basic understanding of the feature. At Triple, we execute an extensive amount of projects, so knowledge on this topic is valuable. The wrap-up of this talk was basically to use our latest feature, Xcode and if possible use 13.4 iOS deployment target or higher to get the most benefits.
If you're into async Swift with actors, I would watch Distributed Actors. Not explaining anything for now, just go watch it ;)
‘Improve app size and runtime performance’ explains in detail what has changed, this was very informative! In order to speed things up, there are some flags you can use in your project (though they recommend trying both commands to see what works best for your specific project). This talk ended with the advice to use the latest Xcode 14 and set your deployment target to iOS 16. Though setting our deployment target to iOS 16 will take some time, as you will be dropping iPhone 6s + 7 users with iOS 15.
Another talk that extends the app build times is ‘Demystify Parallelization in Xcode Builds’. They demonstrate how you can clearly see in the build timeline overview how Xcode is building your app and how you can take advantage of it. This way you can identify which parts take a long time to build and improve where necessary. And while you are on your app and Xcode, you might as well go see ‘Track down hangs with Xcode and on-device detection’ to eliminate hangs in your app before going live. You will be using the performance tool (which every developer uses daily, right?).
If you like debugging as much as any other developer, I would recommend watching ‘Debug Swift debugging with LLDB’. It will make your life a little bit easier.
More debugging and optimising battery use
Friday was the last day of WWDC 2022. Even though not as many sessions were released as the previous days, plenty of sessions were available that we had not been able to watch yet. I specifically appreciate the new Remote Web Inspector feature coming in WKWebView, explained in the ‘What's new in WKWebView’, this will help to debug a lot faster!
If like us, you always aim for maximum optimization of your apps, I would recommend watching ‘Power down: Improve battery consumption’. In this video, it is explained how to minimize battery usage, enabling your users to use your app longer. The best tip for iPhone 13 users is to implement Dark Mode, resulting in up to 70% power usage in their example app. Though it is only an example, implementing this feature would definitely be a nice improvement to your app.
After a week of videos, we definitely needed some time off over the weekend to let everything sink in. You could rewatch some of the sessions if and when you start using the features discussed. Next week we will watch some more videos. I am especially looking forward to watching the ‘SwiftUI cookbook for navigation’, ‘Eliminate data races using Swift Concurrency’, ‘Embrace Swift generics’ and many more!