Together again for lots of best practices, backed up with a sprinkling of big new features.
This year was a WWDC like we’ve never seen before, with 1000 developers being invited into Apple’s home in Cupertino to share their excitement, meet engineers, and even have tours around Apple Park.
Of course, the conference was also available remotely, with digital lounges returning, labs available for everyone, and lots of community events. In this article I’ll go over how I think the event went, pick out the talks I enjoyed the most and would recommend you watch, highlight some of my favorite community events, and put forward a handful of suggestions for how WWDC23 might look.
SPONSORED Play is the first native iOS design tool created for designers and engineers. You can install Play for iOS and iPad today and sign up to check out the Beta of our macOS app with SwiftUI code export. We're also hiring engineers!
After two years of being fully remote, this year Apple took a new approach of having a single-day event to kick things off, with the rest of the week being fully remote. You might think that would have dissuaded folks from wanting to attend, I can assure you dear reader that it did not: the in-person event was packed, and I lost track of how many people I met who came to town for the week without getting into the Apple special event.
Even from the first time folks agreed to meet up – at a community drinks event in San Jose – you could feel the incredible excitement once again, as if 2+ years of absence never happened. Folks were just happy to be able to meet their friends from around the world again, to chat about the projects they were working on, and catch up on lost time.
Of course, Apple themselves contributed greatly to the excitement by inviting developers to tour their new Developer Center just next to Apple Park and the visitor center.
This beautiful new space breaks down into multiple meeting rooms with lots of frosted glass for privacy, along with the 280-seat Big Sur theater that is quite astonishing in its precision control of lighting, sound, and picture.
As we left we were given a small bag with a little WWDC22 swag inside, including a Swift cap, an Apple water bottle, and some sunscreen.
Yes, that was a bit of a hint from Apple: my initial fears about this being some sort of COVID superspreader event were allayed by extensive ventilation and masking, but despite the weather-themed swag I think more than a few people came to regret their choice to sit outside in the bright California during the two and a quarter hour keynote – certainly there were significantly fewer people outside during the State of the Union!
Who’s ready for the big day? 🙋♂️ (I’m sitting inside – it’s going to be a great day, but keynote + SOTU in direct sun would be more than I can handle, even with sunscreen!) #WWDC22 pic.twitter.com/c5mXyBvOFn— Paul Hudson (@twostraws) June 6, 2022
The day itself was a lot of fun, but for different reasons than usual. Yes, of course there were lots of important announcements, and shortly after the keynote the initial beta releases dropped. But:
In terms of the the actual announcements, a few things stood out for me.
First, this was the first year since 2019 that both Swift and SwiftUI were upstaged by other frameworks, namely Swift Charts and WeatherKit.
During the week a number of folks asked me why I was so excited about Swift Charts and WeatherKit, and it isn’t because I imagine a lot of charting or weather apps coming out – there just aren’t that many popular weather apps across the world, and the majority of them have their own data sources already.
Instead, I consider both these frameworks to be force multipliers: adding a small chart or weather forecast can power up a cycling app, or a task tracking app, or a farming app. There are so many places that can add real benefits to users, and previously these features would have required a lot more work than they do now. With iOS 16, charting is so straightforward that it becomes an easy choice, and I have no doubt adoption of Swift Charts will be fast.
I wish I could say the same for WeatherKit, but I’m concerned that Apple’s clunky pricing model will rather hamper its chances of widespread adoption. I get that Apple doesn’t want their APIs to be abused by scraping services, but even if someone were to upgrade to the highest pricing tier of 20 million API calls month it would still come to under $12,000 a year – there are only a handful of apps that would require such capacity, and even at that level Apple’s revenue is effectively a rounding error.
When Apple announced CloudKit, their pricing model made much more sense: you get a significant free tier of usage, but that free tier grows as you add more users. This stops abuse, encourages developers to build on Apple’s ecosystem, and in theory should mean that legitimate uses of Apple’s technologies – all the apps Apple should really be encouraging and promoting – pay little to nothing. Let’s hope WeatherKit’s pricing model gets revised a little before release!
Unrelated: I think Twitter almost caught fire when Novall Khan came on screen at the State of the Union, although I wonder how many folks only discovered at that point that her family name isn’t Swift! She remains one of the few Apple engineers who tweets about her work, but hopefully more will follow.
Second, Apple made a rather bold statement to set the tone for the week: “The best way to build an app is with Swift and SwiftUI.” Well, that isn’t quite what they said, but that’s certainly what it looks like they said when you just share a screenshot of the event.
The actual quote is “If you’re new to our platforms, or if you’re starting a brand new app, the best way to build an app is with Swift and SwiftUI.”
Don’t get me wrong: I love using Swift and SwiftUI, and I love helping others discover them too, but this WWDC was quite a cruel reminder that Apple itself still isn’t all-in on SwiftUI – the astonishing new maps features, the new Live Text API, the VisionKit improvements for code scanning, and more all skip by SwiftUI developers, and we’re still somehow left without any form of support for
SFSafariViewController. (For a little balance, UIKit developers were quick to notice that the new multi-column
Table API for iOS is available only for SwiftUI.)
Third, Apple are really leaning into Craig Federighi as a popular icon for developers, and it works every time. I have no idea what Craig is like to work for, but for us external folks he manages to somehow to span developer idol, senior executive, and, yes, even sex symbol.
In case you were wondering, literally everyone I’ve asked at Apple has said Craig’s interest in software engineering isn’t just for big presentations – he’s extremely hands on at every level, and is more than capable of having detailed discussions about user interface design, APIs, and Swift language features. Maybe we could ask him to fix integer indexing into Swift strings and end our long national nightmare…
And finally, despite many swirling rumors from over-excited industry watchers, augmented reality didn’t get mentioned once – I had to check the transcripts later on just to be sure, but it really got nothing at all despite rather remarkable innovations such as RoomPlan.
One last thing that’s been bugging me, but perhaps is more of a sign that I need a vacation: did Apple really flip the closing shots of Apple Park in the State of the Union?
Apple’s Digital Lounges were introduced last year as an attempt to give more folks access to the WWDC experience, and I was really impressed by how popular they were, and in some places how much fun they were.
This year the lounges were back and better than before: many folks were in 10 or more channels at the same time, so if you had time to focus on the event there was almost no chance of you getting bored. Even better, the various watch parties that took place across channels – your chance to watch a talk along with the Apple engineers from that team, asking questions along the way – seemed to be staggered so you could attend them more easily.
There was also a well-attended trivia night, including such head scratchers as, “for a time after the release of the original iPhone, Xcode supported compilation for three software architectures – Intel, PowerPC, and ARM. What was the only version series of Xcode releases that included this capability?” (The answer is Xcode 3, which was also the first Xcode version I used!)
My personal favorite was this one: Which of the following has the Swift features listed in order of their addition to Swift?
But ultimately, the main purpose of these lounges is to replace the old-style chalk talks that were always so good at in-person WWDC events, where one Apple engineer would take questions from a bunch of developers at the same time. In both these formats you get to learn passively as you hear both the questions and answers, and they also help build courage for folks who don’t think they “deserve” a full lab to themselves.
Speaking of labs, if Apple is to continue with online labs next year – and I hope they do! – I really hope they spend the next 12 months investing in a scheduling system that works best for everyone, because the current system results in some labs being under-attended (effectively wasting part of the one week we get to ask Apple engineers questions), and many third-party developers missing out on slots entirely. This is particularly problematic for folks who are in time zones very far from Pacific time, despite Apple’s best efforts to spread their slots across most of Cupertino’s waking hours, but the real underlying problem here is that it’s very hard to have new questions about APIs we only just learned about.
Before I move on, I want to add that last year Apple terminated the WWDC workspace shortly after the week ended, and if it weren’t for community members copying answers out this would have meant thousands of questions and answers were lost just a few hours after the event closed. This year things are better: I’m writing this almost two weeks after the end of WWDC22 and the workspace is still online. There’s no firm date for deletion, but keeping everything online that bit longer really helps folks see all the context and details at a more relaxed pace.
Every year – during the event, and in the weeks and months after – I spend a lot of my time watching the WWDC session videos. Not only do they show us hands-on examples of building with Apple’s APIs, but they frequently also contain useful tips and techniques that help round out my knowledge.
Once again, there were 175 videos released from the event, and this year I managed to watch 65 of them. That’s just shy of 20 fewer than last year, but I I think that’s a side effect of this year’s announcements being less pronounced – it felt like there were more summary and best practices talks, recapping and summarizing knowledge from previous years.
Regardless, once again my list of favorites is naturally limited by my topic selection, and I recommend you visit the full list to find your own favorites.
With that sizable disclaimer out of the way, here are the 10 talks I enjoyed the most…
In Swift 5.7 we’re getting a powerful new regular expression system along with a powerful new way to say “regex”, and in this talk Michael Ilseman (and Zipper 😢) walks us through the problem they solve and how to apply it to your code straight away. My brain is still struggling to understand how they managed to get regular expressions to type check, but they did…
This is talk is packed with fascinating details that, for the most part, we could blissfully ignore and still benefit from. But if you’re like me and want to know how things are changing and why, this talk dives deep into details about message calls, ARC optimizations, and more.
Every year since their launch in iOS 11, Apple’s machine learning teams have been delivering outstanding improvements in power, flexibility, and ease of use, and in recent years Create ML has really come to the forefront of the effort to make machine learning available to everyone. In this talk you’ll see exactly how Create ML helps all of us make great models by giving faster feedback loops and clearly identifying problems with our training.
In this talk you learn about the approaches the SwiftUI team use when designing their own APIs, but even though that’s interesting the real benefit here is how to apply the same approaches to your own APIs. At the core lies progressive disclosure, but I particularly liked these three simple rules that we can all follow: consider common use cases, provide intelligent defaults, and optimize the call site.
What text should go on button actions? How should we structure our UI elements? How much information should go into error messages? These are questions we face every single day, and in this talk two writers from Apple walk us through their own approach to crafting text for these situations and many more – a really great talk summarizing best practices for text in our apps.
This one’s actually a tie between this and Eliminate data races using Swift Concurrency, and there’s a fair amount of crossover in terms of discussing how Swift’s concurrency system works and what common problems we face when using it. The Visualize and Optimize talk does a particularly good job of explaining concepts, using Instruments to identify a problem, then showing code that creates a solution – it’s all stuff you can apply to your own projects straight away.
Custom layouts are one of the low-key changes in SwiftUI, but they unlock such a remarkable amount of power this talk is definitely a must-watch for all SwiftUI developers. You’ll learn how to create a basic, equally sized replacement for
HStack, but then go on to create a math-powered layout that places views on a circle – both are nice, but really this talk will leave you keen to jump into far more layouts of your own invention.
In case you missed the announcement,
NavigationView is being deprecated and replaced with two new views:
NavigationSplitView. This might seem like a surprising change, but these new replacements unlock a huge amount of power, including much easier programmatic navigation and state restoration. This talk is an entertaining tour through why these changes were made, how to migrate old code to new, and also new features you can take advantage of – if you plan to target iOS 16 or later, this will be top of your list. That it’s hosted by probably the most natural presenter in all the sessions just makes it all the easier to recommend!
Swift Charts was the big surprise this year, and as soon as you write your first lines of charting code you get an immediate sense of how much time, effort, and love went into building it. This talk serves as the best starting point for budding charters, explaining the core concepts and a handful of variations to get you started. Be careful, though: once you start building Swift charts, you’ll find it rather hard to stop…
If your app has been around for a while, chances are your UI hierarchy isn’t quite as streamlined as it was back in v1. This talk sets out to correct that, providing thoughtful, in-depth advice to help you rethink the way you organize information so that users can find what they care about faster. One tip I particularly loved was this: “Consider removing the Home tab,” on the grounds that often it’s just a collection of data that is better presented elsewhere in your app. Go on, watch this talk – I dare you!
If you only have time for six videos, here are the ones you need to watch to get the gist of what’s new this year for iOS developers:
There are a few other talks that I want to call out specifically.
First, Meet Transferable has an utterly anonymous name, but this is a huge shift in the way Apple approaches handling data across apps. If you’ve ever had to go near
NSItemProvider, you’ll be very pleased to see how much simpler, and how much Swiftier, this process is becoming.
Second, Power down: Improve battery consumption is an excellent best practices talk to help you identify and resolve battery usage problems in your app. The iOS Settings app has a “Wall of shame” listing of apps that consume the most power – don’t let your app be on there!
And finally, there’s Embrace Swift Generics. In this talk Holly Borla from the Swift Core Team gently guides us through the basics of subclasses, protocols, generics, and so much more, and – best of all – takes a few wrong turns so we can see why one solution doesn’t work the way we might think.
This talk does so many things well, not least the way it builds up knowledge from step to step in a really smooth way. But I think it also highlights one of the fundamental problems of WWDC’s sessions: after a year or two, most people don’t care what’s new in Swift 5.7, they just want to understand how various language features work.
This talk is a masterclass in explaining difficult topics in a way that makes sense – yes, even existentials! – and so I would love to see Apple take the same script, ditch the “new in Swift 5.7” parts and just treat everything as part of the language, then give it an evergreen title such as “Introduction to generics in Swift”. Once that’s done, put it on Swift.org where it deserves to be.
Once again there was a plethora of community-organized events around WWDC, including an Underdog Devs WWDC22 Watch Party, try! Swift DUB DUB, and WWDC.playground, but this year something extra-special happened and honestly it was quite beautiful to behold: iOS Dev Happy Hour had their first in-person meet up at iOS Dev Happy Hour IRL.
If you aren’t familiar with it, iOS Dev Happy Hour is a monthly Zoom gathering that started during the various worldwide lockdowns that took place in COVID-19 times. Originally the goal was just to get together and meet folk with similar interests, but it has grown and grown since then so that it’s now a real community institution where folks get support, share their success stories, demo app ideas, and so much more.
This year the team behind it took a leap of faith, and organized an in-person meet up during WWDC week. Well, it’s safe to say their faith was well placed: tickets sold out almost immediately as folks flocked to take part, with some even rearranging flights in order to attend. They even managed to add a second event, hiring out a local cinema for a watch party catering for folks in the area who didn’t have an Apple Event ticket.
Ultimately, WWDC is only ever going to be as good as the people who turn up and make it the exciting event that it is, so I’d love to see Apple get behind iOS Dev Happy Hour in future years – it’s quite a risk for them to book an even larger venue for a community meetup, but with Apple’s connections, know-how, and (bluntly) financial muscle this could go on to even greater things next year.
For folks who couldn’t attend in person, the #1 place to be was WWDC Community Week, run by Michie Ang and her team. This brought together many disparate events under one hood, including watch parties, meetups, and happy hours around the world, but then added on top daily recaps, a hackathon, and even a community mural where everyone could post their own photos and videos of WWDC22.
Even if WWDC returns to a regular, in-person week next year, I look forward to events like these continuing to grow for a long time to come.
Even though this year was just a single-day event, the desire for developers to meet up and talk all things Apple was just overflowing – many, many people stayed out for four or five days so they could attend social events and catch up with friends, and it seems clear to me there is a huge appetite for Apple to return a full five-day WWDC in 2023.
My own schedule was completely packed, which is most of the reason why it’s taken me so long to write this article! From Sunday until Wednesday I barely had a moment to myself thanks to various meetings over coffee, breakfast, lunch, and dinner, and thanks to a very generous offer from Apple’s WWDR team I was even able to squeeze in more – I recorded a What’s New in SwiftUI for iOS 16 video inside Apple’s shiny new Developer Center.
It was only by Thursday that things started to calm down, and I was able to dive into the first of my 65 WWDC videos for this year, and even have an actual relaxed dinner with friends. It was worth it, though: I got to meet so many people for the first time, and also catch up with many friends I haven’t seen since 2019. I feel certain that whatever Apple announces for next year, I’ll be there if it has any in-person component at all.
Speaking of next year, I’m sure the very earliest discussions of WWDC23 will start soon, and once again I want to repeat my view that we shouldn’t go back to the older, exclusive style of WWDC19 and earlier – at the very least, the worldwide online labs need to stay, so that everyone can benefit from the opportunity regardless of their background or ability to travel.
However, this year made it abundantly clear that people are desperate to have some kind of in-person WWDC.
On one side, an in-person WWDC offers the chance to meet others face to face, gives Apple a captive audience for their latest announcements, and also allows the flourishing of other events such as Layers, AltConf, Core Sushi, and more. I also think there’s a huge amount of value of giving Apple’s engineers direct face time with third-party developers who rely on their APIs – getting the chance to see their projects in person, discuss ideas in a more relaxed environment, and yes even meet up and chat at social events all matter.
On the other hand, the shorter, more concise session videos are often a good thing (even if some of them were so tightly produced as to leave little space for personality), and again the worldwide labs provide a lot of value.
So, we’re left looking for a middle ground. If a 5-day WWDC returned, with all the social events around it that made it such a hot-bed for collaboration, opportunity, and fun, could Apple combine live and pre-recorded sessions? Perhaps the big talks – “What’s new in XYZ” and so on – could take place live so we get the full audience interaction, whereas the more in-depth talks about specific topics could be prerecorded. If (when! Please, God, when!) a SwiftUI-like overlay for Core Data is finally announced, I want to be in the crowd cheering and clapping!
The situation with labs is a bit more complex. I realize this is effectively signing up other people for extra work, particularly when the crunch of WWDC week must be really intense, but I do wonder whether separating online labs from WWDC itself might work better in future years. Maybe we could have traditional in-person labs for the first week, where folks could show up with their existing code as before and get the benefit of being able to workshop solutions in a way that really only in-person events make possible, but then follow that with online labs a couple of weeks later once folks have had time to experiment with the new APIs and prepare more meaningful questions.
I’d love to see a full WWDC return along with all the hustle and bustle surrounding it, but it’s important we find a way forward that continues to include everyone. Yes, events like WWDC Community Week are great for bringing people together, but we also need to make sure they also have a chance at labs so that everyone gets the opportunity to ask their questions and get problems solved.
If you have views on what WWDC23 should look like, please make sure and tell Apple! They are running a survey asking for your feedback on WWDC22 – take the time to fill it in with your views, and help Apple shape the future of this landmark event.
SPONSORED Play is the first native iOS design tool created for designers and engineers. You can install Play for iOS and iPad today and sign up to check out the Beta of our macOS app with SwiftUI code export. We're also hiring engineers!
Paul Hudson is the creator of Hacking with Swift, the most comprehensive series of Swift books in the world. He's also the editor of Swift Developer News, the maintainer of the Swift Knowledge Base, and a speaker at Swift events around the world. If you're curious you can learn more here.
Link copied to your pasteboard.