Blog
Thoughts on iOS development, Swift, and building great mobile experiences.
AGENTS.md for iOS: guardrails that stop AI from breaking your app
Treat AI as a powerful, unreliable teammate. An AGENTS.md file gives it constraints, workflows, and verification steps that keep your iOS codebase stable and your PRs reviewable.
Slash commands that save hours: /build /test /perf /release-notes for iOS
Turn repetitive iOS workflows into reliable one-liners. Define a small set of slash commands that run the right builds, tests, and checks, and generate release notes without ceremony.
Codex workflow for iOS: guardrails, repeatable loops, and how to keep the build green
A practical Codex-assisted workflow for iOS teams: define guardrails, run tight build and test loops, measure impact, and ship changes without breaking CI.
Networking in modern iOS: typed endpoints, retries/backoff, and observability without bloat
A practical URLSession setup that scales: typed endpoints and decoding, retry rules that do not create duplicate side effects, and lightweight logging/metrics so you can measure reliability and latency.
Modern iOS testing stack: fast unit tests + UI tests that don’t flake
A pragmatic iOS testing setup: keep unit tests fast, make UI tests stable, and add one verification loop that catches regressions without turning CI into a lottery.
App launch performance in 2026: first-frame thinking, cold-start budgets, and practical fixes
A practical way to measure iOS cold start and ship improvements: define a first-frame budget, diagnose the common failure modes, and verify changes with repeatable runs.
StoreKit subscriptions in the real world: entitlements, edge cases, and recovery strategies
A practical StoreKit 2 approach for subscription gating that survives renewals, grace periods, restores, and the weird stuff you only see after launch.
SwiftUI animations that don’t glitch: transactions, explicit vs implicit, and performance-safe patterns
A practical SwiftUI animation guide: how transactions actually work, why animations disappear, and how to ship smooth UI without expensive re-renders.
SwiftUI Observation performance: stop unwanted re-renders and measure what matters
Practical patterns for @Observable, avoiding accidental invalidations, and proving performance wins with measurement (not vibes).
Swift Concurrency in Practice: Async/Await and Actors
Practical Swift concurrency patterns for async/await, actors, MainActor, Sendable, cancellation, and building responsive iOS apps without data races.