New: Roadmaps ordered paths through our cheat sheets and flashcards, so you always know what to study next.
Explore themSee what's new on GitHubFrom your first lines of Swift to a signed app in the App Store.
A 15-step learning path. Follow it in order, or jump to what you need.
This path is for anyone who wants to build native apps for iPhone and iPad, starting from your first lines of Swift and ending with an app you can actually submit to the App Store. Plan on about 7 to 11 weeks at a few hours a week, moving from the language and Xcode itself through UIKit and SwiftUI screens, real network data, local persistence, and the testing, performance, and security work that turns a demo into something you'd ship. It stays inside Apple's own toolchain: the Android side of mobile development has its own path, and cross-platform frameworks like React Native or Flutter are out of scope here. By the end you can build a screen in both UIKit and SwiftUI, wire it to a real API with data that survives a restart, and submit a signed build through App Store Connect.
No prior experience needed. Start from zero.
Structs, optionals, and closures here are the raw material every screen in this path builds on, and you can read straight through it today with nothing installed, though the optionals table is where almost everyone gets stuck at least once.
Debugging, breakpoints, and Instruments here turn the syntax from step 1 into something you can actually run on a simulator and watch fail in real time.
View controllers and the Auto Layout constraints here are where declarative habits from other languages stop working, and the lifecycle callbacks in this table catch nearly everyone off guard once, so expect to come back to it.
You can write real Swift, run it in Xcode, and wire up a screen with UIKit's view controllers. Next up: SwiftUI's declarative side and the data your app actually needs.
Finish this section to unlock.
+100 XP
@State and @Observable pick up where step 3's manual view wiring left off, redrawing a screen the moment its data changes instead of you pushing every update by hand.
HTTP methods, status codes, and auth flows here are exactly what URLSession calls under the hood once your SwiftUI screens from step 4 need real data instead of preview mocks.
Data fetched in step 5 disappears the moment your app closes unless you save it, and the @Model macro and NSFetchRequest patterns here are how you make it stick around.
You can build the same kind of screen two ways, pull real data over the network, and keep it around after the app closes. Next up: organizing all of it so it doesn't collapse into one giant view controller.
Finish this section to unlock.
+100 XP
MVVM and coordinator patterns here give the screens, network calls, and persistence from steps 4 through 6 a consistent home instead of one view controller holding everything.
XCTest and UI testing patterns here let you prove the view models from step 7 behave correctly before a user finds the bug for you.
Startup time and memory profiling here catch the leaks and slow launches that good architecture from step 7 alone won't prevent, using the same Instruments panel from step 2.
Keychain storage and API hardening here protect the exact data flows you built in steps 5 and 6, and App Review checks several of these before your app ever ships.
You can organize a codebase with MVVM, prove it works with tests, and catch the leaks and security gaps that turn a demo into a liability. A few minutes of due flashcards keeps the Swift and UIKit fundamentals from chapters 1 and 2 fresh while you work through this one.
Finish this section to unlock.
+100 XP
Reach for this if you're shipping on a schedule: Fastlane scripts the code signing and build steps from step 2 so a release stops meaning an afternoon of manual clicking in Xcode.
Take this if you want your app usable by everyone: VoiceOver labels and Dynamic Type here apply directly to the UIKit and SwiftUI screens from steps 3 and 4, and WCAG 2.2 makes several of these legally required in the EU.
Add this if you're heading toward spatial or camera-driven features: plane detection and world anchors here sit on top of the rendering fundamentals from step 3's view hierarchy.
TestFlight tracks and code signing here turn the tested, secured build from steps 8 through 10 into something real testers can install before it ever reaches App Review.
Every screen, data layer, and safeguard you've built since step 1 becomes a real product here, where you submit for review, set pricing, and watch the analytics once it ships.
You can take an app from a blank Swift file all the way through TestFlight and App Store review, the exact craft the iOS Developer badge certifies.
Finish this section to unlock.
+100 XP
Finish every required step, at least 70% of them genuinely done (not skipped), to earn this badge and 500 XP.