WWDC 2024 Viewing Guide

My WWDC 2024 viewing guide to help you plan the sessions you want to watch.

Where Do I Start?

The theme for the year is Apple Intelligence. Start by watching the Platforms State of the Union (SOTU) (5 minute recap) for a summary of what’s new this year.

You don’t have to learn everything new today!

There are over 100 sessions and a lot of new stuff to learn. You may feel like you’re getting left behind. Don’t let it overwhelm you. You’ve got time.

The new API’s need iOS 18 and some features are coming later this year. Don’t burn yourself out trying to keep up.

Watching The Sessions

I watch the videos using the Apple Developer app. It’s available on macOS and iOS. The video player supports from 0.5x to 2x playback, most videos have transcripts and allow copying of the onscreen sample code. You can also watch on YouTube.

There are a lot of sessions, but many are short (10-20 minutes). There’s no padding and Apple’s engineers get to the point quickly.

Swift

Swift is ten years old and the big news this year is Swift 6:

  • What’s new in Swift Swift 6 language mode. Static Linux SDK for Swift. Swift Testing open source testing library. Explicit module builds. New organisation on github.com/swiftlang. Language updates for noncopyable types, embedded swift, C++ interop, typed throws, data-race safety.

  • Migrate your app to Swift 6 Ben walks through migrating a sample app to Swift 6. Full enforcement of data isolation when enabled. For each target, enable complete concurrency checking in Swift 5 mode before enabling Swift 6 language mode. See Swift 6 migration guide.

  • Consume noncopyable types in Swift New Copyable protocol. Every type is Copyable by default. Noncopyable types can be consumed or borrowed but not copied. Swift 6 supports noncopyable generics.

  • A Swift Tour: Explore Swift’s features and design New to Swift? This is a fast introduction and tour of many of Swift’s features.

  • Go small with Embedded Swift Subset of Swift used on Secure Enclave Processor in Apple devices. Still Experimental, use a preview toolchain from swift.org. Demo building a HomeKit device using an ESP32C6 board with a RISC-V microcontroller and the Matter protocol.

  • Explore the Swift on Server ecosystem Apple uses Swift on Server for App Store processing, SharePlay file sharing, and the Private Cloud Compute service. Building a service using VS Code, Vapor, PostgresNIO.

  • Explore Swift performance Function calls, static vs dynamic dispatch. Memory Layout, Swift structs, tuples, and enums use inline storage. Classes and actors use out-of-line storage. Memory allocation, global, stack, heap. Value copying.

SwiftUI

A solid set of updates to SwiftUI:

  • What’s new in SwiftUI New floating tab bar. Zoom navigation transition. Create custom controls for control center. Mesh gradients. Document launch scene type. New SFSymbol animations. Window styles and scene types on macOS. Custom hover effects. Alternate key modifier. Custom container views. Text renderer API. Entry macro. Use state directly in previews with Previewable macro. Mix colors. ScrollView geometry changes. SwiftUI view protocol is now MainActor.

  • SwiftUI essentials Recap and tour of SwiftUI concepts and APIs.

  • Swift Charts: Vectorized and function plots LinePlot to visualize a function and AreaPlot to fill area between functions. Vectorized plot APIs for larger datasets.

  • Demystify SwiftUI containers Building custom container views. New ForEach(subviewOf:) to wrap content subviews in custom container. Container values keyed storage to create container-specific modifiers.

  • Create custom visual effects in SwiftUI Custom scroll effects with scroll transition and visual effects modifiers. Color effects with mesh gradients. Custom transitions by conforming to Transition. Text animations with TextRenderer and TextAttribute. Metal shaders and Layer Effects.

  • Catch up on accessibility in SwiftUI Prefer styling over custom controls. Combine elements to simplify navigation. Accessibility label isEnabled parameter. Add actions for controls in an overlay. Label now accepts a view. Drop point modifier.

  • Work with windows in SwiftUI The session uses visionOS but the window management API’s (mostly) work across iOS, iPadOS, visionOS, and macOS.

  • Tailor macOS windows with SwiftUI Style windows toolbars, container background, disabling minimize and restoration behavior. Set initial placement, and ideal placement when zoomed.

UIKit

UIKit has not been forgotten:

  • What’s new in UIKit Document launch and combined tab bar/sidebar. New zoom transition. Animations and gesture recognizers unified across UIKit and SwiftUI. Automatic trait tracking, in place of registerForTraitChanges. List environment trait. UIUpdateLink for complex animations. New symbols animations. Text formatting options. UITextView supports Writing Tools UI. Menu actions on iPhone. Apple Pencil Pro support (added in iPadOS 17.5).

iPadOS

