How to keep SwiftData from crashing your app on ModelActor release and staged migrations

If you adopted SwiftData expecting a friendlier Core Data, you have probably already met one of its lifecycle traps: a @ModelActor instance going out of scope and taking your fetched models with it, a routine 0.9 → 1.0 staged migration failing with Cannot use staged migration with an unknown model version, or a CloudKit-synced store…

How to survive Xcode toolchain regressions without losing a week

Xcode 26.4 quietly removed the ability to run app-hosted unit tests against physical iOS 16 devices, and Xcode 27 finally added a Delete Derived Data menu item — which the community correctly read as Apple admitting the IDE corrupts its own caches on a regular basis. Between those two announcements is the entire reality of…

How to structure SwiftUI navigation with NavigationSplitView and a router

You moved your SwiftUI app to a router pattern with a top-level NavigationPath, added a NavigationSplitView for iPad and Mac, and now pushing a view from the router replaces the entire content column instead of stacking inside the sidebar. You reach for .isDetailLink(false) — the old escape hatch — and find it does nothing once…

Clean Architecture with VIPER Sample Project for UIKit

Architecting applications to meet today’s challenges and be ready for tomorrow’s problem is not an easy feat. The principles of clean architecture may be sound, but separating the signal from the noise is tough. Here is a sample VIPER project for iOS that you can tinker to learn about the principles of clean architecture.

How to Implement VIPER Clean Architecture in an iOS App

Compartmentalizing functionalities within an app to improve its maintainability is difficult. More so when you’re not well versed with software architectures and other software engineering principles. What if you can confidently structure your app to be resilient and adaptive to change?

Modeling In-App Purchases Inventory

There are four types of in-app purchases in Apple’s App Store, with their own unique ways to manage it. The challenge is how to isolate the intricacies of these product types from the rest of the application. Otherwise a move from non-consumable in-app purchase to a subscription type would involve a major rewrite. Learn how to manage an app’s inventory of purchases and get the code base resilient to changes in the business side.

Architecting a Scalable Web Application

Writing a web app is one thing. Deploying it on the global Internet for millions of users is another thing. Keeping it secure from prying eyes, competitors, and general baddies is yet another challenge. How can you do all of this in a startup where there are a billion of other things in your head beyond running a site?