Snapp Technology

Snapp iOS Weekly Issue 117 November 6, 2026

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!

Subscribe

Articles

Swift

Interesting ways of using Swift optionals

John Sundell

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

Khoa Pham

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

Cory Bohon

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

Oskar Groth

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

Majid Jabrayilov

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

Natalia Panferova

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

Roland Leth

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

Schalk Neethling

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.