Crunch Labs · Tier IISub-brand · Swift24 weeks · semesterGPL-3.0

Crunch Swift.

Twenty-four weeks of production-grade Apple-platform engineering. From Swift 6 under strict concurrency on a Linux laptop to a multi-platform SwiftUI + SwiftData app that syncs over CloudKit, monetises with StoreKit 2, drives Live Activities from a Vapor backend, and clears App Review on the first attempt. Open-source-first. Free, forever.

24weeks
Program length
864hrs
Total workload
24+1
Labs + capstone
$0
Tuition · always

§ I · The Program

iOS that ships.

Crunch Swift is the iOS and Apple-platform engineering specialization of the Code Crunch academy — a 24-week track authored for the Crunch Labs tier. It is built for engineers who want to take Apple-platform development seriously: not "build a to-do app in an afternoon", but Swift 6 under strict concurrency, SwiftUI rendered from layout internals, SwiftData synced to CloudKit, StoreKit 2 receipts verified server-side, and App Review cleared on the first submission.

You start on Linux. The first six weeks teach Swift the language and server-side Swift with Vapor — no Mac required, no Apple ID required, just the open-source toolchain from swift.org. From Week 7 you adopt Xcode, SwiftUI, and the simulator. From Week 15 the Apple Developer Program turns on for device deployment, push, and TestFlight. By Week 24 you have shipped a multi-platform app to TestFlight in five regions, survived a chaos drill, and written the runbook a future maintainer can read at three in the morning.

"This is not a 'build a to-do app in an afternoon' course. It is the curriculum we wish existed for engineers who want to take Apple-platform development seriously."— Crunch Swift, course README

§ II · Who It's For

Four engineers, one platform.

Swift is opinionated about its audience. C1 (Code Crunch Convos) is the floor — you should be able to ship one non-trivial product in a typed OOP language before you arrive.

No. 01

The Python or JS Engineer Going Native

Ships Django, FastAPI, Rails, or Node every day. Wants to move into native iOS without losing the engineering discipline. Starts on Swift on Linux, then adopts the Mac.

No. 02

The UI/UX-Minded Engineer

Finished C8 (Web Dev) and loves designing interfaces. Wants a typed, declarative UI system with first-class animation, gesture, and accessibility primitives. SwiftUI, taught layout-system up.

No. 03

The Cross-Platform Dev Wanting iOS Depth

Ships Flutter, React Native, or Kotlin Multiplatform today. Cannot yet hold their own in a senior iOS interview about navigation state, structured concurrency, or the SwiftUI diff algorithm. This track fixes that.

No. 04

The Senior Backend Building a Client

Runs the API. Wants the iOS client engineered with the same rigour as the server. Gets Vapor for the server-side Swift bridge, shared codable types, and a SwiftUI client with offline-first sync and conflict resolution.

§ III · Four Phases

From Linux Swift to App Review.

The arc of the program is composed in four phases — six weeks each — each building on the last. Weeks 1–6 run on any laptop; Weeks 7+ require a Mac.

Phase I · Wk. 01—06

Foundations

Swift the language, protocols and generics, structured concurrency, actors and Sendable, Vapor 4 server-side, shared SwiftPM packages. Runs on Linux, macOS, or WSL2 — no Apple ID needed.

Phase II · Wk. 07—12

SwiftUI & State

Xcode, the SwiftUI mental model, the Layout protocol, state ownership (@State, @Observable, @Environment, @Bindable), navigation, SwiftData, MVVM and TCA, Combine vs AsyncSequence. Mac + simulator required.

Phase III · Wk. 13—18

Production iOS

URLSession with retries and offline-replay, Keychain and CloudKit sync with conflict resolution, Instruments-driven performance, accessibility, CryptoKit and the Secure Enclave, APNs and StoreKit 2 with server-side receipt validation. Apple Developer membership required from Week 15.

Phase IV · Wk. 19—24

Capstone & Polish

Multi-platform (iOS, iPadOS, macOS, watchOS, visionOS), WidgetKit, App Intents, Live Activities and ActivityKit, Swift Testing on GitHub Actions, fastlane to TestFlight, App Review, chaos drill, demo day.

