Skip to content
C.W.K.
Stream
← C.W.K. Quests
🐦

Swift Quest

New: 2026-09-15Updated: 2026-09-15

Build for the Mac, the iPhone, the iPad and the Watch the way a working family of apps actually does — and ship it to a real device through TestFlight

Swift Quest is the foundation under every native app in the CWK family: the Swift that Apple work needs, the concurrency rules that crash apps when ignored, packages and projects, AppKit and SwiftUI, signing and trust, launchd, the universal iOS app, extensions, the Watch, talking to an engine at home, and delivery through TestFlight. Every lesson says which part is Apple's law and which part is our house rule.

13 tracks · 81 lessons · ~21h · difficulty: intermediate-to-advanced

Level 0Bundle Opener
0 XP0/81 lessons0/17 achievements
0/100 XP to next level100 XP to go0% complete
This is not a Swift primer and not a tour of one app. It is the craft a family of real apps stands on — menu-bar utilities, a document editor, a terminal, a file workbench, capture apps on the iPhone and the wrist — taught as two kinds of rules. Apple's law binds anyone who ships on the platform: a bundle is a folder, a signature is an identity, a permission belongs to a designated requirement, an App ID exists before a record does, the main thread has one door. Our house rules are choices, and each one comes with the reason it was made and what it costs: SwiftPM-only builds on the Mac, a self-signed identity that keeps permissions alive across rebuilds, XcodeGen for iOS, Swift 6 language mode, apps as thin windows onto an engine, and TestFlight as the only delivery that counts for iPhone, iPad and Watch apps. The lessons are built from incidents that actually happened — a closure that trapped on a realtime audio thread while every suite was green, a settings file wiped by one new field, a share extension that never answered, a watch payload that never arrived. Thirteen tracks, eighty-one lessons, real Swift, XcodeGen and shell. One up-front condition, stated plainly: this quest assumes a paid Apple Developer Program membership. If saving 99 dollars a year matters more than weeks of free-provisioning workarounds, this quest is not for you — the membership is not a tribute to Apple, it is the cheapest tool in the whole toolchain for what it unlocks.

