Swift & iOS
Engineering Insights
Production-grade iOS engineering articles — generated weekly from real trend signals.
Subscribe via RSS Works in Reeder, NetNewsWire, Feedly, and any RSS reader.
iOS Dev Weekly — Issue #17
Opening
Read issueFind Swift Memory Leaks with Xcode Memory Graph
Memory growth that starts small and climbs during long sessions—until crashes or UI stutter—often signals an ownership leak rather than a rendering bug. When...
Speed Xcode Builds with Explicit Swift Modules
Builds that are fast locally but slow on CI break review velocity and increase context switching. I frequently see intermittent module is out of date or obsc...
Automating Dynamic Type Tests in Xcode
App releases still break when a user chooses an accessibility text size: labels clip, cells truncate, and bug reports land in QA after release. These regress...
Verified SwiftUI Modifiers for Safer App UI
Fast navigation, recycled list cells, and heavy scrolling expose latent problems when SwiftUI modifiers capture mutable state. Small visual helpers often gra...
Custom Layouts Using SwiftUI's Layout Protocol
Converting ad-hoc layout math scattered across view bodies into reusable types frequently exposes nondeterministic behavior: frames jump during rotation, dyn...
Profiling SwiftUI Rendering in Instruments
A subtle rise in per-frame CPU on older devices can turn a calm rollout into an urgent rollback. When SwiftUI views re-render more broadly than expected or p...
Structured Concurrency Patterns for Production Swift Apps
Converting completion-handler flows to structured-concurrency primitives can shift cancellation semantics in ways that only surface at runtime: leaked child ...
Dependency Injection Patterns for Production SwiftUI
Converting global singletons to explicit dependency injection often exposes production-only failures: blank screens, duplicated URLSession calls, or stale Ob...
Privacy-First Telemetry with Swift Concurrency
Converting completion-handler telemetry flows to async/await can shift cancellation and lifecycle semantics. That shift may cause uploads, file writes, or ke...
Migrate URLSession to Swift async/await
Swapping URLSession completion handlers for async/await can clean up call sites quickly — but in real apps it changes cancellation semantics, error propagati...
Migrate Combine to Swift async/await
Replace long Combine chains with Swift async/await and your code often becomes easier to reason about. Migration is not a mechanical find-and-replace: execut...
Migrate ViewController Navigation to SwiftUI NavigationStack
Short story: a mature app’s navigation often becomes a web of push/pop calls, segues, and ad‑hoc hacks to support deep links, state restoration, and modal co...