§ IV · The Curriculum

Twenty-four weeks, week by week.

Each entry corresponds to a folder in the GitHub repository with lecture notes, exercises, challenges, a quiz, homework, and a mini-project. Weeks 1–6 are Linux-runnable; Week 7 onward requires a Mac with Xcode 16+. Detailed acceptance criteria live in the syllabus.

01

Swift the Language, from a Typed-OOP Perspective

Toolchain install (Linux + Mac) · SwiftPM · the REPL · value vs reference types · optionals · if let / guard let · collections · the parts that map cleanly from Java/Kotlin/TS, and the parts that do not.

Lab 01

swift run wordfreq CLI with Swift Testing

02

Protocols, Generics, Error Handling

Protocol-oriented programming · associatedtype · some (opaque) vs any (existential) · type erasure · Result · throws/try · custom error enums.

Lab 02

Generic Cache<Key, Value> with TTL eviction

03

Swift Concurrency I — async/await, Structured Concurrency

async functions · Task · TaskGroup · async let · cancellation · priority · @TaskLocal · structured vs unstructured tasks · why DispatchQueue is the past.

Lab 03

Parallel link-checker CLI with TaskGroup

04

Swift Concurrency II — Actors, Sendable, Strict Concurrency

Actors · @MainActor · nonisolated · Sendable and @Sendable closures · reentrancy · Swift 6 strict-concurrency mode · removing data races the compiler now catches.

Lab 04

Migrate a callback KV-store to an actor under strict concurrency

05

Vapor — Server-Side Swift Fundamentals

Vapor 4 project layout · routing · middleware · Content protocol · Fluent ORM (Postgres) · migrations · structured logging with swift-log · Dockerized test runs.

Lab 05

notes-api Vapor service with Postgres and bearer auth

06

Shared Types, swift-nio Basics, Phase I Integration

Shared Models SwiftPM package · swift-nio event loops · Hummingbird alternative · OpenTelemetry-Swift basics · swift-collections · the codable bridge that pays for the rest of the track.

Lab 06

notes-cli + extracted NotesCore shared package

07

Xcode, the SwiftUI Mental Model, First App

Xcode tour · schemes · asset catalogs · App and Scene · the View protocol · body as a function of state · the Layout protocol · modifier order. Mac + Xcode 16+ from this week onward.

Lab 07

"Hello, Notes" on iPhone SE and iPad Pro 13"

08

State: @State, @Observable, @Environment, @Bindable

Property wrappers · the Observation framework · state ownership rules · view identity · the id() modifier · onChange(of:) · the SwiftUI re-render storm walkthrough.

Lab 08

Full CRUD via @Observable NotesStore

09

Navigation, Deep Links, Scenes

NavigationStack · NavigationSplitView · value-typed navigation · navigationDestination · deep links · universal links · state restoration · SceneStorage · AppStorage.

Lab 09

Sidebar-detail on iPad/Mac, stack on iPhone, notes://open/:id

10

SwiftData — The Modern Persistence Story

SwiftData macros (@Model, @Attribute, @Relationship) · ModelContainer · @Query · #Predicate · lightweight migrations · performance footguns · Core Data interop.

Lab 10

Migrate Notes to SwiftData with many-to-many Tag

11

App Architecture — MVVM, TCA, and the Case Against VIPER

Plain SwiftUI + @Observable · MVVM as a discipline · The Composable Architecture (TCA) · unidirectional data flow · reducers, effects, dependencies · when "no architecture" is correct.

Lab 11

Search-and-filter feature in MVVM and TCA, with ADR

12

Combine, async/await, and AsyncSequence

Combine fundamentals · operators · Combine in SwiftUI (onReceive) · AsyncSequence and AsyncStream · bridging Combine to async/await · back-pressure comparison · debounced search.

Phase II Project

"Notes v1" — iPhone + iPad + Mac with SwiftData, deep links, XCUITest

13

URLSession and the Networking Stack

