100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Swift

What Is SwiftUI?

An introduction to Apple's declarative UI framework — how it differs from UIKit, its core mental model, and why state drives the interface.

iOS & SwiftUI FoundationsBeginner7 min readJul 8, 2026
Analogies

What Is SwiftUI?

SwiftUI is Apple's declarative framework for building user interfaces across all of its platforms — iOS, iPadOS, macOS, watchOS, and tvOS — using a single, shared syntax written entirely in Swift. Instead of imperatively instructing the system how to construct and mutate view objects step by step (as UIKit does), you declare what the UI should look like for a given piece of state, and SwiftUI's rendering engine figures out how to efficiently update the screen when that state changes. This shift from 'how' to 'what' is the single biggest conceptual leap developers make when moving from UIKit to SwiftUI.

🏏

Cricket analogy: Just as a captain tells a bowler to bowl a yorker at the death, what's needed, rather than dictating every muscle movement, how, SwiftUI declares what the UI should look like for a given state, and its rendering engine figures out how to update the screen.

Declarative vs. Imperative UI

In UIKit, showing a label with updated text means holding a reference to a UILabel and calling label.text = newValue whenever the underlying data changes — the developer is responsible for keeping the view synchronized with the model. In SwiftUI, a view's body is a pure function of its state: you write Text(username) once, and whenever the username property changes, SwiftUI automatically recomputes the affected part of the view tree and re-renders only what's necessary. Views in SwiftUI are lightweight, immutable value types (structs), not long-lived class instances, which is why SwiftUI can cheaply recreate them on every state change rather than mutating them in place.

🏏

Cricket analogy: Just as an old-school scorer manually erases and rewrites the scoreboard number every time a run is scored, SwiftUI's Text(username) is written once, and a lightweight, disposable scorecard, a struct, is recreated automatically whenever the underlying score changes, rather than mutating one permanent board.

swift
import SwiftUI

struct CounterView: View {
    @State private var count = 0

    var body: some View {
        VStack(spacing: 16) {
            Text("Count: \(count)")
                .font(.largeTitle)
            Button("Increment") {
                count += 1
            }
            .buttonStyle(.borderedProminent)
        }
    }
}

How SwiftUI Renders Updates

When @State (or another observed property) changes, SwiftUI doesn't rebuild the entire screen from scratch. It re-invokes the body computed property to get a new description of the view tree, diffs it against the previous description, and applies only the minimal set of changes to the actual rendered output. This diffing process is why views must be cheap and side-effect-free: body can be called many times, and any expensive work or mutation performed there would run repeatedly and unpredictably.

🏏

Cricket analogy: Just as a video review official doesn't restart the entire match replay for every appeal but re-checks only the relevant frames and applies just the needed correction, SwiftUI re-invokes body, diffs it against the previous tree, and applies minimal changes — so body must stay cheap and side-effect-free.

A useful mental model: think of SwiftUI's body as a recipe, not a cake. You describe the recipe once; SwiftUI bakes (renders) a new cake every time an ingredient (state) changes, but only remakes the parts of the cake that actually differ.

Because body can execute many times, avoid putting expensive computations, network calls, or logging directly inside it — use .task or .onAppear for side effects instead.

  • SwiftUI is a declarative, cross-Apple-platform UI framework written entirely in Swift.
  • Views describe 'what' the UI looks like for given state, not 'how' to mutate it step by step.
  • SwiftUI views are lightweight value types (structs), unlike UIKit's class-based view objects.
  • State changes trigger SwiftUI to recompute body and diff the result against the previous tree.
  • body should be pure and cheap — side effects belong in .onAppear/.task, not the view description.
  • SwiftUI can share UI code across iOS, macOS, watchOS, and tvOS with platform-specific adjustments.

Practice what you learned

Was this page helpful?

Topics covered

#Swift#IOSWithSwiftUIStudyNotes#MobileDevelopment#WhatIsSwiftUI#SwiftUI#Declarative#Imperative#Renders#StudyNotes#SkillVeris