Member-only story
How to Build a Custom Onboarding Flow in SwiftUI (Step by Step)
Today we’re going to build a custom onboarding flow in SwiftUI from scratch! Onboarding screens are a key part of a great first-time experience — guiding your users through your app’s main features.
Free Video course
Data Model
We will begin with OnboardingStep struct which represents an onboarding step with associated content and styling.
struct OnboardingStep: Identifiable, Equatable {
let id = UUID()
let imageName: String
let title: String
let description: String
let accentColor: Color
static func == (lhs: OnboardingStep, rhs: OnboardingStep) -> Bool {
lhs.id == rhs.id
}
}
In this OnboardingStep struct, we are conforming to two protocols — Identifiable and Equatable — and it’s worth explaining why we’re doing this. Identifiable lets SwiftUI know that each onboarding step has a unique identifier (id) that can be used to efficiently track, differenciate, and update items in a ForEach. Without Identifiable, SwiftUI…