URLSession configuration · async URLSession APIs · typed errors · Codable decoding strategies · retries with exponential backoff and jitter · request signing · request/response logging middleware.

Lab 13

NotesClient actor with offline-first write-replay against Vapor

14

Persistence II — Files, Keychain, SwiftData + CloudKit

FileManager · sandbox · App Group containers · Keychain (kSecClass, access groups) · atomic writes · SwiftData + CloudKit sync · conflict resolution policy · schema-versioned migrations.

Lab 14

CloudKit sync + deliberate two-device edit conflict

15

On-Device Deployment, Performance with Instruments

Code signing · provisioning profiles · device deployment · Instruments (Time Profiler, Hangs, Hitches, Allocations, Memory Graph) · the 16.67 ms budget · os_signpost · MetricKit. Apple Developer membership required from this week.

Lab 15

Profile Notes v1 on device, fix a real hang and a real hitch

16

Accessibility and Inclusive Engineering

VoiceOver · the accessibility tree · accessibilityLabel/Value/Hint · Dynamic Type · @ScaledMetric · color contrast · reduce motion · haptics (UIImpactFeedbackGenerator, CHHapticEngine) · the Accessibility Inspector.

Lab 16

Clear every Accessibility Inspector failure on Notes v1

17

Security, ATS, CryptoKit, Secure Enclave

ATS configuration · certificate pinning · Keychain access control · LocalAuthentication · CryptoKit (AES.GCM, Curve25519, SHA256) · the Secure Enclave (SecureEnclave.P256) · sensitive log scrubbing.

Lab 17

Pin a cert, sign each request with a Secure-Enclave key

18

Push Notifications, StoreKit 2, MetricKit

APNs auth keys · device tokens · Notification Service Extensions · communication notifications · StoreKit 2 (Product, Transaction) · auto-renewing subscriptions · server-side receipt validation · Family Sharing · refunds.

Phase III Project

"Notes Pro v1" — APNs + NSE + StoreKit 2 paywall, server-verified

19

Multi-Platform — iOS, iPadOS, macOS, watchOS, visionOS

SwiftUI multi-platform targets · #if os(...) discipline · Mac Catalyst vs SwiftUI-on-macOS-native · watchOS (WKApplication, complications) · visionOS basics (RealityKit, ImmersiveSpace, volumetric windows).

Lab 19

Notes Pro v1 running on four Apple platforms, side by side

20

Widgets, App Intents, Shortcuts, Spotlight

WidgetKit · TimelineProvider · supported families · Lock Screen widgets · App Intents (the new contract) · Siri suggestions · Shortcuts gallery · Spotlight indexing with CSSearchableIndex.

Lab 20

Home + Lock Screen widget; AddNote App Intent in Siri

21

Live Activities, ActivityKit, Background Processing

ActivityKit (ActivityAttributes, ContentState) · Dynamic Island layouts (compact, minimal, expanded) · push-to-start Live Activities · BackgroundTasks (BGAppRefreshTask) · low-power mode and how it changes everything.

Lab 21

"Shared-note edit in progress" Live Activity driven by Vapor push

22

Testing at Scale, CI on GitHub Actions, fastlane

