A Practical Guide to Swift Concurrency
summary
Covers practical migration to Swift 6 and Xcode 16: enabling state-concurrency checks turns up 1,600 warnings across a multi-module codebase and motivates incremental upgrades. Explains data isolation, actor and MainActor guarantees, static vs dynamic isolation, and the new sending keyword that transfers ownership of non-Sendable values. Shows fixes: annotate with @preconcurrency, use nonisolated/isolated any, convert globals to lets or attach global actors, and migrate one target at a time while toggling upcoming-language flags and fixing compiler errors. Includes examples and tradeoffs for performance and debuggability.
AI-written summary · about
chapters (20)
- 0:00Introduction and speaker intro
- 1:09Reasons for Swift 6 concerns
- 3:38Swift 6 language mode changes
- 5:24Data isolation in Swift 6
- 8:19Isolation domains explained
- 10:49Isolation boundaries and crossing them
- 12:57Actor and main actor isolation
- 13:40Isolation inference in Swift
- 15:06Global variables and data safety
- 16:34Handling non-isolated protocols
- 17:41Sendable types and sending keyword
- 19:47Function isolation contexts
- 20:51Isolated any for generic code
- 21:33View protocol main actor changes
- 22:58Migration strategies and flags
- 24:25When to upgrade to Swift 6
- 25:50Step-by-step migration process
- 26:54Key takeaways and advice
- 27:41Resources and closing
- 28:04Q&A session
related talks
23mSwift Concurrency is new and hard, and you can do it
45mHow We Adapted the Project to Strict Concurrency Checking — Swift 6
20mHow To Approach Approachable Concurrency
47mDo We Really Need Actors in Swift Concurrency?
47mDo We Really Need Swift Modern Concurrency?
31mYour Brain 🧠 on Swift Concurrency
26mSwift Concurrency Under the Hood
38mReactive Swift Concurrency
