Making It Real - Production-Ready Swift

Series 1 built the Landmarks app from a tutorial into a deployed, tested full-stack Swift application. This series picks up exactly where it left off: the app works, the server runs, the tests pass. Now it's time to make it something you'd actually ship to users.

Every post includes a companion GitHub repo with the complete working code.

The Series

1. Shared Swift Packages: Unifying Your Client and Server Models

Coming March 16, 2026

Set up a development monorepo and extract shared API models into a Swift package that both the iOS app and Vapor backend consume. Replace duplicated types with a single source of truth.

2. User Authentication with Vapor and SwiftUI

Coming March 23, 2026

Add JWT-based authentication to the Vapor backend. Build login and signup screens in SwiftUI. Store tokens securely in Keychain using the closure-based service pattern.

3. Push Notifications with APNSwift

Coming March 30, 2026

Send push notifications from the Vapor backend using APNSwift. Register devices, store tokens server-side, and deep link users straight to the right screen using the Navigator from Series 1.

4. Offline Storage with SwiftData

Coming April 6, 2026

Use SwiftData for user-mutable local state like favorites and reservations while keeping the tiered cache for read-only server data. The best of both persistence strategies.

5. Background Sync and Conflict Resolution

Coming April 13, 2026

Handle the hard part of offline-first: what happens when the user makes changes offline and the server has different data? Build a sync engine with conflict detection.

6. Structured Logging and Health Checks in Vapor

Coming April 16, 2026

Add production observability to the Vapor backend. Structured logging with swift-log, a health endpoint for load balancers, and request timing middleware.

7. Performance Profiling with Instruments

Coming April 20, 2026

Profile the Landmarks app with Instruments. Find real bottlenecks in image loading, list scrolling, and network calls. Fix them with lazy loading and async prefetching.

8. Release Management with GitHub Actions and Stable Branches

Coming April 23, 2026

Build a clean release pipeline using stable branches, automated merge-back PRs, and GitHub prereleases. No Fastlane, no Ruby - just GitHub Actions and Xcode.

9. Feature Flags and Gradual Rollouts

Coming April 27, 2026

Build a provider-agnostic feature flag layer with property wrappers that auto-update your UI. Works with any backend - LaunchDarkly, Firebase, Grantiva, or your own.