Sendability is an important feature of Swift Concurrency. It’s how the compiler determines whether code can safely be accessed from multiple concurrency contexts. In this post you’ll learn everything you need to know about why state sometimes needs to be Sendable.
Read post
Subscribe to my newsletter and never miss a post
Recent articles
Jump to a random postXcode 14 “Publishing changes from within view updates is not allowed, this will cause undefined behavior”
Updated on: April 23, 2024UPDATE FOR XCODE 14.1: This issue appears to have been partially fixed in Xcode 14.1. Some occurences of the warning are fixed, others aren’t. In this post I’m collecting situations me and others run into and track whether they are fixed or not. If you have another sample that you think is similar, please send […]
Read postSwift 5.7 introduced many new features that involve generics and protocols. In this post, we’re going to explore an extremely powerful new feature that’s called "primary associated types". By the end of this post you will know and understand what primary associated types are, and why I think they are extremely important and powerful to […]
Read postProtocols are an extremely important part in the Swift language, and in recent updates we’ve received some new capabilities around protocol and generics that allow us to be much more intentional about how we use protocols in our code. This is done through the any and some keywords. In this post, you will learn everything […]
Read postThis post is up to date for Xcode 15 and newer. It supersedes a version of this post that you can find here On iOS 15, Apple granted developers the ability to present partially visible bottom sheets using a component called UISheetPresentationController. Originally, we had to resort to using a UIHostingController to bring this component […]
Read postWorking with dates isn’t easy. And showing them to your users in the correct locale hasn’t always been easy either. With iOS 15, Apple introduced a new way to convert Date objects from and to String. This new way comes in the form of the new Formatter api that replaces DateFormatter. As any seasoned iOS […]
Read postClosures are a powerful programming concept that enable many different programming patterns. However, for lots of beginning programmers, closures can be tricky to use and understand. This is especially true when closures are used in an asynchronous context. For example, when they’re used as completion handlers or if they’re passed around in an app so […]
Read postDisclaimer: This post is not sponsored by Proxyman, nor am I affiliated with Proxyman in any way. I pay for my license myself, and this post is simply written as a guide to learning more about a tool that I find very important in the iOS Developer toolbox. Networking is an essential part of modern […]
Read postWhen you’re writing a conversion layer to transform your callback based code into code that supports async/await in Swift, you’ll typically find yourself using continuations. A continuation is a closure that you can call with the result of your asynchronous work. You have the option to pass it the output of your work, an object […]
Read postSwift’s async/await feature significantly enhances the readability of asynchronous code for iOS 13 and later versions. For new projects, it enables us to craft more expressive and easily understandable asynchronous code, which closely resembles synchronous code. However, adopting async/await may require substantial modifications in existing codebases, especially if their asynchronous API relies heavily on completion […]
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