iOS Dev Weekly
A weekly roundup of iOS engineering trends, Swift snippets, and community picks — one focused read, every week.
Latest issue
iOS Dev Weekly — Issue #52
Dark mode bugs don’t crash; they quietly ship as illegible overlays, vanishing tints, and screenshots that fail audits. Teams are juggling new platform changes post-WWDC while trying to keep SwiftUI styling predictabl...
Read the issue →All issues
35iOS Dev Weekly — Issue #51
SwiftUI’s new Observation model is powerful, but production apps are discovering where “reactive by default” collides with scrolling performance an...
iOS Dev Weekly — Issue #50
Two things can be true at once: we’re building ever richer SwiftUI UIs, and our apps still hitch when layout math gets pushed into view bodies and ...
iOS Dev Weekly — Issue #48
Startup regressions and “looks fine in Instruments” are colliding more often as apps stitch together asset packs, deep links, and async rendering p...
iOS Dev Weekly — Issue #47
App Intents are finally showing up in real products, and the glossy demos don’t cover the mess when Shortcuts, Siri, and Spotlight each run your co...
iOS Dev Weekly — Issue #46
Auth is quiet until it isn’t: more teams are changing domains, adding CDNs, or rebranding, and Sign in with Apple is the tripwire. The bugs aren’t ...
iOS Dev Weekly — Issue #45
visionOS shipped the dream; teams are now debugging the seams. The rough edges aren’t in buttons or gestures—they’re where window stacks, immersive...
iOS Dev Weekly — Issue #44
Converting completion-style fetches to structured concurrency or migrating view state to @Observable often surfaces runtime issues: leaked child Ta...
iOS Dev Weekly — Issue #43
Toolchain upgrades are not a boutique upgrade—they’re an operational risk that shows up in CI, signing, and shipped binaries. If your team treats a...
iOS Dev Weekly — Issue #42
Swift Concurrency is no longer optional in new codebases — teams are converting large, callback-heavy subsystems and finding the hard parts show up...
iOS Dev Weekly — Issue #40
WWDC made it clear: Apple continues to push higher-level frameworks and tighter integrations, and that will expose timing, cancellation, and operat...
iOS Dev Weekly — Issue #38
Mac apps are quietly being stressed by an interface tweak: menu labels, ordering and icons might change across macOS experiments, and that’s not ju...
iOS Dev Weekly — Issue #37
Dynamic Type frequently reveals itself as an architectural smell in SwiftUI — a single shared observable or global scale object can cascade invalid...
iOS Dev Weekly — Issue #36
Platform betas are quietly the most useful chaos we get each year — they break assumptions about timing, lifecycles, and SDK behavior before custom...
iOS Dev Weekly — Issue #35
Converting callback-based networking into async/await is more than a syntax swap — it quietly changes cancellation, lifetimes, and concurrency boun...
iOS Dev Weekly — Issue #34
Moving modules into Swift packages is more than folder reshuffling — it changes your build units, ABI surface, and the runtime coupling between app...
iOS Dev Weekly — Issue #33
Race-day coaching that gaps for 10–30 seconds during crowded starts is an annoying but revealing failure: too much run-time logic lives off-watch. ...
iOS Dev Weekly — Issue #32
Large, dynamic SwiftUI canvases on macOS are leaking accessibility failures into production more often than teams admit. Pixels looked right in my ...
iOS Dev Weekly — Issue #31
Staged rollouts are exposing subtle failure modes in WidgetKit integrations—widgets that stop updating, silent no-op intent executions, and timelin...
iOS Dev Weekly — Issue #30
Hangs on real macOS devices are quietly one of the worst UX regressions — they destroy confidence faster than a visual bug. Many teams only notice ...
iOS Dev Weekly — Issue #27
RealityKit scenes that work in short demos often break in real-world visionOS sessions: thermal rises, creeping memory, and watchdog kills show up ...
iOS Dev Weekly — Issue #22
Converting loose intent inputs into typed AppIntents is quietly one of those migrations that looks small in a PR but surfaces production problems f...
iOS Dev Weekly — Issue #21
I once shipped a release where silently divergent local build scripts produced different generated sources for the same commit — and CI won while d...
iOS Dev Weekly — Issue #20
Telemetry in shipping apps is getting noisier even as observability gets more powerful. Teams wrestle with high-cardinality logs and ad-hoc identif...
iOS Dev Weekly — Issue #19
Implicit dependencies in SwiftUI environments are silently expensive — they turn tiny API choices into production performance bugs. This week I wan...
iOS Dev Weekly — Issue #17
Shortcuts that arrive in users’ devices and “do nothing” are a support tax we freely choose to pay when we design systems without clear failure mod...
iOS Dev Weekly — Issue #15
Memory growth that creeps up over long sessions is an ownership problem, not a rendering glitch. Teams who treat rising RAM as a UI bug waste devel...
iOS Dev Weekly — Issue #14
CI that stalls for type‑checking or throws intermittent “module is out of date” errors is a productivity tax most teams quietly accept. When local ...
iOS Dev Weekly — Issue #13
Accessibility sizes keep breaking releases in predictable ways: clipped labels, truncated cells, and layout math that only shows up when someone sw...
iOS Dev Weekly — Issue #12
Fast navigation, recycled list cells, and heavy scrolling are the common culprits when small SwiftUI helpers become app-wide bugs. Teams are increa...
iOS Dev Weekly — Issue #11
Layout math tangled across view bodies is the silent cause of many flakey UIs: janky rotations, Dynamic Type regressions, and list CPU spikes. This...
iOS Dev Weekly — Issue #10
SwiftUI makes it easy to iterate, but that same convenience hides a brittle surface: tiny changes to state or view ownership often expand render bo...
iOS Dev Weekly — Issue #1
Converting global singletons to explicit dependency injection routinely surfaces production-only failures that don’t crash but create long incident...
iOS Dev Weekly — Issue #1
Converting completion-handler telemetry code to async/await is not a drop-in replacement — it changes cancellation and lifetime semantics in ways t...
iOS Dev Weekly — Issue #1
If your codebase still leans on Combine, you’re not wrong — but you should be deliberate about moving away. Async/await simplifies control flow, bu...