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 #70
We’re all feeling the cost of “Xcode builds fine, debugger lies,” especially as modular Swift codebases multiply and build systems mix archives, Swift packages, and app targets. Symbol gaps, stale dSYMs, and expressio...
Read the issue →All issues
47iOS Dev Weekly — Issue #69
Hardware week again, and with it the usual flood of press. But the quieter reality for teams right now is stabilizing SwiftUI apps that stream live...
iOS Dev Weekly — Issue #68
Swift Concurrency is mainstream now, and with it comes a new class of lifecycle bugs that feel invisible until Instruments shows a graph that never...
iOS Dev Weekly — Issue #66
SwiftUI apps are getting bigger, and the pain shows up in all the usual places: previews that crash, features that toggle inconsistently across scr...
iOS Dev Weekly — Issue #64
Everyone’s shipping custom SwiftUI controls, and a surprising number still fall apart under VoiceOver or Dynamic Type in real-world lists. At the s...
iOS Dev Weekly — Issue #63
Between Apple’s regulatory reshuffles and the “AI can do anything” demos, the quiet work that ships macOS apps remains the same: make layouts resil...
iOS Dev Weekly — Issue #62
A lot of teams are discovering that “it works on my machine” isn’t a concurrency strategy. Swift 6 raises the floor: legacy callbacks and implicit ...
iOS Dev Weekly — Issue #60
Between Xcode 27 beta shaking up workflows and another high‑profile App Store review retraction making the rounds, teams are quietly wrestling with...
iOS Dev Weekly — Issue #59
App Intents are the new growth surface, but they’re fragile: one flaky macro target in CI and your extension silently drops from a release. Teams a...
iOS Dev Weekly — Issue #58
SwiftUI is seven years in, and the community is split between “good enough” and “death by footgun,” especially once you leave the happy path. Meanw...
iOS Dev Weekly — Issue #54
macOS teams are quietly relearning that “window closed” isn’t “objects released.” AppKit happily keeps whole controller trees alive if you give it ...
iOS Dev Weekly — Issue #53
CI is green but your laptop fans are howling — that’s the day‑to‑day reality of mixed Swift/Objective‑C workspaces right now. The tooling is gettin...
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 plat...
iOS 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...