Skip to content

A curated roadmap of foundational WWDC sessions (2019-2025) for modern iOS developers. Focus on core concepts, not hype.

Notifications You must be signed in to change notification settings

davidcafor/wwdc-developer-curriculum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

🍎 The Unofficial Apple Developer Curriculum

WWDC19 → WWDC25

A complete, curated roadmap for modern Apple developers.

Goal
Build a deep, long-lasting understanding of Apple development:
Swift → SwiftUI → Concurrency → Data → Testing → Performance → visionOS → Swift 6

Rules
• Only sessions that still matter today
• No fluff, no hype
• Production-first mindset

How to use
• Read top to bottom for historical context
• Or jump by topic using the learning paths at the end


🟦 WWDC19 — Foundations

🧠 Swift & Language

What's New in Swift — WWDC19
https://developer.apple.com/videos/play/wwdc2019/402/
Property wrappers, opaque types, and the foundations of modern Swift

Modern Swift API Design — WWDC19
https://developer.apple.com/videos/play/wwdc2019/415/
How to design APIs that feel native. Essential for architecture


🎨 SwiftUI — The Beginning

Introducing SwiftUI: Building Your First App — WWDC19
https://developer.apple.com/videos/play/wwdc2019/204/
The starting point. Watch this before anything else about SwiftUI

SwiftUI Essentials — WWDC19
https://developer.apple.com/videos/play/wwdc2019/216/
Views, modifiers, and the declarative model explained from scratch

Data Flow Through SwiftUI — WWDC19
https://developer.apple.com/videos/play/wwdc2019/226/
@State, @Binding, @ObservableObject. Fundamental to understanding SwiftUI

Building Custom Views with SwiftUI — WWDC19
https://developer.apple.com/videos/play/wwdc2019/237/
Composition, ViewBuilder, and how to create reusable components

Mastering Xcode Previews — WWDC19
https://developer.apple.com/videos/play/wwdc2019/233/
Previews as a development tool, not just for viewing UI


🛠 Xcode & Developer Workflow

Great Developer Habits — WWDC19
https://developer.apple.com/videos/play/wwdc2019/239/
Organize, track, document, test, analyze... professional development

Getting Started with Xcode — WWDC19
https://developer.apple.com/videos/play/wwdc2019/404/
Editor, debugger, simulators. The basics done right

Testing in Xcode — WWDC19
https://developer.apple.com/videos/play/wwdc2019/413/
XCTest fundamentals. Unit tests, UI tests, performance tests

Designing for Accessibility — WWDC19
https://developer.apple.com/videos/play/wwdc2019/244/
Not optional. VoiceOver, Dynamic Type, and basic principles


🔌 Frameworks & Platforms

Introducing Combine — WWDC19
https://developer.apple.com/videos/play/wwdc2019/722/
Publishers, subscribers, operators. Still relevant despite async/await

Combine in Practice — WWDC19
https://developer.apple.com/videos/play/wwdc2019/721/
Real cases: networking, form validation, KVO

What's New in Machine Learning — WWDC19
https://developer.apple.com/videos/play/wwdc2019/209/
Core ML 3, Create ML. The beginning of on-device ML

Advances in Foundation — WWDC19
https://developer.apple.com/videos/play/wwdc2019/723/
Ordered Collection Diffing, Codable improvements, Data compression


🟦 WWDC20 — SwiftUI Becomes Real

🎨 SwiftUI Architecture & Layout

What's New in SwiftUI — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10041/
LazyStacks, Grids, toolbars. SwiftUI starts becoming production-ready

Data Essentials in SwiftUI — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10040/
@StateObject, @ObservedObject, @EnvironmentObject clarified

App Essentials in SwiftUI — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10037/
@main, App protocol, Scene API. Goodbye AppDelegate (in SwiftUI)

Stacks, Grids, and Outlines in SwiftUI — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10031/
LazyVGrid, LazyHGrid, OutlineGroup. Advanced layout

Structure Your App for SwiftUI Previews — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10149/
Dependency injection for fast and useful previews


🧩 Documents, Widgets & Modularity

Build Document-Based Apps in SwiftUI — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10039/
DocumentGroup, FileDocument, ReferenceFileDocument

Build SwiftUI views for widgets — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10033/
Timeline, configuration, placeholder. The widget model

