SwiftUI in Practice
Build Pulse — A Real Markets Watchlist App
The follow-up to SwiftUI Foundations. We build Pulse, a markets watchlist with real networking (powered by ABNetworking), proper architecture, SwiftData caching, animations, and Charts. Every architectural decision explained, every load state modeled, every shortcut left out.
Start Learning16
Lessons
6
Modules
FREE
No paywalls
~4h
Reading time
Curriculum
Course Content
Module 1
Architecture
MVVM with @Observable, small composable views, navigation patterns at scale — the architectural foundation Pulse is built on.
- 1
MVVM 2026 — What It Actually Means with @Observable
10 min read
- 2
Small Composable Views — One Job Per File
9 min read
- 3
Navigation at Scale — NavigationPath, Routers, and Deep Links
10 min read
3 lessons
Module 2
Networking
URLSession + async/await, protocol-based network layer, ABNetworking (the open-source production layer), and modeling UI state as an explicit enum.
- 4
URLSession + async/await — Pulse Loads Real Markets
11 min read
- 5
Protocol-Based Network Layer — Real DIP, Free Tests
9 min read
- 6
ABNetworking — The Networking Layer We Built for Banking Apps
9 min read
- 7
UI State Modeling — One Enum, Five States, Zero Bugs
9 min read
4 lessons
Module 3
Persistence + Caching
SwiftData with relationships and migrations, plus a stale-while-revalidate caching strategy that defines how the app feels.
- 8
SwiftData with Relationships — Favorites that Survive Restarts
9 min read
- 9
Cache Strategy — Stale-While-Revalidate, the Pattern That Defines Feel
9 min read
2 lessons
Module 4
UX Polish
Design system primitives, matchedGeometryEffect animations, and Apple Charts done right.
- 10
Design System Primitives — ViewModifier, ButtonStyle, Color Tokens
8 min read
- 11
Animations — Spring, SymbolEffect, MatchedGeometry, Transitions
9 min read
- 12
Apple Charts — LineMark, AreaMark, and the Sparkline Pattern
9 min read
3 lessons
Module 5
Concurrency
Swift 6 strict concurrency essentials and the task cancellation patterns that prevent leaked spinners.
- 13
Swift 6 Strict Concurrency — @MainActor, Sendable, and Reading the Errors
10 min read
- 14
Task Cancellation — Why Your Spinner Outlives the Screen
8 min read
2 lessons
Module 6
Testing & Capstone
Swift Testing for view models, snapshot testing for views, and Pulse v1 ships with an Instruments performance pass.
- 15
Swift Testing View Models — @Test, #expect, and the makeSUT Pattern
12 min read
- 16
Pulse v1 Ship Checklist — From Working App to Approved App
12 min read
2 lessons
Comments
Leave a comment