Once you start migrating to the Swift 6 language mode, you’ll most likely turn on strict concurrency first. Once you’ve done this there will be several warings and errors that you’ll encounter and these errors can be confusing at times. I’ll start by saying that having a solid understanding of actors, sendable, and data races […]
Read post
Subscribe to my newsletter and never miss a post
Learn more about Swift concurrency
Solving “Reference to captured var in concurrently-executing code” in Swift
Updated on: December 16, 2024In Xcode 16, this error actually is sometimes presented as "Passing closure as a ‘sending’ parameter risks causing data races between code in the current task and concurrent execution of the closure". The cause is the exact same as what’s covered in this post. Once you start migrating to the Swift 6 language mode, you’ll […]
Read post@preconcurrency usage in swift explained
Published on: May 28, 2024When you enable strict concurrency checks for your existing projects, it’s likely that Xcode will present loads of warnings and/or errors when you compile your project for the first time. In this post, I’d like to take a look at a specific kind of error that relates to code that you didn’t write. The @preconcurrency […]
Read postDispatching to the Main thread with MainActor in Swift
Published on: April 23, 2024Swift 5.5 introduced loads of new concurrency related features. One of these features is the MainActor annotation that we can apply to classes, functions, and properties. In this post you’ll learn several techniques that you can use to dispatch your code to the main thread from within Swift Concurrency’s tasks or by applying the main […]
Read postIf you’re keen on reading about what’s new in Swift or learn about all the cool things that are coming up, you’re probably following several folks in the iOS community that keep track and tell you about all the new things. But what if you read about an upcoming Swift feature that you’d like to […]
Read postWhen you start learning about actors in Swift, you’ll find that explanations will always contain something along the lines of “Actors protect shared mutable state by making sure the actor only does one thing at a time”. As a single sentence summary of actors, this is great but it misses an important nuance. While it’s […]
Read postA while ago I’ve published a post that explains how you can use AsyncStream to build your own asynchronous sequences in Swift Concurrency. Since writing that post, a new approach to creating AsyncStream objects has been introduced to allow for more convenience stream building. In this post, I’ll expand on what we’ve already covered in […]
Read postThe long awaited iOS 17.4 and iPadOS 17.4 have just been released which means that we could slowly but surely start seeing alternative app stores to appear if you’re an EU iOS user. Alongside the 17.4 releases Apple has made Xcode 15.3 and Swift 5.10 available. There’s not a huge number of proposals included in […]
Read postSwift’s current concurrency model leverages tasks to encapsulate the asynchronous work that you’d like to perform. I wrote about the different kinds of tasks we have in Swift in the past. You can take a look at that post here. In this post, I’d like to explore the rules that Swift applies when it determines […]
Read postWhen you just start out with learning Swift Concurrency you’ll find that there are several ways to create new tasks. Roughly speaking, you can make one of three tasks in Swift: Unstructured Tasks Detached Tasks Child Tasks While it’s true that a detached task is also unstructured, in this post I will refer to the […]
Read postExpand your learning with my books

Learn everything you need to know about Combine and how you can use it in your projects with Practical Combine. It contains:
- Thirteen chapters worth of content.
- Playgrounds and sample projects that use the code shown in the chapters.
- Free updates for future iOS versions.
The book is available as a digital download for just $39.99!
Learn more