Widgets Code-along (Parts 1–3) — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10034/
Watch Apple build a widget from scratch

Swift Packages: Resources and Localization — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10169/
Assets, strings, files in SPM. Real modularization


🛠 Tooling & Monetization

Meet StoreKit Testing in Xcode — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10659/
Purchase testing without sandbox. Game changer for IAPs

Advances in Xcode Build System — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10147/
Build times, dependencies, targets. For large projects

Why is my app getting killed? — WWDC20
https://developer.apple.com/videos/play/wwdc2020/10078/
Memory, CPU, background tasks. Debugging production crashes


🟦 WWDC21 — Modern Concurrency Era

🧠 Swift Concurrency

Meet async/await in Swift — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10132/
The biggest change in Swift since ARC. Fundamental

Explore structured concurrency in Swift — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10134/
Tasks, task groups, cancellation. How to think about concurrency

Protect mutable state with Swift actors — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10133/
Actor isolation, Sendable, @MainActor. Thread safety without locks

Swift Concurrency: Behind the Scenes — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10254/
How it works internally: cooperative thread pool, continuations

Use async/await with URLSession — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10095/
Modern networking. Goodbye completion handlers

Meet AsyncSequence — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10058/
Asynchronous data streams. For websockets, file reading, etc


🎨 SwiftUI & UIKit Interop

What's New in SwiftUI — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10018/
@FocusState, refreshable, task modifier, async images

Add rich graphics to your SwiftUI app — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10021/
Canvas, TimelineView, custom graphics

Demystify SwiftUI — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10022/
Identity, lifetime, dependencies. How SwiftUI decides what to update

Craft search experiences in SwiftUI — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10176/
.searchable modifier and tokens

SF Symbols in SwiftUI — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10349/
Rendering modes, variable color, custom symbols


🧪 Memory, ARC & Debugging

ARC in Swift: Basics and Beyond — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10216/
Reference counting, weak/unowned, retain cycles

Detect and Diagnose Memory Issues — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10180/
Memory graph debugger, leak detection in Instruments

Discover breakpoint improvements — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10209/
Advanced breakpoints, symbolic breakpoints

Xcode Cloud Workflows — WWDC21
https://developer.apple.com/videos/play/wwdc2021/10267/
Apple's native CI/CD


🟦 WWDC22 — Structure & Scale

🎨 SwiftUI Navigation & Layout

What's New in SwiftUI — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10052/
NavigationStack, NavigationSplitView, Charts

The SwiftUI cookbook for navigation — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10054/
Recipes for complex navigation

Compose custom layouts with SwiftUI — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10056/
Layout protocol. Full control over layout

SwiftUI on iPad: Organize your interface — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10058/
Split views, toolbars, multitasking

SwiftUI on iPad: Add toolbars, titles, and more — WWDC22
https://developer.apple.com/videos/play/wwdc2022/110343/
Navigation bars, document groups


🧠 Swift Language & Safety

What's New in Swift — WWDC22
https://developer.apple.com/videos/play/wwdc2022/110354/
Regex, if let shorthand, buildPartialBlock

Embrace Swift generics — WWDC22
https://developer.apple.com/videos/play/wwdc2022/110352/
some, any, opaque types explained in depth

Design protocol interfaces in Swift — WWDC22
https://developer.apple.com/videos/play/wwdc2022/110353/
Primary associated types, type erasure

Eliminate data races using Swift Concurrency — WWDC22
https://developer.apple.com/videos/play/wwdc2022/110351/
Sendable, actor isolation, MainActor

Visualize and optimize Swift concurrency — WWDC22
https://developer.apple.com/videos/play/wwdc2022/110350/
Instruments for concurrency debugging


📊 Data & Monetization

Hello Swift Charts — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10136/
Intro to Swift Charts

Swift Charts: Raise the bar — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10137/
Customization and advanced cases

Meet StoreKit 2 — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10007/
Modern API for in-app purchases

Implement proactive in-app purchase restore — WWDC22
https://developer.apple.com/videos/play/wwdc2022/110404/
Proper handling of restorations

What's new in notarization for Mac apps — WWDC22
https://developer.apple.com/videos/play/wwdc2022/10109/
For distribution outside the Mac App Store


🟦 WWDC23 — Modern State & Data

🧠 Swift & State

