
The article shows how Swift 6 concurrency features (default MainActor, isolated conformances, Sendable) affect protocol design. Using a simple DatabaseModel protocol, it explains why a conformance can fail due to isolation mismatch with Identifiable. It walks through solutions like changing default isolation, using nonisolated, requiring Sendable, or switching to async protocol requirements.
Matt is a long-time developer for Apple platforms. He's passionate about programming, the outdoors, video games, music, and progress toward a safe and fair world for all people.
You can support his writing and open source work — that would be rad. He is also available for consulting work.
Talks
How to Approach Approachable Concurrency (2025)
Swift Concurrency is new and hard, and you can do it (2024)
The Bleeding Edge of Swift Concurrency (2023)
Crashlytics Crash Reporting (2015)
Swift Evolution proposals
SE-0434 — Usability of global-actor-isolated types
Open source projects
Chime: An editor for macOS
Neon: A Swift library for efficient, flexible content-based text styling
Queue: A queue for Swift concurrency
SwiftTreeSitter: Swift API for the tree-sitter incremental parsing system