WWDC23 Week 1

June 11, 2023

Week 1 Progress

Progress report: 42 of 177 videos watched and summarized, 23.74% of videos viewed. Not a bad dent for the first week. I took in a lot of really fascinating sessions, and am really excited about the new tooling, and how much of it has been focused on developer ergonomics.

I’m going back to a normal schedule next week, which means watching fewer videos per day, so I’ll probably be posting weekly from now on.

Model your schema with SwiftData

Nice documentation of how annotation work, the most surprising thing in there is that basic relationships between model types don’t even require annotations. Also of note, having migrations between schemas driven by the type system looks like it will be quite nice.

Dive deeper into SwiftData

This explains more of the low level features in SwiftData. This explains how ModelContext and ModelContainer work together, how to build queries with fetch and sort descriptors, and how to work with SwiftData in non-view contexts. Having type safe queries and sorts looks great. It also looks like SwiftData does a to make things work well by default, but offers customization under the hood as needed.

Beyond the basics of structured concurrency

This has a great overview of how to manage groups of tasks, and how to pass data through the task hierarchy. It also feels like the section about distributed tracing is potential very interesting groundwork for tooling to build distributed systems using Swift concurrency.

Mix Swift and C++

I don’t think I’ll end up using this much directly, but I’m guessing that over time I’ll start using it indirectly as cross platform C++ libraries will be much easier to use directly in Swift without needing a middle bridging layer.

Generalize APIs with parameter packs

Seeing parameter packs ship is great as it removes the need to define multiple variants of the same function to take and emit a number of mixed parameters. At the point of use, this should be completely transparent and fix the annoying SwiftUI error when you have too many subviews in a result builder, and it looks like it should be relatively straight forward to implement, though I’m guessing that I’ll be referring back to this video when I need to do this myself.

Meet mergable libraries

It looks like an interesting way to get the benefits of both static and dynamic linking for frameworks that will be included in the bundle, and especially should make it easier to work with apps that are broken down into many sub-modules.

Design with SwiftUI

This talk is aimed at designers, encouraging them to use SwiftUI as a prototyping tool. It’s an interesting idea, but is a harder sell somewhere that needs to support both iOS and Android.

Migrate to SwiftData

I don’t currently maintain any apps using CoreData, but the session was still useful to watch because it helps explain the mechanisms that Swift Data uses to share the same underlying data structure as Core Data.

Discover Observation in SwiftUI

This session did a great job of diagramming when to use the new observation macros, and how they work under the hood. It also covered caveats of how to let the macros know about how to handle observation of computed values that aren’t derived by state on the object itself, which is useful but an edge case.

Expand on Swift Macros

This was a really nice, dense session that explains how the macro system works in Swift, and what it can and can’t do. It was nice to see how much work was put into making macros safe and predictable. One of the more interesting little details is that it takes what looks like strings in the macro definition and converts them into useful input for the code generation system.

Enhance your iPad and iPhone apps for the Shared Space

A nice overview of what it will take to make iPad and iPhone apps fit in nicely with visionOS, especially how to make sure controls will work with the eye tracking system since the hover effect is abstracted away from your app