Swift and iOS Development
Build and ship native iPhone apps with Swift and SwiftUI — from your first line to the App Store.
This course teaches the Swift language from scratch and then uses it to build real iPhone apps with SwiftUI, finishing with an app submitted to the App Store.
SwiftUI comes first throughout. UIKit gets one module, because every existing codebase you join will contain it and you need to recognise it — but new work is written in SwiftUI and that is where the time goes.
Be aware of one hard requirement before you start: iOS development needs a Mac. Xcode does not run on Windows or Linux, and there is no honest workaround. If you do not have access to one, the Kotlin Multiplatform course on this site builds for iPhone from any machine for most of its length, and is the better place to start.
You finish able to design, build, test and ship a native iOS app on your own.
Who this is for
- Developers who want to build for iPhone and iPad specifically
- Android developers adding a second platform
- Anyone with a Mac and an idea they want on the App Store
- Interns joining mobile client work
What you need first
- A Mac running a recent macOS. This is not negotiable — Xcode runs nowhere else.
- No Swift needed. The first four modules teach the language from nothing.
- Some prior programming in any language will make the early modules much faster.
- An Apple Developer account is only required for the final module, and costs money.
Tools you will use
By the end you can
- Write idiomatic Swift, including optionals, protocols and value types
- Build interfaces declaratively with SwiftUI
- Manage state correctly instead of fighting the framework
- Navigate between screens and pass data cleanly
- Call APIs and handle failure without freezing the interface
- Store data on device with SwiftData
- Use async/await without blocking the main thread
- Test and debug an app with Xcode's own tools
- Submit an app to the App Store and survive review
14 modules, 70 lessons
Work through these in order. Each lesson is short enough to finish in one sitting and ends with something to build, not a quiz.
- 1
Getting Started
Xcode, a running app on a simulator, and an honest look at what iOS development requires.
- What iOS development actually involvesComing soon
- Installing Xcode, and what it gives youComing soon
- Your first app on the simulatorComing soon
- Finding your way around XcodeComing soon
- Playgrounds: the fastest way to try SwiftComing soon
- 2
Swift Basics
The language, from variables to control flow.
- var, let, and why let comes firstComing soon
- Types, inference and annotationsComing soon
- Strings and interpolationComing soon
- if, guard, switch and loopsComing soon
- switch, and pattern matching worth the nameComing soon
- 3
Collections and Optionals
Arrays, dictionaries, and the feature that defines Swift.
- Arrays and setsComing soon
- DictionariesComing soon
- Optionals: the whole point of SwiftComing soon
- Unwrapping safely, and why you should never force itComing soon
- map, filter and reduceComing soon
- 4
Functions, Structs and Protocols
How Swift code is actually organised, and why structs come before classes.
- Functions, argument labels and defaultsComing soon
- Closures, and reading the syntax without fearComing soon
- Structs versus classes: value and referenceComing soon
- Protocols, and protocol-oriented designComing soon
- Extensions and genericsComing soon
- Errors: throws, try and ResultComing soon
- 5
SwiftUI Fundamentals
Describing an interface rather than assembling one.
- Declarative UI, and why it is differentComing soon
- Views and modifiersComing soon
- Stacks: VStack, HStack and ZStackComing soon
- Text, images and shapesComing soon
- Previews, and the fastest way to iterateComing soon
- 6
Layout and Styling
Making it look right on every device, including the small ones.
- How SwiftUI decides where things goComing soon
- Frames, padding and spacersComing soon
- Adapting to screen sizes and orientationComing soon
- Colour, dark mode and the system paletteComing soon
- Accessibility: Dynamic Type and VoiceOverComing soon
- Animation and transitionsComing soon
- 7
State and Data Flow
The part of SwiftUI people fight with, explained before you have to.
- @State and the rendering modelComing soon
- @Binding, and passing state downComing soon
- @Observable and shared modelsComing soon
- @Environment and dependency passingComing soon
- Choosing the right property wrapperComing soon
- 8
Lists and Navigation
The two things almost every app is made of.
- List, and rendering collectionsComing soon
- Identifiable, and why the compiler is askingComing soon
- NavigationStack and pushing screensComing soon
- Sheets, alerts and confirmation dialogsComing soon
- Tab bars and app structureComing soon
- Forms and user inputComing soon
- 9
Networking
Talking to an API without freezing the interface.
- URLSession and fetching dataComing soon
- Codable: JSON into Swift typesComing soon
- async/await, and the main thread ruleComing soon
- Loading, empty and error statesComing soon
- Remote images and cachingComing soon
- 10
Storing Data on Device
What survives the app being closed, and what should not.
- UserDefaults, and what it is not forComing soon
- SwiftData: models and the containerComing soon
- Querying and updating stored dataComing soon
- Relationships between modelsComing soon
- Files, and secrets in the KeychainComing soon
- 11
Meeting UIKit
One module, because every real codebase still contains it.
- Why UIKit is still everywhereComing soon
- View controllers and the lifecycleComing soon
- Using UIKit views from SwiftUIComing soon
- 12
Testing and Debugging
Finding problems before your users file a one-star review.
- Breakpoints, the debugger and the view hierarchyComing soon
- Unit testing with Swift TestingComing soon
- UI testsComing soon
- Instruments: memory, leaks and slow framesComing soon
- 13
Shipping to the App Store
The part tutorials stop just before, and the part that decides whether anyone uses your app.
- Certificates, provisioning and signing, demystifiedComing soon
- App Store Connect and app recordsComing soon
- TestFlight and real testersComing soon
- App Review: what gets rejected and whyComing soon
- Privacy labels, permissions and App TrackingComing soon
- 14
Capstone Project
Design, build, test and submit a complete app.
- The brief: a habit trackerComing soon
- Designing it before building itComing soon
- Building it screen by screenComing soon
- Polish, icons and launch screenComing soon
- Submitting itComing soon
Learning this with a mentor is faster
Our internship programme is free and fully remote. You get this curriculum, real project work, and code review from working developers.