Not much for iPadOS this year:

  • Elevate your tab and sidebar experience in iPadOS Tab bars have a new compact look at top of app. In iPadOS 18, tab bars can optionally be displayed as a sidebar. Hiding sidebar animates it back to tab bar. New SwiftUI and UIKit tab view syntax.

AppKit

  • What’s new in AppKit Writing Tools API. Adopt Genmoji and Image Playground. Window Tiling. NSHostingMenu to use SwiftUI menus. Use SwiftUI animations. Open context menus with keyboard. Text highlighting. SFSymbol animations. Save Panel standard file format picker. System cursors. NSToolbar display mode customizations. Text entry suggestions.

watchOS

The big change this year is Live Activities:

  • What’s new in watchOS 11 Live activities. App Intent RelevantContext API to suggest relevant widgets. Interactive widgets. Expanded double tap usage. WorkoutKit pool swimming activity. HealthKit state of mind API.

  • Design Live Activities for Apple Watch Live activities from your iOS app now automatically appear in the smart stack on the watch. Default appearance reuses the dynamic island compact view but can be customized by adopting the Apple Watch size class.

  • Bring your Live Activity to Apple Watch Walk through of building a live activity for Apple Watch. Customize by providing new layout in supplementalActivityFamilies modifier. Updates sync to Apple Watch. When the watch has limited connectivity start, end and alert updates are prioritized.

  • Build custom swimming workouts with WorkoutKit User selectable workout locations. Average power alerts for running/cycling. Pace alerts for indoor running. Distance goals supported for more workouts. Custom step names. Custom pool swimming workouts. Distance with time goal.

tvOS

Cross-platform Sessions

Developer Tools

The Apple Intelligence features require macOS Sequoia:

  • What’s new in Xcode 16 Code completion with on-device model. Swift 6 language mode. Previewable macro and PreviewModifier. Faster Previews. Opt-in to Explicit modules. Thread performance checker show excessive disk writes and slow app launches. Unified backtrace view. RealityKit debugger. Swift Testing framework. Instruments Flame Graph to visualize code execution.

  • Xcode essentials This is a 35 minute video tour of Xcode that has a load of useful hints and tips for getting the most out of Xcode.

Build

  • Demystify explicitly built modules Xcode 16 explicitly built modules. More efficient, deterministic builds. Enable in build settings. Unify settings at project level rather than at the target if possible to allows modules to be shared.

  • Extend your Xcode Cloud workflows Reminder that developer program includes 25 hours of build time. Example workflow using an external test server. Custom aliases for Xcode and platform versions. Using the App Store Connect API to start manual integration tests when test server repo changes. Webhooks to deploy to production.

Debug

  • Run, Break, Inspect: Explore effective debugging in LLDB Open crashlog in Xcode and choose project to see state of the program when it crashed. Using breakpoint actions and conditions. Swift Error breakpoint to stop when Swift Error is thrown. Swift 6 @DebugDescription to annotate complex types.

  • Analyze heap memory Dynamic memory allocations on the heap. Enable MallocStackLogging in the Xcode Scheme. Using Allocations instrument to understand transient and persistent memory growth. Memory graph debugger to answer why an object still exists. Leaks caused by Swift closure reference cycles. Weak vs unowned references.

Testing

  • Meet Swift Testing New open source package for testing, default when adding a unit test bundle target. Add @Test to mark a function as a test. Use #expect macro to validate test values. #require causes tests to fail. Add information with Traits. Assign tags to group tests in test navigator or include/exclude in a test plan. Parameterized testing to rerun a test with different inputs. XCTest still required for UI and performance testing.

  • Go further with Swift Testing Expect throws macro to validate an expected error is thrown. Use withKnownIssue to ignore failing tests. CustomTestStringConvertible for a test specific description. Parameterized testing to test combinations of inputs (max two collections). Organizing with tags. Xcode Cloud support. Parallel testing and random ordering by default. Testing code with completion handlers or callbacks.

Localization

  • Build multilingual-ready apps Multi-lingual keyboard to type more than one language. Live text supports Arabic. Magic Keyboard function row redesigned for Arabic. String catalogs now detect common validation issues. Grammar engine now supports Hindi and Korean. New method to format numbers within localized strings. Add UIPrefersShowingLanguageSettings to InfoPlist for users who often use apps in different languages.

Accessibility

  • Get started with Dynamic Type Building apps that scale content with dynamic type. Use the built-in text styles. Change layouts with larger text. Prioritize scaling essential content over decorative views and icons. ScaledMetric. Large Content Viewer.

