RSSAmplifier

Blog

Donny Wals

Swift and iOS development tutorials, books, and workshops

donnywals.comRSS feed ↗10 posts

Latest posts

Installing simulator runtimes from the command line

After installing the Xcode 27 beta, I tried to download all the simulator runtimes that I needed. The watchOS runtime installed flawlessly, but I had issues installing the iOS runtime. I kept seeing a dialog that said that Xcode was fetching download information and no matter how long I waited; that dialog would not go [ ]

How I use FlowDeck to let my AI agent build and run my apps

A while back, I posted on X about how folks manage the context windows for their AI agents. In response to that post, the person who built FlowDeck reached out and asked if I'd give it a try. My workflow was mostly fine as-is (build with Cursor, tell it to check builds with xcodebuild, and [ ]

Setting up a delivery pipeline for your agentic iOS projects

A while back, my app crashed mid-workout at the gym. I uploaded the crash report, gave my AI agent some context, and went back to my set. By the time I finished, there was a pull request waiting for me. I reviewed it, merged it, and had a fixed TestFlight build on my device shortly [ ]

The importance of human touch in AI-driven development

AI is changing how we build apps. That's not news. What might be less obvious is how this shift is forcing us to think differently about what actually matters in development. In this post, I want to share my balanced thoughts on AI-driven coding. I'd like to give you my perspective on why tons of [ ]

Migrating an iOS app from Paid up Front to Freemium

Paid up front apps can be a tough sell on the App Store. You might be getting plenty of views on your product page, but if those views aren't converting to downloads, something has to change. That's exactly where I found myself with Maxine: decent traffic, almost no sales. So I made the switch to [ ]

A Deep Dive into SwiftData migrations

SwiftData migrations are one of those things that feel optional… right until you ship an update and real users upgrade with real data on disk. In this post we’ll dig into: How to implement schema versions with VersionedSchema When you should introduce new schema versions When SwiftData can migrate automatically and when you’ll have to [ ]

A deep dive into Collections, Sequences, and Iterators in Swift

When you write for item in list the compiler quietly sets a lot of machinery in motion. Usually writing a for loop is a pretty mundane task, it's not that complex of a syntax to write. However, it's always fun to dig a bit deeper and see what happens under the hood. In this post [ ]

Using Observations to observe @Observable model properties

Starting with Xcode 26, there's a new way to observe properties of your @Observable models. In the past, we had to use the withObservationTracking function to access properties and receive changes with willSet semantics. In Xcode 26 and Swift 6.2, we have access to an entirely new approach that will make observing our models outside [ ]

How to unwrap [weak self] in Swift Concurrency Tasks?

As a developer who uses Swift regularly, [weak self] should be something that's almost muscle memory to you. I've written about using [weak self] before in the context of when you should generally capture self weakly in your closures to avoid retain cycles. The bottom line of that post is that closures that aren't @escaping [ ]

Should you opt-in to Swift 6.2’s Main Actor isolation?

Swift 6.2 comes with some interesting Concurrency improvements. One of the most notable changes is that there's now a compiler flag that will, by default, isolate all your (implicitly nonisolated) code to the main actor. This is a huge change, and in this post we'll explore whether or not it's a good change. We'll do [ ]