Curriculum

Five tracks, interleaved rather than sequential. A lesson unlocks once its prerequisites have been read — the order below is one valid path through the graph, not the only one.

SSwift foundations7 lessons

Values, types, optionals, control flow, functions and closures — the vocabulary every later lesson assumes.

Values, constants and variablesReadyOptionalsneeds Values, constants and variablesControl flow and pattern matchingneeds OptionalsArrays, dictionaries and setsneeds Control flow and pattern matchingFunctions and argument labelsneeds Arrays, dictionaries and setsClosuresneeds Functions and argument labelsStrings and charactersneeds Closures
SModelling with types6 lessons

Structs, classes, enums, protocols and generics. Swift rewards you for encoding rules in the type system; this unit is where that starts.

Structs and value semanticsneeds Strings and charactersClasses and reference semanticsneeds Structs and value semanticsEnums and associated valuesneeds Classes and reference semanticsProtocolsneeds Enums and associated valuesProtocol extensions and genericsneeds ProtocolsEquatable, Hashable, Comparable and Codableneeds Protocol extensions and generics
SErrors, memory and semantics2 lessons

Throwing functions, ARC, retain cycles, and why value semantics changes how you reason about a program.

Error handlingneeds Equatable, Hashable, Comparable and CodableARC, retain cycles and weak referencesneeds Error handling
SAdvanced Swift4 lessons

Property wrappers, result builders, macros, opaque and existential types — the machinery SwiftUI is built from.

Property wrappersneeds ARC, retain cycles and weak referencesResult buildersneeds Property wrappersAccess control, modules and Swift Package Managerneeds Protocol extensions and genericsCustom Codable: nested containers and hostile JSONneeds Equatable, Hashable, Comparable and Codable, Error handling
Casync/await and structured concurrency5 lessons

Suspension, tasks, task groups, cancellation. How concurrent code stops being callback soup.

async/await and structured concurrencyneeds Error handlingAsyncSequence, AsyncStream and continuationsneeds async/await and structured concurrencyCombine, and migrating away from itneeds AsyncSequence, AsyncStream and continuationsAsyncAlgorithms: taming streamsneeds AsyncSequence, AsyncStream and continuationsUnstructured tasks: Task, Task.detached and task-localsneeds async/await and structured concurrency, Actors and data-race safety
CActors and data-race safety1 lesson

Actor isolation, Sendable, @MainActor, and the Swift 6 rules that turn data races into compile errors.

Actors and data-race safetyneeds async/await and structured concurrency
UViews and layout2 lessons

The view protocol, the layout system, stacks, frames, and how SwiftUI actually decides where things go.

Your first Viewneeds Protocol extensions and genericsThe layout systemneeds Your first View
UState and data flow2 lessons

@State, @Binding, @Observable, @Environment — choosing the right one is most of SwiftUI architecture.

State and bindingsneeds The layout system@Observable and shared model stateneeds State and bindings
ULists, navigation and input2 lessons

Lists, ForEach identity, NavigationStack, forms, and the controls users actually touch.

Lists, identity and navigationneeds @Observable and shared model stateForms, input and focusneeds Lists, identity and navigation
UAnimation, gestures and drawing3 lessons

Implicit and explicit animation, transitions, gestures, shapes and custom drawing.

Animation and transitionsneeds State and bindingsGesturesneeds Animation and transitionsShapes, Canvas and matched geometryneeds Animation and transitions
UModern SwiftUI3 lessons

Liquid Glass, the current toolbar and tab APIs, scroll effects, and the SwiftUI shipped for iOS 26 and 27.

Liquid Glass and modern SwiftUIneeds State and bindingsUIKit interopneeds State and bindingsSwift Chartsneeds The layout system, State and bindings
DApp architecture3 lessons

Observation, unidirectional data flow, dependency injection, and how to keep a SwiftUI app testable as it grows.

App architecture that survives growthneeds @Observable and shared model stateSOLID principles in Swiftneeds App architecture that survives growthMVVM, Clean Architecture and VIPERneeds SOLID principles in Swift
DPersistence and networking6 lessons

SwiftData models and queries, URLSession, Codable, caching, and error handling across the network boundary.

Networking with URLSessionneeds async/await and structured concurrency, Equatable, Hashable, Comparable and CodableSwiftDataneeds @Observable and shared model state, Equatable, Hashable, Comparable and CodableCaching strategiesneeds Networking with URLSessionOffline-first syncneeds Caching strategies, SwiftDataKeychain and securityneeds Networking with URLSessionCore Data essentialsneeds SwiftData
PQuality and craft4 lessons

Accessibility, performance, Swift Testing, and instrumenting an app you intend to keep.

Testing with Swift Testingneeds Error handling, App architecture that survives growthAccessibilityneeds The layout systemPerformance and Instrumentsneeds ARC, retain cycles and weak referencesSwiftUI performanceneeds @Observable and shared model state, Performance and Instruments
PShipping2 lessons

Project structure, build settings, privacy manifests, TestFlight and App Review.

Shipping to the App Storeneeds Testing with Swift TestingDebugging, crash triage and CIneeds Shipping to the App Store, Testing with Swift Testing
PPlatform integrations3 lessons

The system surfaces beyond your main screen: widgets, notifications, and what your app may do when the user is not looking.

Widgets and WidgetKitneeds The layout system, Shipping to the App StoreNotificationsneeds Shipping to the App StoreApp lifecycle and background executionneeds State and bindings, Notifications