Snapp iOS Weekly
Hi folks,
Good tools help us move faster, but knowing what happens next matters just as much. This week we’re looking at SwiftData saves that fail, SwiftUI layouts that don’t behave as expected, and ways to make data arrive on screen sooner. There’s also plenty for the agent-curious: connecting Claude to Xcode, coordinating parallel work, and keeping those config files close at hand.
Enjoy!
Articles
Swift
Interesting ways of using Swift optionals
Optionals have a few tricks beyond if let, and some are surprisingly handy in everyday code. Take take(), which retrieves a value and resets it to nil, or switch directly over an optional enum without unwrapping it first. There’s also a nice look at chaining map and flatMap and extending Optional for checks we repeat across our codebase.
How to use communication pattern in Swift
One listener or many? State or a one-off event? Those questions make choosing between closures, delegates, Observation, Combine, and AsyncStream a lot less murky. The examples also show how to build a typed broadcaster for async subscribers, including the buffering and cleanup details that are easy to forget.
AI / ML
Letting Claude Code Drive Xcode: Setting Up the Xcode MCP Server
Claude Code can work with our open Xcode workspace rather than guessing its way through build logs. This setup guide walks through enabling external agent access, connecting mcpbridge, and trying builds, tests, diagnostics, and SwiftUI previews. There are troubleshooting tips too—and a reminder to review the changes when an agent has access to powerful project tools.
Orchestrating a One-Person Software Factory
Running more agents can leave us doing more coordination, not less. Here’s one developer’s attempt to fix that: non-coding orchestrators delegate work to owners in separate worktrees, while GitHub issues and pull requests keep the shared record. The scale is ambitious, and the account is worth reading for the rules around ownership, reviews, and decisions that still need a human.
UI / UX
Iterative data loading in Swift
A screen that needs dozens of HealthKit queries doesn’t have to wait for every last result before showing something useful. An AsyncSequence can load metrics in steps and yield an accumulating snapshot to the view model as it goes. I like the user-facing payoff here: we can prioritize what people see first instead of treating the whole screen as one giant loading state.
The role of layout priority in SwiftUI containers
layoutPriority doesn’t mean quite the same thing everywhere, which explains a few of those “why did that move?” moments. Stacks use it when allocating space, while a ZStack uses the highest-priority views to determine its own size. The custom layout example is especially useful: it shows that our own Layout decides what priority actually does.
Data
SwiftData rollback after a failed save
A failed SwiftData save can leave changes pending, ready to sneak into a later save. This account follows a fix in Digest, including a rollback after failure and tests that inject errors without interfering with parallel runs. The catch is important: rollback discards all pending changes in that context, so it’s not a fix to drop blindly into every app.
Utils
dotdrawer
Our agent instructions and shell configs tend to hide in different corners of the home folder. dotdrawer puts selected dotfiles in a macOS menu bar drawer, with a global shortcut to open them in your editor. Small utility, straightforward job—and a nice time-saver if you keep revisiting AGENTS.md or .zshrc.