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


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


CFA in 60 Seconds: Draw It on a Whiteboard
Explain Cooperative Feature Architecture (CFA) in 60 seconds and draw it on a whiteboard: five boxes, two arrows, one composition root, with real Swift from a CFA app.

Matthew Thomas
2 days ago8 min read


What Is isolated deinit in Swift, and When Do You Need It?
Why a @MainActor class's deinit isn't isolated, what Swift 6.2's isolated deinit changes, when the cleanup runs, and the rules the compiler enforces, with tested code.

Matthew Thomas
6 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


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 Changed for @MainActor in Swift 6?
Swift 6 enforces @MainActor isolation, requires owners for static state, drops wrapper inference, and Swift 6.2 adds default MainActor and isolated deinit.

Matthew Thomas
Oct 195 min read


When Should I Use MainActor.run in Swift?
MainActor.run hops to the main actor and back. Learn when it fits, why @MainActor ViewModels don't need it, and how to migrate DispatchQueue.main.async.

Matthew Thomas
Oct 195 min read


How Does @MainActor Work in SwiftUI?
In SwiftUI, View is @MainActor and so should your ViewModels be. Learn how main-actor state, .task and awaited work fit together in a CFA app.

Matthew Thomas
Oct 195 min read


What Is a Global Actor in Swift?
A global actor is one shared isolation domain you apply as an attribute, like @MainActor. Learn to define one, fix its init error and when to use it.

Matthew Thomas
Oct 195 min read


Should I Use an Actor or a Class in Swift?
Use a @MainActor class for UI state and an actor for state shared by many tasks. A tested CFA guide to choosing between actor and class in Swift 6.

Matthew Thomas
Oct 195 min read


What Is an Executor in Swift Concurrency?
An executor decides where a task's code runs: the main executor, an actor's serial executor or the global concurrent pool. Learn the model without threads.

Matthew Thomas
Oct 195 min read


Does Task Run on a Background Thread in Swift?
Task { } inherits the caller's actor, so from a @MainActor ViewModel it runs on the main actor. Learn where tasks really run and how to move heavy work off main.

Matthew Thomas
Oct 185 min read


Does a Task Inherit Actor Context in Swift?
Yes: Task {} inherits actor isolation, priority and task-local values (SE-0304), but not cancellation. Tested examples from @MainActor and actor contexts.

Matthew Thomas
Oct 185 min read


More Than a Swift Concurrency Course
3 Days of Swift Concurrency is growing beyond a course: iOS App Development with CFA brings tutorials, open-source apps, architecture and AI skills together.

Matthew Thomas
Oct 156 min read


Are You Falling Behind as an iOS Developer?
Worried you're falling behind as an iOS developer? Build one modern app with AI, learn Swift Concurrency by making it work, tidy the code, and ship it.

Matthew Thomas
Oct 156 min read
bottom of page