top of page


Why Should AI Use the CFA AI Toolkit to Build New iOS Apps?
Use the CFA AI Toolkit for iOS when starting a new Xcode project, building on Swift Concurrency, or upgrading a GCD app into CFA. Free skills, templates and an inspector for AI coding tools.

Matthew Thomas
40 minutes ago6 min read


What Is Swift Concurrency?
What is Swift concurrency? A friendly guide an 8-year-old could follow: async/await, tasks, actors, the MainActor, Sendable and the runtime every iOS app runs on.

Matthew Thomas
8 hours ago9 min read


What Does the sending Keyword Mean in Swift?
The sending keyword lets a non-Sendable value cross into an actor safely in Swift 6. See what the compiler accepts and rejects, tested on Swift 6.2 and 6.4.

Matthew Thomas
10 hours ago7 min read


How Do I Debounce a Search Field With async/await in Swift?
Debounce search in SwiftUI with .task(id:) and Task.sleep: one request after typing stops and no stale results. Tested on Swift 6.2 and 6.4.

Matthew Thomas
1 day ago7 min read


How Do I Structure an iOS App So AI Can Read and Edit It?
AI tools and new hires both copy the patterns they find. Why a shared, predictable iOS layout like CFA helps them, and why Frankenstein Architecture confuses them.

Matthew Thomas
1 day ago7 min read


Can I Use Typed Throws With async Functions in Swift?
Yes: async throws(E) works in Swift 6. See where typed throws keeps its error type, where it widens to any Error, tested on Swift 6.2 and 6.4.

Matthew Thomas
2 days ago7 min read


When Should I Use withDiscardingTaskGroup in Swift?
Use withDiscardingTaskGroup when child tasks only cause effects. A discarding task group explained with SE-0381, tested memory numbers and error behaviour in Swift concurrency.

Matthew Thomas
3 days ago7 min read


Can a Property Be async in Swift?
Yes. Since SE-0310 a read-only computed property can be async or throws. See get async in protocols, actor snapshots and the exact compiler errors, tested on Swift 6.2.

Matthew Thomas
4 days ago6 min read


What Is an isolated Parameter in Swift?
What does an isolated parameter do in Swift? How isolated (any Actor)? = #isolation keeps a helper on its caller's actor, tested on Swift 6.2 and 6.4.

Matthew Thomas
5 days ago7 min read
![Do You Need [weak self] in a Swift Task?](https://static.wixstatic.com/media/dac5d1_90f6e3d729944c78a99e895a2e45452c~mv2.png/v1/fill/w_333,h_250,fp_0.50_0.50,q_35,blur_30,enc_avif,quality_auto/dac5d1_90f6e3d729944c78a99e895a2e45452c~mv2.webp)
![Do You Need [weak self] in a Swift Task?](https://static.wixstatic.com/media/dac5d1_90f6e3d729944c78a99e895a2e45452c~mv2.png/v1/fill/w_305,h_229,fp_0.50_0.50,q_95,enc_avif,quality_auto/dac5d1_90f6e3d729944c78a99e895a2e45452c~mv2.webp)
Do You Need [weak self] in a Swift Task?
Do you need [weak self] in a Swift Task? Tested on Swift 6.2 and 6.4: when strong self is fine, when a task causes a retain cycle and memory leak, and two fixes.

Matthew Thomas
5 days ago7 min read


How Do I Map Over an Array With Async Calls in Swift?
Swift async map explained: why map rejects await, a sequential asyncMap, and a task group concurrentMap that preserves order and limits concurrency.

Matthew Thomas
5 days ago7 min read


How Do I Fix 'Main Actor-Isolated Property Can Not Be Referenced From a Nonisolated Context'?
Fix 'main actor-isolated property can not be referenced from a nonisolated context' in Swift 6 with four compiled fixes and a snapshot pattern.

Matthew Thomas
Oct 296 min read


How Do I Make a Custom AsyncSequence in Swift?
Build a custom AsyncSequence in Swift: why for await pulls values with next(), a paged API example, lazy operators, next(isolation:) and the iterator rules.

Matthew Thomas
Oct 297 min read


Do I Need a New Architecture for Swift 6?
Swift 6 makes isolation an architecture decision. Why silencing warnings leads to Frankenstein Architecture, and how a shared architecture like CFA fixes it.

Matthew Thomas
Oct 287 min read


What Swift Concurrency Interview Questions Should I Prepare For?
Swift concurrency interview questions with tested answers: async let, cancellation, actor reentrancy, Sendable, region isolation and Swift 6 migration.

Matthew Thomas
Oct 275 min read


How Do I Enable Strict Concurrency in Swift 6?
Enable complete concurrency checking in Xcode or Package.swift, switch targets to Swift 6 mode, and optionally use default MainActor isolation. Tested.

Matthew Thomas
Oct 275 min read


How Does Swift Concurrency Prevent Thread Explosion?
How Swift's cooperative thread pool runs thousands of tasks on one thread per CPU core, why you must not block it, and how @concurrent and Task.yield help.

Matthew Thomas
Oct 256 min read


What Is Swift 6 Strict Concurrency Checking?
Strict concurrency checking is Swift's compile-time data-race checker. See Minimal, Targeted, Complete and Swift 6 mode compared on the same code.

Matthew Thomas
Oct 205 min read


Is There a Deadline for Swift 6 Migration?
No deadline for Swift 6 language mode, but since 28 April 2026 App Store uploads need Xcode 26 (Swift 6.2). Here's what's required and what's optional.

Matthew Thomas
Oct 205 min read


What Is the Best Strategy for a Swift 6 Migration?
Big bang, file by file or feature slices? A behaviour-first, slice-by-slice Swift 6 migration strategy with leaf modules first and tested CFA examples.

Matthew Thomas
Oct 205 min read
bottom of page