What's New in Swift — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10164/
Macros, if/switch expressions, noncopyable types

Expand on Swift macros — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10167/
Create your own macros

Write Swift macros — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10166/
Macro implementation, SwiftSyntax

Discover Observation in SwiftUI — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10149/
@Observable. The end of ObservableObject in SwiftUI

Migrate to Swift 6 — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10169/
Preparation for strict concurrency checking


💾 Persistence

Meet SwiftData — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10187/
Swift-native persistence. Core Data's replacement

Model your schema with SwiftData — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10195/
@Model, relationships, migrations

Build an app with SwiftData — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10154/
Complete app with SwiftData

Dive deeper into SwiftData — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10196/
Predicates, sorting, custom data stores

Migrate to SwiftData — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10189/
From Core Data to SwiftData


🎨 SwiftUI & Tooling

What's New in SwiftUI — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10148/
@Observable, Inspector, MapKit integration

Animate with springs — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10158/
Physics-based animations, KeyframeAnimator

Beyond scroll views — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10159/
ScrollView customization, scroll targets

Inspectors in SwiftUI — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10161/
Inspector sidebar pattern

Meet TipKit — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10229/
Onboarding and feature discovery

Wind your way through advanced animations — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10157/
PhaseAnimator, advanced keyframes


🧪 Testing & Debugging

Fix failures faster with Xcode test reports — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10175/
Improved test reports

Simplify distribution in Xcode — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10224/
Notarization, TestFlight

What's new in Xcode 15 — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10186/
Bookmarks, enhanced macro expansion


🥽 visionOS

Meet SwiftUI for spatial computing — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10109/
SwiftUI in 3D

Principles of spatial design — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10072/
Design for spatial environments

Design for spatial user interfaces — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10076/
UI patterns in visionOS

Meet ARKit for spatial computing — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10082/
Hand tracking, world sensing

Build spatial experiences with RealityKit — WWDC23
https://developer.apple.com/videos/play/wwdc2023/10080/
3D content, entities, components


🟦 WWDC24 — Performance & Swift 6

🧠 Swift 6

What's New in Swift — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10136/
Noncopyable types, embedded Swift, C++ interop

Migrate your app to Swift 6 — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10169/
Complete data-race safety

A Swift Tour: Explore Swift's features and design — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10184/
Complete tour of the modern language

Go small with Embedded Swift — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10197/
Swift for microcontrollers

Consume noncopyable types in Swift — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10170/
Ownership, borrowing, consuming


🎨 SwiftUI Performance

What's New in SwiftUI — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10144/
Mesh gradients, custom containers, window management

Demystify SwiftUI containers — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10146/
ForEach, List, custom containers

SwiftUI essentials — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10150/
Core concepts revisited with best practices

Enhance your UI animations and transitions — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10145/
Zoom transitions, custom transitions

Bring your app's core features to users with App Intents — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10210/
Siri, Shortcuts, Spotlight integration


🧪 Testing & Tooling

Meet Swift Testing — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10179/
New modern testing framework

Go further with Swift Testing — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10195/
Parameterized tests, suites, traits

Debug with structured logging — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10138/
OSLog structured logging

Analyze heap memory — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10173/
Memory graph, leaks in complex apps

Run, Break, Inspect: Explore effective debugging — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10198/
LLDB, breakpoints, memory inspection

What's new in Xcode 16 — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10135/
Thread Performance Checker, Predictive code completion


🚀 Performance

Analyze heap memory — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10173/
Transient growth, persistent growth, leaks

Profile and optimize your game's memory — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10106/
Metal, textures, mesh optimization

Optimize app power and performance for spatial computing — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10100/
Battery life in visionOS


🥽 visionOS Advanced

Create enhanced spatial computing experiences — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10093/
Advanced RealityKit, custom effects

Build a spatial drawing app with RealityKit — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10104/
Hands-on RealityKit

Compose interactive 3D content in Reality Composer Pro — WWDC24
https://developer.apple.com/videos/play/wwdc2024/10102/
Content creation for visionOS


🟦 WWDC25 — Current State

These are the most recent. Check them after mastering WWDC19-24

What's New in Swift — WWDC25
https://developer.apple.com/videos/play/wwdc2025/10159/

What's New in SwiftUI — WWDC25
https://developer.apple.com/videos/play/wwdc2025/10144/

