Async/await will be the defacto way of doing asynchronous programming on iOS 15 and above. I’ve already written quite a bit about the new Swift Concurrency features, and there’s still plenty to write about. In this post, I’m going to take a look at building an asynchronous image loader that has support for caching. SwiftUI […]
Read post
Subscribe to my newsletter and never miss a post
Recent articles
Jump to a random postIf you’ve worked with Combine in your applications you’ll know what it means when I tell you that you should always retain your cancellables. Cancellables are an important part of working with Combine, similar to how disposables are an important part of working with RxSwift. Interestingly, Swift Concurrency’s AsyncSequence operates without an equivalent to cancellable […]
Read postOne of my favorite concurrency problems to solve is building concurrency-proof token refresh flows. Refreshing authentication tokens is something that a lot of us deal with regularly, and doing it correctly can be a pretty challenging task. Especially when you want to make sure you only issue a single token refresh request even if multiple […]
Read postEarlier, I published a post that shows you how to use Swift Concurrency’s task groups. If you haven’t read that post yet, and you’re not familiar with task groups, I recommend that you read that post first because I won’t be explaining task groups in this post. Instead, you will learn about a technique that […]
Read postIn last week’s post, I demonstrated how you can use a task group in Swift to concurrently run multiple tasks that produce the same output. This is useful when you’re loading a bunch of images, or in any other case where you have a potentially undefined number of tasks to run, as long as you […]
Read postWith Apple’s overhaul of how concurrency will work in Swift 5.5 and newer, we need to learn a lot of things from scratch. While we might have used DispatchQueue.async or other mechanisms to kick off multiple asynchronous tasks in the past, we shouldn’t use these older concurrency tools in Swift’s new concurrency model. Luckily, Swift […]
Read postThis post applies to the version of SwiftUI that shipped with iOS 15, also known as Swift 3. To learn how you can present a bottom sheet on iOS 16 and newer, take a look at this post. With iOS 15, Apple introduced the ability to easily implement a bottom sheet with UISheetPresentationController in UIKit. […]
Read postPresenting a bottom sheet in UIKit with UISheetPresentationController
Published on: June 30, 2021We’ve seen bottom sheets in Apple’s apps for a while now, and plenty of apps have followed this pattern. If you’re not sure what I mean, it’s the kind of sheet that takes up just a part of the screen and can be swiped upwards to take up the whole screen or downwards to be […]
Read postIf you’ve been following along with Swift Concurrency in the past few weeks, you might have come across the term "task local values". Task local values are, like the name suggests, values that are scoped to a certain task. These values are only available within the context they’re scoped to, and they are really only […]
Read postEvery since Apple announced a new Concurrency model in 2021, we’ve all been moving from completion handlers to async / await. That said, Swift Concurrency is much bigger than just async / await. It features a whole new Concurrency model that includes compile-time protection against data races, and new tools to prevent our code from […]
Read postExpand your learning with my books

Learn everything you need to know about Swift Concurrency and how you can use it in your projects with Practical Swift Concurrency the video course. It contains:
- About ten hours worth of videos and exercises
- Sample projects that use the code shown in the videos.
- FREE access to the Practical Swift Concurrency book
- Free updates for future iOS and Swift versions.
The course is available on Teachable for just $89
Enroll now