App Store and Distribution

  • What’s new in StoreKit and In-App Purchase Transaction history includes finished consumable transactions. Win-back offers. Demo of new StoreKit views control styles. Control placement API. Xcode 16 supports testing privacy policy and licence locally. iOS 18 deprecates original StoreKit API.

  • Explore App Store server APIs for In-App Purchase App Store server API replaced the Verify Receipt endpoint deprecated in 2023. Open Source App Store Server Library is the recommended way to use the API. New one-time charge notification. Get Transaction History v2 endpoint now returns full history of customer’s purchases. New price and currency transaction and renewal info fields.

  • Implement App Store Offers Introductory, Promotional, and Offer Codes. Transaction and RenewalInfo now include offer type when customer redeems an offer. New view modifier to show subscription promotional offers. Offer code redemption sheet now available on macOS. Win-back offers to re-engage churned subscribers. Streamlined purchasing.

  • Meet AdAttributionKit New iOS framework for privacy-preserving ad attribution using crowd anonymity. Works with ad networks already registered with SKAdNetwork.

  • What’s new in App Store Connect Featuring Nominations. Add details about new content, enhancements, or launches to App Store Connect so the editorial team can consider featuring it. New TestFlight invitation experience for iPhone and Vision Pro. Criteria on public links to filter for device platforms and OS versions. Deep links to product pages. Promote your app with a shareable link to product page. Push notification when editorial teams features your app. Just one set of required screenshots for iPhone and one set for iPad.

Photos and Camera

  • Build a great Lock Screen camera capture experience LockedCameraCapture framework allows third-party camera apps to run from the Lock Screen. Uses a Locked Camera Capture extension.

  • Build compelling spatial photo and video experiences Public API to record spatial video using iPhone 15 Pro. Photo picker can filter on spatial media. PreviewApplication API to launch QuickLook scene.

  • Keep colors consistent across captures Human brain recognizes objects and remembers their color regardless of ambient lighting. Constant Color capture mode aims to replicate this consistency. Use cases include product and skin photography. Compares flash image with ambient image.

  • Use HDR for dynamic image experiences in your app New Adaptive HDR draft standard for backward compatibility by storing HDR and SDR in a single file. iPhone 15 and 15 Pro are transitioning to Adaptive HDR. On iOS 18 and macOS 15, Messages, Quick Look and Preview join Photos in being able to render HDR images. SwiftUI Image and UIKit UIImage support Adaptive HDR.

  • What’s new in DockKit DockKit powered stands available at Apple Stores. Intelligent Subject Tracking uses Machine Learning to identify most relevant person to track. Watch Control. New DockKit Gimbals. Tracking support for photo, panorama, and cinematic modes.

Privacy and Security

  • What’s new in privacy New pickers for FinanceKit, Image Playground, AccessorySetupKit (Bluetooth, WiFi). MAC address rotation on iOS and macOS. User notification of app extension installs, App group container, and local network access permissions on macOS. Cron is off by default. Limited Contact sharing. Lock sensitive apps. Automatic passkey upgrades. Caller ID privacy information retrieval.

  • Streamline sign-in with passkey upgrades and credential managers Automatically upgrade existing accounts to passkeys. New Passwords app with support for passkeys.

System Frameworks

SwiftData

  • What’s new in SwiftData New Unique macro causes an upsert on collision. SwiftData history tracking. Custom data stores. Easier preview data with preview traits and @Previewable. New Expression macro. Index macro for faster queries.

  • Create a custom data store with SwiftData DataStore protocol allows SwiftData to use any persistence backend. Example of using a JSON file as a data store.

  • Track model changes with SwiftData history SwiftData history tracking lets you query and process changes in the order they occurred. A token acts as a bookmark into the transaction history. Example app shows reviewing changes made from a widget. Default store manages history data retention. Matches Core Data history tracking.

Contacts

  • Meet the Contact Access Button Limit access to selected contacts. Contact access picker to grant access to additional contacts. Contact Access button grants access to new contacts with single tap. Only grants access if the button is legible and unobstructed.

PencilKit

  • Squeeze the most out of Apple Pencil PencilKit tool picker now let’s you define the available tools, add an accessory button, or custom tools to the picker. Apple Pencil Pro APIs for roll angle, squeeze gesture, and haptic feedback.

WeatherKit

  • Bring context to today’s weather Precipitation amounts and cloud cover by altitude. Contextually highlight upcoming weather changes. Compare to historical averages since 1970. FlatBuffers for faster data transfer.

Maps and Location

HealthKit

Apple Wallet and Apple Pay

  • What’s new in Wallet and Apple Pay Apple Pay works with non-Safari browsers in iOS 18. Fund transfers available on the web. Redesigned event ticket pass designs.

  • Meet FinanceKit Access to financial data stored on-device in Apple Wallet. Account, balance, and transactions. Transaction picker for user to select which transactions they want to share. Query APIs available on iPhone from iOS 17.4.