Tracks

  1. 01🗺️The Map Before the Code

    0/6 lessons

    Toolchains, bundles, signatures, and the line between Apple's law and a house rule

    Before a single view, get the ground under your feet right. Why the family moved from web shells to Swift, which of the four "Swift versions" you actually mean, what an app bundle really is, why macOS identifies your app by its signature, how this quest labels Apple's law against our house rules — including the paid membership it assumes — and the specific ways coding agents go wrong on Apple platforms.

    Lesson list (6)Quiz · 4 questions
  2. 02🐦The Swift Apple Work Needs

    0/6 lessons

    Values and types, honest optionals, delegates that survive, errors that name themselves, Codable as migration

    Not a Swift primer — the specific Swift that decides whether an Apple app keeps its users' data. Structs for facts and classes for identity, enums that make wrong calls impossible, optionals that do not quietly swallow a missing entitlement, delegates that are usually weak and always single, errors that carry their own remedy, Codable documents that tolerate the files older builds wrote, and strings and timestamps that look equal while their bytes disagree.

    Lesson list (6)Quiz · 4 questions
  3. 03🧵Concurrency and Isolation

    0/7 lessons

    The boss track: language modes, actors, Sendable, and the closure that trapped off the main thread

    The track where Apple apps actually crash. Why the main thread is a room with one door, why Swift 5 and Swift 6 language modes make the same source mean different things, how actors, @MainActor and Sendable meet frameworks designed before them, the realtime-thread crash that no Simulator could reach, Swift 6.2's main-actor-first defaults, why every await is a door someone can close, and why blocking work must never sit on the cooperative pool.

    Lesson list (7)Quiz · 5 questions
  4. 04📦Packages and Projects

    0/6 lessons

    Package.swift, C shims, path dependencies, XcodeGen, three test styles, and one package for many apps

    How Apple code is organized and built outside the Xcode UI. Reading and writing Package.swift, wrapping a C API in a one-file target, the four ways a path dependency lies to you, why project.yml is the source of every iOS project and the pbxproj is output, which of Swift Testing, XCTest and a self-test executable does which job, and how one package serves a Mac app, an iPhone app and a watch app without a green host build hiding broken platform code.

    Lesson list (6)Quiz · 4 questions
  5. 05🪟AppKit and SwiftUI on the Mac

    0/6 lessons

    Four app shapes, launch races, bridged views, observation, the responder chain, and where AppKit still wins

    How real Mac apps combine AppKit and SwiftUI. The four shapes the family's apps take and how to choose one, where an app begins and how launch and quit can race your code, who owns an AppKit object inside SwiftUI, why @Observable replaced ObservableObject after a microphone button that looked broken, how a key press finds its handler, and the text, split-view, drag and window-chrome details that keep the biggest apps in AppKit.

    Lesson list (6)Quiz · 4 questions
  6. 06🔏Bundles, Signing and Grants

    0/6 lessons

    From a build product to a signed app, the requirement that names it, a self-signed identity on purpose, TCC, Keychain ACLs, and the roads not taken

    What turns a compiled executable into an app macOS will remember. How a build script assembles and signs a bundle, what a designated requirement is and why an ad-hoc signature changes it on every build, why the family signs every Mac app with one self-signed identity and what that costs, how TCC attributes permissions to the responsible process, why a Keychain item keeps trusting the build that created it, and what the hardened runtime, notarization and the App Sandbox actually do before you decide to leave them off.

    Lesson list (6)Quiz · 4 questions
  7. 07🏛️Living as a macOS Citizen

    0/6 lessons

    LaunchServices, launchd agents, the GUI session versus ssh, menu-bar utilities, global hotkeys, and URL schemes

    What a Mac app has to get right once it lives alongside the system instead of inside Xcode. How LaunchServices finds and launches apps and why /Applications is one slot every checkout shares, how a LaunchAgent keeps a utility alive without resurrecting it after a Quit, what an ssh session cannot do and how remote tooling reaches the GUI session anyway, why a healthy menu-bar app can have an icon nobody can see, how global hotkeys are registered and named, and why a URL scheme must never carry a command.

    Lesson list (6)Quiz · 4 questions
  8. 08📱The Universal iPhone and iPad App

    0/6 lessons

    One target for both devices, a lifecycle where backgrounding is normal, UIKit for text, honest permission strings, Data Protection, and actions on a tap

    How the family builds one app for the iPhone and the iPad. Why a single universal target adapts by size class and why a selected row must never vanish from a collapsed split view, how a thin client treats backgrounding as the normal case and why an update can move the app's container, where UIKit's text system is still needed and how Korean composition constrains an editor, why a missing usage string terminates the app and a present one can still mislead, how Data Protection decides when the app can read its own files, and why every row's actions open on a tap.

    Lesson list (6)Quiz · 4 questions
  9. 09🧩Reaching Outside the App

    0/6 lessons

    App Groups, the share extension, App Intents, widgets and Live Activities, push notifications, and the camera

    The doors a native app opens that a web page cannot. How an App Group gives every target that shares the entitlement one drop box, and why an unsigned build silently has none; how a share extension is offered, decides what an attachment is, loads it with a deadline and never succeeds silently; how App Intents reach Siri, Shortcuts and the Action Button and why execution must be proven on a device; what a widget should and should not show and how Live Activities start by push; the silent failures of APNs environments, keys and delegates; and the camera as a capture surface with photos downscaled before they leave the phone.

    Lesson list (6)Quiz · 4 questions
  10. 10On the Wrist

    0/7 lessons

    A five-second surface, the embedded watch target, WatchConnectivity with the phone as engine, the wrist outbox, dictation, the complication as a button, and the Action Button

    How a family app becomes a thought captured in five seconds on a watch. Why the wrist has one door and every status line speaks only from facts it holds, how the watch app and its complication ride inside the iOS bundle with explicit Info.plists the upload gate checks, how WatchConnectivity pairs a durable transfer with a doorbell message through one retained delegate, why the watch keeps its own queue and lets go only on didFinish, how dictation opens with nil suggestions and switches language with a swipe up, why a complication is a button with no count, and how the Action Button reaches an app through a published shortcut and a one-shot launch request.

    Lesson list (7)Quiz · 4 questions
  11. 11🏠Talking to the Engine at Home

    0/6 lessons

    Thin clients, hardened URLSession, the lone ATS key, a Swift engine behind Serve twins, WebSockets that reconnect honestly, and an outbox that never loses a capture

    How a family app reaches the engine that owns its record. Why the engine stays on one Mac at home and the app is a thin client over the tailnet, how a URLSession call refuses redirects and enforces a byte budget while reading, what App Transport Security blocks and why its blanket key must stand alone, why a Swift engine behind a Tailscale Serve twin listens with bind(2), how a WebSocket client tells a dead peer from a quiet one and reconnects without replaying commands, and how an outbox keeps offline captures safe through retries, duplicates and app updates.

    Lesson list (6)Quiz · 4 questions
  12. 12✈️Shipping Through TestFlight

    0/7 lessons

    Delivery as four facts, identifiers in order, unattended signing, build numbers, an export that cannot lie, gates on the artifact, and reading what is installed

    How a family iOS build gets from a commit to a device. Why TestFlight, not a cable install, is delivery and why a report names one of four facts, why the archive registers identifiers before App Store Connect chooses one, how a pipeline authenticates and signs with nobody at the keyboard, where build numbers live and what the rolling upload cap does, how to archive and upload so a failed export can never print success, which checks read the archive before Apple does, and how processed, assigned and installed are each verified.

    The TestFlight app on the owner's iPhone under Currently Testing: cwkRekindle, cwkFirebrand, CWK Smolder, cwkLoomis, cwkPippa, cwkWaystone, cwkVesta and cwkForge, each showing a version, a build number and 90 days.
    Delivery, seen from the phone: every family iOS app is a TestFlight build that updates over the air.
    Lesson list (7)Quiz · 4 questions
  13. 13🔬Proof and the Fleet

    0/6 lessons

    Green is not exercised, the installed app under deadlines, reading a real device, one build shipped as verified copies, measurement over narrative, and the whole path from an empty folder

    How the family knows that what it shipped works, and says only what it knows. Why a green suite covers only what the hardware and tests exercised and a skip must never read as a pass, how an installed-app gate launches the real bundle with a deadline on every wait, how to read a TestFlight phone over the cable when a share does nothing, how one Mac builds and every other Mac receives verified copies with the right quit policy, why the start time of a process beats a plausible story, and the whole path from an empty folder to a build installed on the phone.

    Lesson list (6)Quiz · 4 questions
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.