iOS Development
Build iPhone apps with Swift and SwiftUI: state, navigation, networking, concurrency, architecture and shipping to the App Store.
- 01
SwiftUI Basics
Build your first SwiftUI screens from views, modifiers and stacks, understand why modifier order matters and how layout decides sizes, and make a screen react to taps.
7–25 min beginner Junior & senior
- 02
State and Data Flow
Decide where each piece of SwiftUI state lives, with @State, @Binding, @Observable, @Bindable and @Environment, and avoid the bugs that reset or freeze your screens.
5–35 min beginner Junior & senior
- 03
Lists and navigation
Show data with List and ForEach, navigate with NavigationStack and value-based links, edit lists safely, and drive navigation from state for deep links and restoration.
5–30 min beginner Junior & senior
- 04
Networking with URLSession and Codable
Load JSON from an API with URLSession and async/await, decode it with Codable, and handle status codes, loading states, errors and cancellation in SwiftUI.
5–30 min beginner Junior & senior
- 05
Swift Concurrency: actors and Sendable
Run work in parallel with async let and task groups, protect shared state with actors, keep UI code on the main actor, and understand Sendable and the Swift 6 data-race checks.
6–30 min intermediate Junior & senior
- 06
Persistence with SwiftData
Save data on the device with SwiftData, from @Model classes and @Query in SwiftUI to filters, sorting, relationships and delete rules, plus the production parts: background imports with @ModelActor, unique attributes and schema migrations.
4–30 min intermediate Junior & senior
- 07
UIKit for SwiftUI developers
Read and write the UIKit code most iOS apps still contain, with view controllers and their lifecycle, Auto Layout in code, collection views with diffable data sources, delegates and target-action, and bridge both ways with UIViewRepresentable and UIHostingController without update loops or leaks.
4–25 min intermediate Junior & senior
- 08
Architecture: MVVM, TCA and coordinators
Choose an architecture for a SwiftUI app, from plain views with @Observable models to MVVM view models owned with @State, The Composable Architecture with reducers, effects and exhaustive tests, and a router or coordinator for navigation, with the trade-offs of each.
4–20 min intermediate Junior & senior
- 09
Dependency injection
Give iOS code its dependencies instead of letting it reach for singletons, with protocols and initializer injection, a composition root in the App struct, SwiftUI's environment and the @Entry macro, structs of closures as lightweight clients, and libraries such as swift-dependencies, plus the crashes and leaks to avoid.
4–25 min intermediate Junior & senior
- 10
Testing with Swift Testing and UI tests
Write fast unit tests for an iOS app with Swift Testing (@Test,
4–25 min intermediate Junior & senior
- 11
Performance and Instruments
Find and fix what makes an iOS app slow, measuring release builds on a device with Instruments (Time Profiler, Hangs, the SwiftUI instrument, Allocations), keeping SwiftUI bodies cheap with stable identity, moving work off the main actor for real, speeding up launch, and catching regressions with signposts, XCTest metrics and MetricKit.
4–25 min advanced Junior & senior
- 12
Memory leaks and retain cycles
Find and fix the retain cycles that keep iOS screens alive after they close, in closures, Combine subscriptions, timers, notification observers and long-running Tasks, and catch leaks with Xcode's memory graph, Instruments and a one-line test.
4–25 min intermediate Junior & senior
- 13
App lifecycle and background tasks
Know when your iOS app is active, inactive, backgrounded, suspended or terminated, save at the right moment, finish work after the user leaves, and schedule background refreshes, processing and transfers that the system will actually run.
4–30 min intermediate Junior & senior
- 14
Push notifications
Ask for notification permission at a moment users say yes, register with APNs and keep the device token current, show notifications in the foreground, open the right screen when one is tapped (even on a cold start), add actions, and enrich or decrypt content with a Notification Service Extension.
4–25 min intermediate Junior & senior
- 15
Accessibility
Make a SwiftUI app work with VoiceOver, Dynamic Type, Voice Control and other assistive settings, with meaningful labels and traits, grouped elements and custom actions, layouts that grow with text size, color and motion that respect user settings, and audits that catch regressions automatically.
4–25 min intermediate Junior & senior
- 16
TestFlight and App Store release
Ship an iOS app from Xcode to users, with signing certificates and provisioning profiles, build numbers, build configurations for staging and production, TestFlight internal and external testing, App Store review and its common rejections, privacy labels and manifests, and phased releases you can pause but not roll back.
3–20 min intermediate Junior & senior