In 2025, SwiftUI has matured to the point where the traditional MVVM pattern—originally designed for UIKit—often feels like unnecessary overhead. While MVVM is still common in tutorials and templates, it can lead to excessive state duplication, glue code, and over-engineering in SwiftUI apps. Modern tools like SwiftData, the improved Observable protocol, and robust navigation APIs now allow developers to bind data directly to views without boilerplate-heavy view models. A simpler “view-driven, feature-scoped” architecture—where models hold data and logic, and views manage their own lightweight state—can make apps more readable, faster to build, and easier to maintain for most small-to-medium projects. MVVM still has a place for complex, large-scale, or reusable components, but in many modern SwiftUI cases, skipping it entirely leads to a cleaner, more natural development flow.
Here are a few sources that expand on the topic:
— OR —