Concurrency
Dive deep into Swift’s latest concurrency changes, covering async-await, actors, and more.
Agent Skills explained: Replacing AGENTS.md with reusable AI knowledge
Agent Skills solves a common problem I have with AGENTS.md files across my projects. Every project that I'm working on has its own AGENTS file. Whenever I encounter an invalid AI output, I try to update my AGENTS file to prevent it from happening again. This mostly meant documenting coding ...
9 months of a Swift Concurrency Course
In March this year, I launched my flagship course on Swift Concurrency & Swift 6. It quickly migrated to Swift Concurrency & Swift 6.2 as we got a major release full of concurrency changes. While I already had experience launching my going-indie.com course the year before, this course was different ...
Approachable Concurrency in Swift 6.2: A Clear Guide
Approachable Concurrency is a term first introduced in one of Swift's vision documents to facilitate the adoption of async/await. Swift Concurrency has been available for a while, but many developers still find it difficult to adopt. Simultaneously, new developers got introduced to concurrency way too early in their adoption process ...
Fastlane alternative - Codemagic CLI toolsAre you tired of Ruby and Fastlane installation issues? There's got to be a better way! Discover Codemagic open source CLI tools. It is not a drop-in replacement for all of what Fastlane does (screenshots for example), but we use it at Codemagic to build and publish iOS and Android apps, also versioning and device provisioning. View on GitHub.
MainActorMessage & AsyncMessage: Concurrency-safe notifications
Standard notifications using Notification Center are only concurrency-safe when using the MainActorMessage or AsyncMessage protocols. These protocols are available since iOS & macOS 26+ and should become the standard for using thread-safe notifications. The Notification type is nonisolated by default, even in cases where it's posted from known isolation domains ...
Why Swift Migration Tooling Matters
Swift offers migration tooling to help you migrate existing code to new upcoming features. Swift Evolution proposals on GitHub will mention an upcoming feature flag that you can use to opt in early. For most of these features, it's likely that they'll become the default in the future. Therefore, it's ...
The 5 biggest mistakes iOS Developers make with async/await
App Store Rejections, your UI freezing for 5 seconds, and migration projects taking months instead of days (even if you’ve been writing Swift for years). These could all be the result of common mistakes that are easy to make when writing Swift Concurrency code. I've created a 65+ lessons course, ...
Async await in Swift explained with code examples
Async await is part of the new structured concurrency changes that arrived in Swift 5.5 during WWDC 2021. Concurrency in Swift means allowing multiple pieces of code to run at the same time. This is a very simplified description, but it should give you an idea already of how important ...
Global actor in Swift Concurrency explained with code examples
Swift Concurrency introduced the concept of a global actor among async/await and tasks. The most common one is likely @MainActor, which I already explained in depth. However, you can also create custom global actors. Although they have existed for a few years, it remains unclear for many developers when and ...
Combine and Swift Concurrency: A threading risk
Many developers are migrating from Combine to Swift Concurrency. Swift Concurrency is here to stay, and Combine hasn't received updates in recent years. While Combine is a mature framework that may not need many updates, it's clear that the Swift team is focusing on a future with Swift Concurrency. When ...
Threads vs. Tasks in Swift Concurrency
Are Threads the same as Tasks in Swift Concurrency? You may wonder if you're used to writing Swift or Objective-C using Grand Central Dispatch (GCD) and traditional APIs. A so-called threading mindset has helped us develop apps that work with asynchronous functions for years. Modern concurrency uses Swift Concurrency and ...
Modern Swift Lock: Mutex & the Synchronization Framework
Swift offers several solutions to lock access to mutable content and prevent so-called data races. Locks like NSLock, DispatchSemaphore, or a serial DispatchQueue are a popular choice for many. Some articles compare their performance and tell you which one works best, but I'd like to introduce you to a modern ...