XCTest vs Swift Testing (@Test, #expect) · XCUITest · snapshot testing · xcodebuild + xcbeautify · GitHub Actions macos-14 runners · fastlane (gym, pilot, match) · App Store Connect API.

Lab 22

Commit-to-TestFlight pipeline on GitHub Actions

23

Capstone Build Sprint

Capstone integration · code review · architectural decision records · the production-runbook.md · the interview-prep system-design pack · daily 30-minute instructor review.

Lab 23

Capstone integration week — everything from Phases I–III

24

TestFlight, App Review, Chaos Drill, Demo Day

App Store Connect metadata · screenshots (1290×2796 and friends) · App Privacy · App Review (the actually-enforced guidelines) · TestFlight external beta · expedited review · chaos drills · the postmortem.

Capstone

Offline-First Cross-Device Productivity Suite — TestFlight × 5 regions

§ V · The Toolchain

Open-source first, Apple-aware.

Swift the language is open-source. Vapor and the toolchain run on Linux. Where Apple's stack is the only path — SwiftUI, SwiftData, CloudKit, StoreKit, App Review — we name the trade explicitly. No proprietary IDE plugins are required.

Language
Swift 6
strict concurrency · Apache-2.0
UI
SwiftUI
declarative · multi-platform
Persistence
SwiftData
macros · CloudKit sync
Server
Vapor 4
Swift on Linux · Postgres
Architecture
TCA
Point-Free · unidirectional
Networking
swift-nio · URLSession
async + structured concurrency
Monetisation
StoreKit 2
subscriptions · server-verified
Intents
App Intents
Shortcuts · Siri · Spotlight
Sync
CloudKit
multi-device · conflict resolution
IDE
Xcode 16+
free · simulator bundled
Profiler
Instruments
Time Profiler · Hangs · Allocations
Delivery
fastlane
TestFlight · App Store Connect API

§ VI · Skills You Will Carry

What you walk away with.

By the end of Week 24, you can do each of the following — credibly, on a real device, in front of a real reviewer.

  • Write Swift 6 under strict concurrency — explain Sendable, actor isolation, @MainActor, and structured task cancellation.
  • Design a SwiftUI screen from the layout system up, and debug a runaway re-render.
  • Pick correctly between @State, @Observable, @Environment, and @Bindable — and defend the choice in code review.
  • Model an offline-first data layer with SwiftData, sync over CloudKit, and resolve multi-device edit conflicts deterministically.
  • Move fluently between Combine and async/await + AsyncSequence, with back-pressure intuition.
  • Build a NavigationStack + NavigationSplitView graph that survives state restoration, deep links, and universal links.
  • Ship a URLSession networking stack with structured concurrency, typed errors, retry-with-jitter, request signing, and cert pinning.
  • Implement and articulate three architectures — plain SwiftUI, MVVM, and TCA — and write an ADR defending the choice.
  • Diagnose a hitch, a hang, and a memory leak in Instruments, and ship a fix backed by a flame graph.
  • Stand up an iOS CI pipeline on GitHub Actions with Swift Testing, XCUITest, snapshot tests, and a fastlane lane to TestFlight.
  • Ship a feature that uses WidgetKit, App Intents, ActivityKit, and a Background Task — and prove they work under low-power mode.
  • Implement a StoreKit 2 subscription with auto-renew, Family Sharing, restore-purchase, and server-side receipt validation against a Vapor backend.
  • Generate a Secure-Enclave key, sign requests end-to-end, and verify the signature in the server.
  • Stand up a Vapor service on Linux with Postgres, structured logging, and a Dockerized integration test.
  • Submit an app to App Review, pass on the first attempt, and instrument the live build with MetricKit.
  • Pass a senior iOS technical interview.

§ VII · The Capstone

One suite. Five platforms. Shipped.

Week 24 closes a six-week capstone — the kind a real product team would scope across a quarter. Architecture diagram, public TestFlight in five regions, signed StoreKit subscription, Live Activity from a real-time push, chaos-drill postmortem.

Capstone Brief

Offline-First Cross-Device Productivity Suite

A SwiftUI productivity suite running on iPhone, iPad, and Mac with a watchOS companion and a visionOS window, backed by a Vapor service on Linux. The system must work fully offline, sync across devices over CloudKit (with the Vapor backend as a fallback), monetise via a StoreKit 2 subscription validated server-side, expose App Intents to Shortcuts and Siri, render Widgets on the Home and Lock Screen, drive a Live Activity from a real-time event, and survive a documented chaos drill.

  • SwiftUI multi-platform across iPhone, iPad, Mac, watchOS, and visionOS.
  • SwiftData persistence with CloudKit sync and a deterministic conflict-resolution policy.
  • A Vapor backend deployed to a public URL with Postgres, structured logging, and OpenTelemetry export.
  • StoreKit 2 subscription with server-side receipt validation and full edge-case coverage (refund, downgrade, billing retry).
  • Widgets, an App Intent in the Shortcuts gallery, and a Live Activity driven by an APNs push from your backend.
  • TestFlight external beta in at least five regions (US, UK, IN, BR, JP) and a one-week beta cohort.
  • A chaos drill (offline-edit conflict, subscription edges, or APNs auth-key rotation) with a written postmortem.
  • An on-call production-runbook.md another engineer can read at 3 AM, plus a five-minute walkthrough video.

§ VIII · Getting Started

Three commands. Then begin.

The first six weeks need nothing more than a terminal and the open-source Swift toolchain — Linux, macOS, or Windows + WSL2 all work. The Mac, Xcode, and Apple Developer Program turn on later, when the schedule demands them.

# 1. Clone the curriculum repository
git clone https://github.com/CODE-CRUNCH-WORLDWIDE/C20-CRUNCH-SWIFT.git
cd C20-CRUNCH-SWIFT

# 2. Verify the Swift toolchain (Linux / macOS / WSL2)
swift --version                          # expect Swift 6.x
swift package init --type executable     # sanity-check SwiftPM

# 3. Open Week 1 README and begin
$EDITOR curriculum/week-01-swift-language/README.md

# Note: Weeks 1–6 are Linux-friendly Vapor + Swift.
# From Week 7, install Xcode 16+ on a Mac (free, Mac App Store).
# The iOS Simulator covers everything until Week 15.

Need the full hardware reality, prereq map, or pre/post-track diagram? See the README.

§ IX · Frequently Asked

Questions, anticipated.

Do I need a Mac to start?

Not for Weeks 1–6. Swift the language and the Vapor backend run on Linux, macOS, or Windows + WSL2 with the open-source toolchain from swift.org. From Week 7 onward you need a Mac — Apple Silicon strongly recommended (M1 or newer), 16 GB RAM realistic minimum — with Xcode 16+ installed free from the Mac App Store.

Do I need an Apple Developer account?

Only from Week 15, when we deploy to a physical iPhone or iPad for device-only features (camera, ARKit, BLE, real-device push, Live Activities on a physical Lock Screen) and for TestFlight and App Review in Phase 4. Phases 1 and 2 use the iOS Simulator, which is bundled with Xcode and free. We give two weeks of lead time so the $99/yr membership lands when the schedule needs it, not on day 1.

Why Swift over Kotlin? How do I choose?

If you want to ship to iPhone, iPad, Mac, Apple Watch, and Vision Pro from one Swift codebase — take C20. If you want to ship to the Android ecosystem with Jetpack Compose — take C21 (Crunch Droid). They overlap on architecture (MVVM, unidirectional state, offline-first sync) and diverge on every platform API. Many graduates do both in sequence — that is Pathway B in the Crunch Labs Charter.

How does this relate to C21 — Crunch Droid?

They are siblings. C20 owns Swift, SwiftUI, and the Apple platforms; C21 owns Kotlin, Jetpack Compose, and Android. The architectural spine — typed state, declarative UI, offline-first sync, server-side validation — is intentionally parallel so the second track is cheaper to take. Pick one to start. Many engineers take both, in sequence, not in parallel.

Server-side Swift — is that a real thing?

Yes. Vapor 4 on Linux is production-grade — Postgres via Fluent, structured logging via swift-log, OpenTelemetry export, and a Dockerized integration test. We use it because (a) it gives engineers without a Mac six real weeks of Swift work, and (b) sharing a SwiftPM Models package between server and SwiftUI client is the move that pays for the rest of the track. If your capstone outgrows Vapor, C16 (Web Backend) and C17 (Python Advanced) deepen the server side.

TCA or MVVM — which architecture should I bet on?

Both. Week 11 has you implement the same feature in plain SwiftUI + @Observable MVVM and in The Composable Architecture, then write an ADR defending the choice. Plain SwiftUI is correct for small surfaces; MVVM is the discipline most teams reach for; TCA earns its complexity on large reducer-heavy domains. The skill is not "knowing TCA" — it is choosing deliberately and being able to defend the choice on a senior-interview whiteboard.

§ X · Begin

Twenty-four weeks from now,
you will have shipped to App Review.

Open the repository. Read Week 1. The simulator is free.