Swift Concurrency in Real Apps: async/await Beyond the Tutorials

Swift 6 made strict concurrency the default. Here’s what that actually means for networking, data layers, and UI code in production apps.

Most Swift concurrency tutorials show you a URLSession call wrapped in async/await and call it done. That part is easy. What’s harder — and what caused most of the migration pain when Swift 6 dropped — is understanding what actor isolation actually means and how to structure a real app around it.

AI-Assisted iOS Development: My Actual Workflow with Claude and Cursor

I’ve been using AI tools in my iOS workflow for over two years. Here’s what actually saves time, what doesn’t, and how I think about it.

I want to be honest about this upfront: I was sceptical. Not about AI in general — about whether it would actually help with Swift specifically. Swift is opinionated, fast-moving, and the compiler is unforgiving. I wasn’t sure AI tools trained mostly on older codebases would be useful.

Shipping to the App Store in 2025: What Apple Actually Checks Now

App Store submission has gotten stricter. Privacy manifests, required reason APIs, notarisation — here’s what actually trips people up in 2025.

I’ve submitted dozens of apps and updates to the App Store over the years. The process has changed more in the last two years than in the five before that. If you haven’t shipped recently, some of this will catch you off guard.

SwiftUI vs UIKit in 2025: What I Actually Use on Client Projects

After 9 years of UIKit and 4 years of production SwiftUI, here’s how I actually decide which framework to reach for on a new project.

I’ve shipped UIKit apps since iOS 7. I’ve been writing production SwiftUI since it was stable enough to trust — which, realistically, was around iOS 15. After all that time, I still get asked the same question from clients and junior devs: which should I use?

Pagination