
Why your SwiftUI app feels slow even though Instruments says it’s fine?
Perceived performance vs measured performance in SwiftUI. Why users feel slowdown where the CPU barely wakes up - and how to fix it without touching Instruments.
Technical articles about iOS development, Swift, SwiftUI, and mobile app development best practices.

Perceived performance vs measured performance in SwiftUI. Why users feel slowdown where the CPU barely wakes up - and how to fix it without touching Instruments.

How to build a NavigationStack when each feature is a separate Tuist module? Dependency Inversion for routing, deep linking between modules, type-safe navigation without a central enum. A practical guide from a production migration.

How do you prove to the backend that a request comes from an unmodified, official instance of your app? App Attest is the final piece of the defense-in-depth puzzle.

Static certificate pinning is a trap. Learn about Dynamic SSL Pinning, bypass attempt detection, and a rotation strategy that won't lock out your users.

Your requests today can be decrypted in 10 years. Learn request signing with HMAC and Secure Enclave, and quantum-secure TLS in iOS 26 before it's too late.

SwiftData, Core Data, GRDB, Realm - which one to choose? Surprising facts, hidden pitfalls, and the brutal truth about each solution. Benchmarks, decision flowchart, and common mistakes you can avoid.

From MVP + Coordinator + UIKit to Clean Architecture + SwiftUI + MVVM + Tuist. A practical guide to incremental migration using the Strangler Fig pattern. What to avoid, where to start, and why a big bang rewrite is a recipe for disaster.

Actors in Swift were supposed to be the answer to data races. In practice, they introduce subtle pitfalls that catch even seniors. Reentrancy, actor hopping, false sense of security with @MainActor - here's what to avoid.

In this article, I wanted to highlight the pitfalls in SwiftUI. It's a deeper look at how the framework works under the hood and the mistakes that can cost you hours of debugging, or worse, go unnoticed until users start complaining about a laggy interface.

Recently, wanting to expand my skill set, I decided to take on web development. For a long time, friends had been asking me if I do this, or if I know someone who does. This motivated me to dive into the topic and see if it's for me. It turned out that web development is quite enjoyable.

Every iOS developer knows this moment: you start a new project, open Package.swift and wonder whether to add a library or write it yourself?

Back when I was starting out as a junior iOS developer, I often found myself in a situation where QA would report a bug, I'd fix it, and two more would appear in its place. I kept wondering - was I just that careless, or was the problem somewhere else entirely? The answer came with time.

A pragmatic approach to state management in iOS without vendor lock-in. ViewModels in classic MVVM often evolve unpredictably, and in this article I show how to control that.

After more than 8 years of iOS development, I've learned to appreciate architecture that serves the team and project, not the other way around. Some time ago, I joined a project where the app was written in The Composable Architecture (TCA). After several months of challenges, we decided to rewrite it using Clean Architecture. I want to share what this taught us.