Skip to content

scaffold_viewmodel

Generate a new Swift file containing an @Observable class (or ObservableObject for older deployment targets) that serves as a view model in the MVVM pattern. The generated file includes the proper imports and a clean starting structure ready for you to add properties and methods.

ParameterTypeRequiredDefaultDescription
namestringYesThe name of the view model (e.g., "ProfileHeader" generates ProfileHeaderViewModel.swift)
outputPathstringYesAbsolute path to the directory where the file will be created

“Create a view model for the ProfileHeader view”

{
"name": "ProfileHeader",
"outputPath": "/Users/dev/Projects/FitnessTracker/FitnessTracker/ViewModels"
}

Create a view model for a data-heavy screen

Section titled “Create a view model for a data-heavy screen”

“Scaffold a WorkoutHistory view model in the ViewModels directory”

{
"name": "WorkoutHistory",
"outputPath": "/Users/dev/Projects/FitnessTracker/FitnessTracker/ViewModels"
}

Create a view model in a feature-based folder structure

Section titled “Create a view model in a feature-based folder structure”

“Generate a view model called MealPlanner inside the Nutrition feature folder”

{
"name": "MealPlanner",
"outputPath": "/Users/dev/Projects/FitnessTracker/FitnessTracker/Features/Nutrition"
}
Created view model file: /Users/dev/Projects/FitnessTracker/FitnessTracker/ViewModels/ProfileHeaderViewModel.swift
File contents:
import Foundation
import Observation
@Observable
final class ProfileHeaderViewModel {
}