TipKit

  • Customize feature discovery with TipKit Tip groups to control order that tips are shown. Reusable tips with custom identifiers. Custom tip view styles. Sync tips with CloudKit (uses SwiftData). Use UIDevice for platform specific tips.

AccessorySetupKit

  • Meet AccessorySetupKit New framework for privacy-friendly discovery and authorization of Bluetooth and WiFi accessories. New picker can grant access to Bluetooth and WiFi in single operation.

App Services

App Intents

The scope of App Intents seems to grow every year:

  • What’s new in App Intents Index app entities to make them searchable and actionable in Spotlight. Make App entities Transferable. Add a URLRepresentation so Siri and Shortcuts can open or share. New UnionValue parameter for AppIntents. App entities can now be defined in a framework and referenced in app or extension targets.

  • Design App Intents for system experiences Updated guidance, previously an App was expected to have a few intents, now anything your app does should be an App Intent.

  • Bring your app’s core features to users with App Intents Reduce friction when switching apps by exposing app’s core features using App Intents. Code samples for adding Shortcuts action, home screen widget, control center control, and app shortcuts for Spotlight and Siri.

  • Bring your app to Siri Twelve new App Intent domains in iOS 18 including Mail and Photos with over 100 kinds of intents. Conform App Intent to Assistant Schema. Assistant Entity exposes intents to Siri.

WidgetKit and Live Activities

Spotlight

Journalling

  • Enhanced suggestions for your journalling app Landscape support. New asset types for State of Mind. New motion activity types for run, and mixed walk/run activities. Generic media suggestions for music and podcasts. Reflection prompts.

CloudKit

CarPlay

These two CarPlay sessions are intended for automaker system designers looking to support next generation CarPlay:

Business and Education

  • What’s new in device management Apple Vision Pro support. Turn off Activation Lock. Limit new accounts to Managed Apple Accounts. New software update settings. Manage Safari extensions and Mac external and network storage.

  • Introducing enterprise APIs for visionOS Six new APIs for enterprise customers. Access to main camera, passthrough in-screen capture (see what I see), barcode and QR code scanning, access to Neural Engine to run ML models on-device, configurable object tracking, app compute settings to increase performance.

Design

SF Symbols

  • What’s new in SF Symbols 6 New animation presets for Wiggle, Rotate, and Breathe. Magic replace is now the default transition animation. Over 800 new symbols.

Audio and Video

ScreenCaptureKit

SharePlay

Other Audio and Video Sessions

Spatial Computing

Design

visionOS

Safari and Web

QuickLook

  • What’s new in Quick Look for visionOS New PreviewApplication API built on SwiftUI and Swift Concurrency for adding Quick Look windowed previews to an app. Surface snapping when previewing 3D models. Quick Look configurations to choose between USDZ variants.

ARKit

RealityKit

Reality Composer Pro

USD

  • What’s new in USD and MaterialX USD support for blend shapes for facial motion. QuickLook support for USD variants. Adjust size tool in Preview. Convert to USDZ action in Shortcuts. Command line USD tools.

  • Discover area mode for Object Capture Area mode to capture objects you can’t easily walk around. New Mac sample app for higher quality processing when creating 3D models. Data Loading API for Photogrammetry samples.

Machine Learning and AI

  • What’s new in Create ML Create ML App has new explore option. Object tracking of real world objects. Time series classifier and forecaster. DateFeatureExtractor.

  • Explore machine learning on Apple platforms Getting started with machine learning on Apple platforms. Apple Intelligence capabilities for Writing Tools, Image Playground, and new Siri App Intents. Vision framework new Swift API with Swift 6 support and added hand pose detection. New framework for language translation.

  • Train your machine learning and AI models on Apple GPUs TensorFlow, PyTorch, JAX, and MLX can use Metal for training models. New ExecuTorch framework to deploy PyTorch models.

  • Support real-time ML inference on the CPU Basic Neural Network Subroutines (BNNS) for machine learning inference and training on the CPU. New BNNSGraph API for real-time use cases.

Three sessions that cover the machine learning workflow of model training, preparation and integration:

Apple Intelligence

  • Get started with Writing Tools Proofread, rewrite or transform text view in iOS, iPadOS, and macOS. Supported by UITextView, NSTextView or WKWebView. Protect text ranges from being rewritten.

  • Meet the Translation API Translation framework allows third-party apps to access the machine learning models powering Apple’s Translate app.. Translation overlay (iOS 17.4) or flexible translation API allows translation of one or more strings. Translation APIs do not work in the simulator.

Vision

Metal and Games