Swift & SwiftUI

roadmap.sh: https://roadmap.sh/swift-ui

Suggested path through the Swift & SwiftUI nodes. Each node links to its lesson when written.

Nodes

Swift language basics

  • Variables & constants
  • Value & reference types
  • Optionals
  • Control flow
  • Functions
  • Closures
  • Enums
  • Structs & classes
  • Properties & observers
  • Collections (Array, Set, Dictionary)

Swift advanced

  • Protocols
  • Protocol-oriented programming
  • Generics
  • Extensions
  • Error handling
  • Property wrappers
  • Result builders
  • Concurrency (async/await)
  • Actors
  • Memory management (ARC)

Tooling

  • Xcode
  • Swift Package Manager
  • Previews & canvas
  • Asset catalogs
  • Simulator & devices

SwiftUI fundamentals

  • App & Scene structure
  • View protocol
  • Text & Image
  • Modifiers
  • Stacks (VStack, HStack, ZStack)
  • Spacer & Divider
  • Buttons & controls
  • Lists
  • ForEach
  • ScrollView
  • Grids (LazyVGrid / LazyHGrid)

Layout

  • Frames & alignment
  • GeometryReader
  • Safe area
  • Padding & spacing
  • Custom layouts (Layout protocol)

State & data flow

  • @State
  • @Binding
  • @ObservedObject
  • @StateObject
  • @EnvironmentObject
  • @Environment
  • Observable macro (@Observable)
  • ObservableObject
  • @AppStorage
  • @SceneStorage
  • NavigationStack
  • NavigationSplitView
  • Sheets
  • Full-screen covers
  • Alerts & confirmation dialogs
  • Popovers
  • TabView
  • Programmatic navigation

Forms & input

  • Form
  • TextField
  • Toggle
  • Picker
  • Slider & Stepper
  • DatePicker
  • Focus management

Animations & gestures

  • Implicit animations
  • Explicit animations
  • Transitions
  • matchedGeometryEffect
  • Gestures
  • Canvas & shapes

Data & integration

  • Networking (URLSession)
  • Codable / JSON
  • async let & task
  • Combine basics
  • Core Data integration
  • SwiftData
  • UIKit interop (UIViewRepresentable)

Quality & delivery

  • Accessibility
  • Localization
  • Dark mode & theming
  • Previews for testing
  • Unit & UI testing
  • Performance & rendering

Resources

See resources.md.

Project ideas

  • Build a SwiftData-backed task manager with NavigationStack, swipe actions, and @Observable view models.
  • Create an animated onboarding flow using matchedGeometryEffect, custom transitions, and TabView paging.
  • Make a movie-search app that hits a REST API with async/await URLSession, decodes via Codable, and renders a LazyVGrid.

1 item under this folder.