What is the MVVM architecture pattern in iOS?

Answer

MVVM (Model-View-ViewModel) is the most popular architecture for modern iOS apps, especially with SwiftUI and Combine/async. It separates concerns into three layers: (1) Model: data and business logic — plain Swift structs/classes representing domain data: struct User: Codable { let id: Int; let name: String; let email: String }; (2) View: the UI layer — UIViewController/UIView in UIKit, or SwiftUI View structs. Dumb — only displays data and forwards user actions to ViewModel. No business logic; (3) ViewModel: mediator between View and Model. Contains presentation logic, handles user actions, transforms model data for display, communicates with services: class UserListViewModel: ObservableObject { @Published var users: [User] = [] @Published var isLoading = false @Published var errorMessage: String? private let userService: UserServiceProtocol init(userService: UserServiceProtocol = UserService()) { self.userService = userService } func loadUsers() async { isLoading = true do { users = try await userService.fetchUsers() } catch { errorMessage = error.localizedDescription } isLoading = false } func deleteUser(at indexSet: IndexSet) { users.remove(atOffsets: indexSet) } }. SwiftUI View: struct UserListView: View { @StateObject private var viewModel = UserListViewModel() var body: some View { List(viewModel.users) { user in Text(user.name) } .task { await viewModel.loadUsers() } } }. Benefits: testable ViewModels (no UIKit dependency), clear separation, SwiftUI-friendly. Other patterns: MVC (UIKit default — ViewController becomes "Massive ViewController"), MVP, VIPER (complex apps), Clean Architecture, TCA (The Composable Architecture).