App Architecture (MVC & MVVM)

June 02, 2026 1 min read

Good structure keeps apps maintainable. iOS commonly uses MVC and increasingly MVVM.

MVC

Model (data) ↔ View (UI) ↔ Controller (glue). Simple, but controllers can become huge ("Massive View Controller").

MVVM

A ViewModel holds presentation logic and exposes ready-to-display state, keeping view controllers thin and testable.

final class ProfileViewModel {
    private(set) var displayName = ""
    func load(_ user: User) {
        displayName = user.name.uppercased()
    }
}

Summary

Separate data, UI and logic. MVVM scales better than MVC by moving presentation logic into testable view models.