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 its async/await methodology. Instead of …
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 Swift lock variant introduced via …
Swift Concurrency & Swift 6 Course (Launch offer)
A Swift Concurrency Course that helps you learn all the fundamentals of Swift Concurrency and migrate your projects smoothly to Swift 6 strict concurrency checking. It can be intimidating to start migrating existing projects to Swift 6 and learn about async/await, sendable, and actors simultaneously. A graceful learning process can make the difference between succeeding …
Sparkle: Distribution apps in- and out of the Mac App Store
By implementing Sparkle into RocketSim, I’ve been able to allow developers to install my app on macOS outside of the Mac App Store. I found out that many developers don’t like logging into an iCloud account on their work machine, making it hard to installs apps from the official App Store. Yet, I did not …
#Playground Macro: Running Code Snippets in Xcode’s canvas
Xcode 26 introduced a new #Playground macro that allows you to run code snippets and preview them in Xcode’s canvas. It’s a great way to quickly experiment with code inside your projects without having to define an individual .playground file. Having this all integrated inside Xcode feels great and will make you use playgrounds way …
Default Actor Isolation in Swift 6.2
Default Actor Isolation in Swift 6.2 allows you to run code on the @MainActor by default. This new Swift compiler setting helps improve the approachability of data-race safety, which was set as a goal for the Swift team in their February 2025 vision document. While new projects are set to @MainActor isolation by default, existing …
@concurrent explained with code examples
Swift 6.2 introduced many changes during WWDC 2025, including a new @concurrent attribute we need when working with Swift Concurrency. You might have read that we’ll be able to @MainActor all the things now, which also means we need a way out of the @MainActor for asynchronous functions. For the latter, @concurrent comes into place. …
Unique values in Swift: Removing duplicates from an array
Removing duplicates to get unique values out of an array can be a common task to perform. Languages like Ruby have built-in methods like uniq but in Swift, we have to create such methods on our own. The standard library does not provide an easy method to do this. There’s a lot of ways to …
Billing Grace Period Explained: How It Works and Why It Matters
Users with auto-renewable subscriptions can enter a billing grace period if their automatic payment failed. In this period, they can continue their premium access to your app, while Apple will do its best to help the user fix their payment issues. While it sounds like common sense and a great feature, I discovered it’s not …
Institutional Purchases: Understanding and Detecting
A download spike caused by Institutional purchases visible in App Store Connect causes confusion to many app developers. Several posts on Reddit or Apple’s forums try to answer what they are, but there’s still a lot of confusion about them. Apple’s Volume Purchase Program (VPP) relates and results in a different behavior for your app. …