What's New in Xcode 17 — WWDC25
https://developer.apple.com/videos/play/wwdc2025/10185/


🧭 Recommended Learning Paths

🎯 Path 1: Swift Fundamentals → Modern Concurrency

  1. What's New in Swift (WWDC19)
  2. Modern Swift API Design (WWDC19)
  3. Meet async/await in Swift (WWDC21)
  4. Explore structured concurrency (WWDC21)
  5. Protect mutable state with Swift actors (WWDC21)
  6. Swift Concurrency: Behind the Scenes (WWDC21)
  7. Embrace Swift generics (WWDC22)
  8. Design protocol interfaces (WWDC22)
  9. Eliminate data races (WWDC22)
  10. Migrate to Swift 6 (WWDC24)

🎯 Path 2: SwiftUI Zero to Hero

  1. Introducing SwiftUI (WWDC19)
  2. SwiftUI Essentials (WWDC19)
  3. Data Flow Through SwiftUI (WWDC19)
  4. Building Custom Views (WWDC19)
  5. What's New in SwiftUI (WWDC20)
  6. Data Essentials (WWDC20)
  7. App Essentials (WWDC20)
  8. Demystify SwiftUI (WWDC21)
  9. What's New in SwiftUI (WWDC22)
  10. Compose custom layouts (WWDC22)
  11. Discover Observation (WWDC23)
  12. SwiftUI essentials (WWDC24)
  13. Demystify SwiftUI containers (WWDC24)

🎯 Path 3: Architecture & Data

  1. Modern Swift API Design (WWDC19)
  2. Advances in Foundation (WWDC19)
  3. Data Essentials in SwiftUI (WWDC20)
  4. Structure Your App for SwiftUI Previews (WWDC20)
  5. Swift Packages: Resources and Localization (WWDC20)
  6. Meet Observation (WWDC23)
  7. Meet SwiftData (WWDC23)
  8. Model your schema with SwiftData (WWDC23)
  9. Dive deeper into SwiftData (WWDC23)

🎯 Path 4: Testing & Debugging

  1. Great Developer Habits (WWDC19)
  2. Testing in Xcode (WWDC19)
  3. ARC in Swift: Basics and Beyond (WWDC21)
  4. Detect and Diagnose Memory Issues (WWDC21)
  5. Meet Swift Testing (WWDC24)
  6. Go further with Swift Testing (WWDC24)
  7. Run, Break, Inspect (WWDC24)
  8. Analyze heap memory (WWDC24)

🎯 Path 5: Performance & Optimization

  1. Why is my app getting killed? (WWDC20)
  2. Visualize and optimize Swift concurrency (WWDC22)
  3. Optimize SwiftUI performance (WWDC24)
  4. Analyze heap memory (WWDC24)
  5. Profile and optimize your game's memory (WWDC24)

🎯 Path 6: visionOS Specialist

  1. Principles of spatial design (WWDC23)
  2. Design for spatial user interfaces (WWDC23)
  3. Meet SwiftUI for spatial computing (WWDC23)
  4. Meet ARKit for spatial computing (WWDC23)
  5. Build spatial experiences with RealityKit (WWDC23)
  6. Create enhanced spatial computing experiences (WWDC24)
  7. Build a spatial drawing app with RealityKit (WWDC24)

📚 Extra Resources

Blogs & Newsletters

Books

  • Advanced Swift — objc.io
  • Swift in Depth — Tjeerd in 't Veen
  • Thinking in SwiftUI — objc.io

Open Source

Tools

  • SF Symbols — Apple's icon system
  • Instruments — Profiling and performance
  • Create ML — Machine learning without code

🎓 Final Note

If you complete this curriculum:

You won't just know Apple development.
You'll understand why it works the way it does.

And that's what makes you senior.


🤝 Contributing

Missing an essential session? Better descriptions? Broken links?

Open an issue or PR. This is a community project.

Criteria for adding sessions:

  • Must be relevant today (no deprecated technologies)
  • Must teach fundamental concepts or reusable patterns
  • Must be production-ready (not demos or experiments)

📄 License

CC0 1.0 Universal — Public Domain
Use it, share it, improve it.

About

A curated roadmap of foundational WWDC sessions (2019-2025) for modern iOS developers. Focus on core concepts, not hype.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors