Blog
March 7, 2026
Visual Regression Testing with Grantiva and Stateful Mocks
Use Grantiva's YAML-based visual regression testing with the MockReservationStore pattern to test real user flows without a running server.
March 2, 2026
Wrapping Third-Party Dependencies in Swift
How closure-based service wrappers protect your app from vendor lock-in and make third-party SDKs testable.
February 28, 2026
Testing the Landmarks App with Dependency Injection
The closure-based DI pattern makes the iOS app trivially testable. Add a Reservation feature and write tests that prove it works without hitting any server.
February 27, 2026
Adding Reservations to Your Modular App
Add a second feature domain alongside Landmarks, showing how modules compose without coupling.
February 27, 2026
Building a Design System Module
Extract shared UI components into a DesignSystem module that every feature can import.
February 27, 2026
Multi-Package Architecture
Scale beyond a single package by splitting your app into multiple SPM packages that share a common foundation.
February 27, 2026
Preview Apps for Lightning-Fast Iteration
Create mini-app targets per feature so you can build and preview in isolation without compiling the full app.
February 27, 2026
Wiring It All Together: The Main App
Build the main app target as a thin composition root that connects all your feature modules.
February 26, 2026
Modularizing Swift Apps with SPM
How to split a growing iOS app into API, Domain, and Feature modules using Swift Package Manager.
February 24, 2026
Testing Against a Real Server in Vapor Tests
Write integration tests that boot a real Vapor server, make HTTP requests, and verify endpoints behave correctly end-to-end.
February 21, 2026
Let's Deploy It to AWS and Set Up a CI/CD Pipeline
Dockerize the Vapor backend, deploy to AWS with ECS Fargate, switch to Postgres, and automate everything with GitHub Actions.
February 14, 2026
Using Everything We've Learned to Build a Fully Featured App
Wire together Vapor, networking, API models, domain models, caching, and SwiftUI into a complete working Landmarks app.
February 7, 2026
Setting Up a Backend Server for Our Landmarks App
Build a Vapor backend with Fluent models, response types, and RESTful routes - applying the same separation patterns from the iOS side.
January 31, 2026
Tiered Caching in Swift
Build a two-layer cache with memory and disk storage, LRU eviction, and flexible fetch policies that integrate cleanly with SwiftUI.
January 24, 2026
Dependency Injection in SwiftUI Without the Ceremony
Closure-based services, observable stores, and why you don't need protocols or view models.
January 17, 2026
Domain Models vs API Models in Swift
Why separating your network layer from your business logic makes everything easier - and how to do it cleanly.
January 10, 2026
SwiftUI Navigation the Easy Way
A type-safe, scalable approach to SwiftUI navigation using enums and centralized destinations - no third-party libraries required.