Skill Roadmap

Swift & SwiftUI

Swift is Apple's modern, type-safe language, and SwiftUI is its declarative framework for building UI across iOS, macOS, watchOS, and beyond. This roadmap walks you from Swift language fundamentals through concurrency and packages, into SwiftUI views, state management, and data persistence, up to testing, debugging, and the wider Apple developer ecosystem.

What skills does a Swift & SwiftUI developer need?

It splits cleanly into the language and the UI framework built on top of it

Everything starts with core Swift — types, optionals, control flow, functions and closures, and the structures, classes, and protocols that shape how Swift code is organized. Concurrency (async/await, actors, tasks) is a first-class part of the modern language and worth learning early.

On top of that sits SwiftUI: views and modifiers, layout containers like HStack/VStack, navigation, and the property wrappers — @State, @Binding, @StateObject — that drive its data flow model. Real apps add animations, data persistence, localization, and accessibility on top.

Shipping production apps also means being comfortable with testing (XCTest, Swift Testing), Xcode debugging, app architecture (MVVM, Clean Architecture), and the wider tooling ecosystem — package management, networking libraries, and increasingly, Swift on the server.

The Swift & SwiftUI Roadmap

Work through the language first, then build up the SwiftUI layer on top of it

STEP 1
Swift logo

Introduction to Swift

What Swift is, why Apple built it, and getting it installed and running.

What is Swift? Why use Swift? Swift vs Objective-C Where Swift is Used Installing Swift
STEP 2

Swift Basics & Data Types

Syntax and the built-in types every Swift value is made of.

Constants & Variables Comments Type Annotations Semicolons Print & String Interpolation Integers Strings Floats & Doubles Tuples Booleans Optionals & nil
STEP 3

Type System, Operators & Control Flow

How Swift keeps values safe, and the constructs for branching and looping.

Type Safety Type Casting Type Inference Memory Safety Arithmetic / Logical / Comparison Operators Nil-Coalescing if / else switch / case for Loops while / repeat..while continue & break
STEP 4

Error Handling

Swift's explicit model for representing and reacting to failure.

Throwing Propagating Catching
STEP 5

Functions & Closures

Reusable blocks of logic, and Swift's flexible closure syntax for passing behavior around.

Basic Functions Parameters Return Types Function Types Nested Functions Closures Trailing Closures
STEP 6

Structures, Classes, Protocols & Generics

The building blocks for modeling data and behavior, and writing code that works across types.

Enumerations Inheritance Methods Initialization Properties — Stored, Computed, Observers, Wrappers Subscripts Extensions Access Control ARC Protocols Generics
STEP 7

Concurrency

Swift's modern, structured approach to running work asynchronously and safely.

Asynchronous Functions Asynchronous Sequences Tasks & Task Groups Unstructured Concurrency Actors Strict Concurrency Checking Result Builders
STEP 8

Using Packages

Pull in dependencies and share your own code with the Swift Package Manager.

Swift Package Manager Plugins Creating Packages Swift Package Index
STEP 9
SwiftUI logo

SwiftUI Fundamentals

SwiftUI's declarative model — views, modifiers, and how the two combine to build UI.

What is SwiftUI UIKit vs SwiftUI Text Image Button List Form View Modifiers — font, clipShape, padding, background ViewBuilder
STEP 10

Layout & Navigation

Arrange views on screen and let people move between them.

Layout Views
HStack VStack ZStack Grid GeometryReader
Navigation Views
NavigationStack NavigationPath TabView NavigationLink
STEP 11

State Management, Data Flow & Animations

Keep views in sync with data, and add the motion that makes an app feel alive.

@State @Binding @StateObject @ObservedObject @EnvironmentObject Implicit Animations Explicit Animations Transitions Animatable Protocol
STEP 12

User Interaction & Data Persistence

Respond to taps and gestures, and save data between app launches.

UI Controls Gestures Drag & Drop UserDefaults / AppStorage FileManager Core Data SwiftData CloudKit Firebase Realm / GRDB
STEP 13

Localization, Accessibility & Advanced Swift

Reach more users and lean on the newer language features that power modern SwiftUI apps.

Localization Accessibility Macros Asynchronous Programming SwiftUI with Async/Await App Lifecycle
STEP 14

Testing, Debugging & the Wider Ecosystem

Prove your app works, find out why it doesn't, and see where Swift goes beyond Apple platforms.

Testing & Debugging
XCTest Swift Testing Xcode Debugging SwiftUI Inspector swift-log
Networking & Server
Alamofire Moya swift-nio Vapor Hummingbird MongoKitten
App Architecture & Ecosystem
MVVM Clean Architecture Dependency Injection Xcode / VSCode / Emacs / Neovim DocC Swift Charts Swift Playgrounds CocoaLumberjack

GitHub Projects

Real, buildable projects to put on your own GitHub

Frequently Asked Questions

Common questions from people starting out with Swift & SwiftUI

Is Swift hard to learn?

Swift was designed to be approachable, with clean syntax and helpful compiler errors. The parts that trip people up most are optionals and, later on, structured concurrency — both are worth spending real time on rather than rushing past.

Should I learn UIKit or just go straight to SwiftUI?

For new projects, SwiftUI is the recommended starting point — it's declarative, has less boilerplate, and is where Apple's new APIs land first. UIKit is still worth knowing for maintaining older codebases or when you need functionality SwiftUI doesn't yet expose.

What's the difference between @State, @Binding, and @StateObject?

@State owns a simple value local to one view. @Binding is a reference to state owned elsewhere, letting a child view read and write it. @StateObject owns a reference-type observable object for the lifetime of the view that creates it, while @ObservedObject just observes one owned elsewhere.

Do I need a Mac to learn Swift and SwiftUI?

For SwiftUI and iOS development, yes — Xcode only runs on macOS. Server-side Swift with frameworks like Vapor can run on Linux, so you can learn core Swift language concepts without a Mac if needed.

Should I learn Core Data or SwiftData?

SwiftData is Apple's newer, Swift-native persistence framework and is the better starting point for new projects. Core Data is still widely used in existing codebases, so it's worth understanding if you'll be working on established apps.

How do I prepare for an iOS/Swift interview?

Be comfortable explaining optionals, value vs. reference types, and how SwiftUI's data flow works. Know the basics of async/await and ARC/memory management, and have a project you can walk through — architecture choices, state management approach, and trade-offs you made.

Track complete

From Swift syntax to a tested, persisted, animated SwiftUI app — that's the core of what employers expect from a Swift & SwiftUI developer. Keep building, and let the platforms and architectures you enjoy working with most pull you toward server-side Swift or a deeper app architecture next.

Where next?

Keep exploring by domain or drill into a single skill