Swift Academy · Lesson

@State: Local Mutable State in Views

Using @State to drive UI updates from private view state.

Lesson 2 of 412 steps

@State: Local Mutable State in Views is a free Swift Academy lesson on CoddyKit. This is lesson 2 of 4. Any 3 lessons of this learning path are free to read in full — after that, CoddyKit PRO unlocks every lesson, plus hands-on practice with a built-in code editor and a 24/7 AI tutor. It is part of the Swift Academy learning path, and your progress syncs across the web and the CoddyKit app. The Swift Academy course includes 4 lessons in total.

Welcome

`@State` is the simplest SwiftUI state management tool. It stores a mutable value inside a view and triggers a re-render whenever it changes.

@State Basics

```swift struct Counter: View { @State private var count = 0 var body: some View { Button("Count: \(count)") { count += 1 } } } ```

Private by Convention

Mark `@State` properties `private` — they are implementation details of the view, not part of its interface.

State Storage

SwiftUI manages the backing storage for `@State` separately from the struct. Even though the view struct is recreated on each render, the state value persists.

@State with Strings

```swift struct NameInput: View { @State private var name = "" var body: some View { TextField("Enter name", text: $name) Text("Hello, \(name)!") } } ```

@State with Booleans

```swift struct ToggleDemo: View { @State private var isOn = false var body: some View { Toggle("Enable", isOn: $isOn) if isOn { Text("Enabled!") } } } ```

Triggering Re-renders

Any mutation to `@State` causes SwiftUI to call `body` again. SwiftUI's render engine efficiently diffs the result and only updates changed parts of the UI.

@State for Complex Values

```swift struct Item: Identifiable { let id = UUID(); var text: String } struct ListView: View { @State private var items: [Item] = [] ... } ```

Limitations of @State

• Local only — not shareable across views without `@Binding` • Best for primitive types and small structs • For shared or complex state, use `@StateObject` / `@ObservableObject`

@State vs @StateObject

• `@State` — value type, owned by view, use for primitives • `@StateObject` — reference type, owned by view, use for ObservableObject models

Quick Check

What triggers a view re-render when using `@State`?

Recap

Key takeaways: • `@State` stores local mutable state owned by the view • Mark `private` — implementation detail • Mutations → automatic re-render • SwiftUI persists state across body re-evaluations • Use `@Binding` to share state with child views Next: View Modifiers.
Free to start

Learn Swift with an AI tutor — free

Write and run real code in your browser, get instant help from a 24/7 AI tutor, and pick up where you left off on the web or in the app.

Courses
122
Lessons
409

Frequently Asked Questions

Is the “@State: Local Mutable State in Views” lesson free?

Yes — any 3 lessons of the Swift Academy learning path, including “@State: Local Mutable State in Views”, are free to read in full here on the web. After that, CoddyKit PRO unlocks every lesson, plus interactive practice with a built-in code editor and a 24/7 AI tutor. The Swift Academy course includes 4 lessons in total.

What will I learn in “@State: Local Mutable State in Views”?

Using @State to drive UI updates from private view state. You practise Swift Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Swift Academy?

No prior experience is required. Swift Academy on CoddyKit is structured for beginners through advanced learners, so you can start here or from the beginning and move at your own pace. This is lesson 2 of 4.

How long does the “@State: Local Mutable State in Views” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Swift Academy lesson?

Yes. Every Swift Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. The View Protocol and Body Property
  2. @State: Local Mutable State in Views
  3. View Modifiers: Chaining and Custom Modifiers
  4. Previews and the Preview Provider
← Back to Swift Academy