<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
  <title>Snapp iOS Weekly</title>
  <subtitle>Weekly iOS and Swift development newsletter</subtitle>
  <link href="https://ios-newsletter.snappmobile.io/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="https://ios-newsletter.snappmobile.io/" rel="alternate" type="text/html"/>
  <id>https://ios-newsletter.snappmobile.io/</id>
  <icon>https://ios-newsletter.snappmobile.io/assets/images/newsletter_social.jpg</icon>
  <logo>https://ios-newsletter.snappmobile.io/assets/images/newsletter_social.jpg</logo>
  <author>
    <name>Snapp Technology</name>
    <uri>https://ios-newsletter.snappmobile.io/</uri>
  </author>
  <rights>© 2026 Snapp Technology</rights>
  <updated>2026-09-18T00:00:00+00:00</updated>
  <entry>
    <title>iOS Newsletter Issue 110</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-09-18-issue-110.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-09-18-issue-110.html</id>
    <published>2026-09-18T00:00:00+00:00</published>
    <updated>2026-09-18T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift 6.4"/>
    <category term="Swift AWS Lambda 3.0"/>
    <category term="Xcode 27 Agent Skills"/>
    <category term="SwiftUI Agent Skill"/>
    <category term="SwiftUI animations explained"/>
    <category term="ForEach performance diagnosing"/>
    <category term="SPM at scale"/>
    <category term="Homebrew UI"/>
    <summary type="text">Hi folks, We have a very “tooling is the product now” kind of issue this week. Swift 6.4 pushes the language outward — servers, browsers, embedded targets, sharper testing — while the rest of the links remind us that our...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;We have a very “tooling is the product now” kind of issue this week. Swift 6.4 pushes the language outward — servers, browsers, embedded targets, sharper testing — while the rest of the links remind us that our day-to-day wins still come from boring-looking details: a better &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ForEach&lt;/code&gt;, a cleaner package boundary, an agent that stops writing weird SwiftUI. Not glamorous every minute, but this is the stuff that makes our apps feel less fragile six months from now.&lt;/p&gt;

&lt;p&gt;Have fun!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;swift-64-released&quot;&gt;&lt;a href=&quot;https://www.swift.org/blog/swift-6.4-released/&quot;&gt;Swift 6.4 Released&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/heckj/&quot; class=&quot;author&quot;&gt;Joe Heck&lt;/a&gt;, &lt;a href=&quot;https://github.com/hborla/&quot; class=&quot;author&quot;&gt;Holly Borla&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift 6.4 is one of those releases where the headline is not one giant feature, but a lot of pressure being taken off real projects. Swift Build becoming the default in SwiftPM, Subprocess hitting 1.0, better Swift Testing migration, richer interop, faster Wasm bridging — it all points to Swift getting more comfortable outside the narrow “app language” box. For our apps, the async &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;defer&lt;/code&gt;, cancellation shields, warning controls, and non-copyable collection work are the bits I’d actually expect to feel in code reviews. Less ceremony, fewer weird edges, and a language that keeps growing without pretending memory safety is optional.&lt;/p&gt;

&lt;h3 id=&quot;lambda--swift-aws-lambda-runtime-300-released&quot;&gt;&lt;a href=&quot;https://forums.swift.org/t/lambda-swift-aws-lambda-runtime-3-0-0-released/89573&quot;&gt;[Lambda] : Swift AWS Lambda Runtime 3.0.0 released&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/sebsto.bsky.social&quot; class=&quot;author&quot;&gt;Sébastien Stormacq&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift AWS Lambda Runtime 3.0.0 lands with the kind of changes server-side Swift teams will care about immediately: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nonisolated(nonsending)&lt;/code&gt; by default, new lifecycle plugins, ZIP or OCI deployment, and task-local logging. The breaking change may sting a bit, sure, but keeping handler execution on the caller’s executor is the right kind of boring correctness. The new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lambda-init&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lambda-build&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lambda-deploy&lt;/code&gt; flow also makes Lambda feel less like a hand-rolled side quest. If our backend glue is going to be Swift too, this is the direction it needed to go.&lt;/p&gt;

&lt;h2 id=&quot;agents&quot;&gt;Agents&lt;/h2&gt;

&lt;h3 id=&quot;how-to-export-and-use-xcode-27s-agent-skills-in-claude-code&quot;&gt;&lt;a href=&quot;https://bleepingswift.com/blog/xcode-27-agent-skills-claude-code&quot;&gt;How to Export and Use Xcode 27’s Agent Skills in Claude Code&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://x.com/0x7fs&quot; class=&quot;author&quot;&gt;Mick MacCallum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xcode 27 exporting Apple’s own agent skills is a small command with a pretty big implication: our external agents can now carry some of Apple’s platform guidance with them. The walkthrough shows how to dump those skills into Claude Code, Cursor, Codex, or a shared &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.agents/skills&lt;/code&gt; folder, then let the agent load SwiftUI, testing, UIKit modernization, or security guidance only when it needs it. I like this because it treats AI assistance less like magic and more like tooling we can configure. And honestly, who doesn’t want the agent to stop guessing at SwiftUI when Apple already wrote the notes?&lt;/p&gt;

&lt;h3 id=&quot;swiftui-agent-skill-install-and-use-with-ai-coding-tools&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/ai-development/swiftui-agent-skill-build-better-views-with-ai/&quot;&gt;SwiftUI Agent Skill: Install and use with AI coding tools&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/avanderlee.com&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A reusable SwiftUI skill for coding agents is exactly the sort of thing that starts sounding optional, right up until the third generated view ships with stale &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onChange&lt;/code&gt; patterns and confused state ownership. Version 5.0.0 adds verified Xcode 27 and SDK 27 guidance, with focused references for layout, accessibility, animation, state, lists, toolbars, WebKit, and more. The nice part is the shape: a compact skill file that pulls in deeper notes only when relevant, instead of stuffing every rule into one giant prompt. Our codebase gets better results, and our context window does not become a landfill.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;how-swiftui-animation-works&quot;&gt;&lt;a href=&quot;https://openswiftuiproject.org/blog/how-swiftui-animation-works/&quot;&gt;How SwiftUI animation works&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://openswiftuiproject.org&quot; class=&quot;author&quot;&gt;OpenSwiftUI Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftUI animation is easy to use and weirdly easy to misunderstand, especially once “async” and Core Animation show up in the same conversation. This deep dive follows OpenSwiftUI’s iOS 18 animation model and makes the boundary clearer: SwiftUI samples animation values in the app process, then submits presentation updates; Core Animation still composites, but it is not necessarily owning the spring’s clock. That distinction matters when we’re chasing hitches in our apps. Don’t just blame “the animation” — trace state, graph updates, sampling, layer updates, and compositing like separate suspects.&lt;/p&gt;

&lt;h3 id=&quot;diagnosing-foreach-performance-issues-in-swiftui-lazy-containers&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/DiagnosingForEachPerformanceIssuesInSwiftUILazyContainers/&quot;&gt;Diagnosing ForEach performance issues in SwiftUI lazy containers&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s a tiny launch argument here that deserves a spot in every SwiftUI performance debugging checklist: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-LogForEachSlowPath YES&lt;/code&gt;. It catches &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ForEach&lt;/code&gt; content inside lazy containers when SwiftUI can’t know the number of views per element without evaluating offscreen rows, which is exactly the kind of invisible work that makes lists feel haunted. The fix is not always “wrap it in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;VStack&lt;/code&gt;”; sometimes we should filter the collection before &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ForEach&lt;/code&gt;, and sometimes grouping is the right move because the element still exists. Small detail, big payoff. Our lists are only lazy if we stop making SwiftUI guess.&lt;/p&gt;

&lt;h2 id=&quot;spm&quot;&gt;SPM&lt;/h2&gt;

&lt;h3 id=&quot;managing-multi-repository-enterprise-ios-ecosystems-at-scale&quot;&gt;&lt;a href=&quot;https://hackernoon.com/managing-multi-repository-enterprise-ios-ecosystems-at-scale&quot;&gt;Managing Multi-Repository Enterprise iOS Ecosystems at Scale&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://hackernoon.com/about/uthejmopathi&quot; class=&quot;author&quot;&gt;Flaregun-dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Large iOS codebases rarely stay neat, and this piece walks through the mess without pretending one repo strategy solves everything. Swift Package Manager is the center of gravity now, with private registries, binary XCFramework targets, CI tokens, automated version bumps, and the occasional Xcode workspace still doing useful work at the edges. The practical thread is consistency: exact versions, repeatable builds, shared compiler settings, and dependency updates that move through PRs instead of folklore. If our apps depend on a dozen internal libraries, “it builds on my machine” is not a process. It’s a warning sign.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;homebrewbrewui&quot;&gt;&lt;a href=&quot;https://github.com/Homebrew/BrewUI&quot;&gt;Homebrew/BrewUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/Homebrew&quot; class=&quot;author&quot;&gt;Homebrew&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BrewUI is Homebrew’s official macOS GUI, built in SwiftUI, and I’m happy it exists for a simple reason: not everyone wants package management to start in Terminal. The project is careful about transparency, showing what Homebrew is doing rather than turning installs and upgrades into a mystery button. It also has a very pragmatic environment model — clean zsh launch, explicit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;brew.env&lt;/code&gt; files, and a Configuration tab to explain what the app sees. A native SwiftUI app around a beloved command-line tool? That is a nice little macOS story, and maybe a useful reference for our own developer-facing utilities.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 109</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-09-11-issue-109.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-09-11-issue-109.html</id>
    <published>2026-09-11T00:00:00+00:00</published>
    <updated>2026-09-11T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift News"/>
    <category term="iPhone Duo"/>
    <category term="Adaptive SwiftUI Toolbars"/>
    <category term="Native WebView in SwiftUI"/>
    <category term="Swift Testing examples"/>
    <category term="SQLiteData"/>
    <category term="RCS"/>
    <category term="Plant Identifier with Foundation Models"/>
    <summary type="text">Hi folks, Swift keeps refusing to stay in the neat little Apple-platform box, and honestly, good. This week we’ve got Swift on the web, SwiftUI picking up the boring-but-needed pieces we used to wrap ourselves, foldable iPhone prep landing in...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;Swift keeps refusing to stay in the neat little Apple-platform box, and honestly, good.&lt;/p&gt;

&lt;p&gt;This week we’ve got Swift on the web, SwiftUI picking up the boring-but-needed pieces we used to wrap ourselves, foldable iPhone prep landing in real developer checklists, and on-device foundation models doing actual app work instead of demo magic.&lt;/p&gt;

&lt;p&gt;The thread is simple: our apps are being asked to stretch — across screens, runtimes, toolbars, tests, messages, and AI workflows — and the best tools here are the ones that delete ceremony without pretending the edge cases disappeared.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;whats-new-in-swift-august-2026-edition&quot;&gt;&lt;a href=&quot;https://www.swift.org/blog/whats-new-in-swift-august-2026/&quot;&gt;What’s new in Swift: August 2026 Edition&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/sliemeobn/&quot; class=&quot;author&quot;&gt;Simon Leeb&lt;/a&gt;, &lt;a href=&quot;https://github.com/davelester/&quot; class=&quot;author&quot;&gt;Dave Lester&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift’s August roundup is very much a “look how far outside Xcode this language is wandering now” moment. Elementary and ElementaryUI push Swift deeper into web UI work, SwiftTUI brings state and animation ideas into terminal apps, and the Windows story keeps getting less theoretical. If our mental model of Swift is still mostly “the language we use for iOS screens,” this digest is a useful shove. The ecosystem is getting wider, messier, and more interesting — as it should.&lt;/p&gt;

&lt;h2 id=&quot;ui--ux&quot;&gt;UI / UX&lt;/h2&gt;

&lt;h3 id=&quot;iphone-duo-first-developer-good-to-knows&quot;&gt;&lt;a href=&quot;https://www.swiftjectivec.com/iphone-duo-first-developer-good-to-knows/&quot;&gt;iPhone Duo: First Developer Good-to-Knows&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/jordanmorgan10.bsky.social&quot; class=&quot;author&quot;&gt;Jordan Morgan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The foldable iPhone conversation is no longer just gadget gossip; it’s a layout problem with a hinge in the middle of it. The useful bits here are practical: trust size classes over device assumptions, test asymmetric safe areas, let system containers manage bars, and don’t hide core features behind some cute folded pose. I like the warning baked into all of this — if our app only works because we guessed the shape of the device, we’re already late. Duo support sounds flashy, but most of the work is just honest adaptive design.&lt;/p&gt;

&lt;h3 id=&quot;adaptive-swiftui-toolbars-in-ios-27&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/AdaptiveSwiftUIToolbarsInIOS27/&quot;&gt;Adaptive SwiftUI toolbars in iOS 27&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftUI toolbars are getting a vocabulary for the thing we’ve all been faking: what matters when space runs out. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;visibilityPriority&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ToolbarOverflowMenu&lt;/code&gt;, pinned trailing items, and minimization behavior give us knobs instead of hoping the framework guesses our hierarchy of actions correctly. That matters more now with resizable windows, search taking over chrome, and devices that may change shape mid-session. Who doesn’t like deleting a weird custom “more” button and letting the system carry the overflow story properly?&lt;/p&gt;

&lt;h3 id=&quot;swiftui-has-a-native-webview-in-ios-26&quot;&gt;&lt;a href=&quot;https://sarunw.com/posts/swiftui-native-webview/&quot;&gt;SwiftUI has a native WebView in iOS 26&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://x.com/sarunw&quot; class=&quot;author&quot;&gt;Sarun W.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The little &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UIViewRepresentable&lt;/code&gt; WebView wrapper we’ve all copied between projects can start packing its bags. iOS 26 gives SwiftUI a native &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebView&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebPage&lt;/code&gt; covers the bits real apps need: title, loading state, progress, history, secure-content state, and async JavaScript. The catch is small but easy to miss — import both SwiftUI and WebKit, because this arrives through a cross-import overlay. Keep the old wrapper for older deployment targets, sure, but new code gets pleasantly boring here.&lt;/p&gt;

&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;

&lt;h3 id=&quot;swift-testing-explained-with-code-examples&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/swift-testing/modern-unit-test/&quot;&gt;Swift Testing explained with code examples&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/avanderlee.com&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift Testing is settling in as the default path, and the migration story is getting clearer: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@Test&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#expect&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#require&lt;/code&gt;, parameterized tests, attachments, and exit tests where the platform allows them. The big win is not just fewer assertion names to remember; failure output is closer to the expression we actually wrote, which helps when CI is yelling and coffee has not kicked in yet. XCTest still has a place for UI automation and performance work, so no need for a dramatic rewrite. But for most unit tests in our codebase, the modern shape is hard to argue against.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;sqlitedata&quot;&gt;&lt;a href=&quot;https://github.com/pointfreeco/sqlite-data&quot;&gt;SQLiteData&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.pointfree.co&quot; class=&quot;author&quot;&gt;PointFree.co&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SQLiteData feels like SwiftData for teams who still want the database to be real. You get familiar wrappers like @Table, @FetchAll, and @FetchOne, but underneath it’s SQLite, GRDB, type-safe queries, and CloudKit sync without pretending schema design doesn’t exist. I like that tradeoff: a little more upfront database thinking, a lot more control when our apps grow past the toy phase.&lt;/p&gt;

&lt;h2 id=&quot;video&quot;&gt;Video&lt;/h2&gt;

&lt;h3 id=&quot;043---rcs&quot;&gt;&lt;a href=&quot;https://lucas.love/100/043&quot;&gt;043 - RCS&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/lucas.love&quot; class=&quot;author&quot;&gt;Lucas Fischer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RCS has been easy to ignore if most of your world lives inside iMessage, but cross-platform messaging is finally less awful on iPhone. The real-world test here — texting friends in Germany for a month and checking whether it stayed free — is more useful than another feature checklist. iOS 26 adding end-to-end encryption makes the story feel less like a grudging compatibility layer and more like something users may actually trust. Not glamorous, no, but our apps live in the same user expectations soup as Messages does.&lt;/p&gt;

&lt;h3 id=&quot;building-a-plant-identifier-with-foundation-models&quot;&gt;&lt;a href=&quot;https://youtu.be/VuKFMaVQiWg&quot;&gt;Building a Plant Identifier with Foundation Models&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/azamsharp.bsky.social&quot; class=&quot;author&quot;&gt;Mohammad Azam&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A plant identifier is a nice excuse to see Foundation Models image attachments doing something concrete: pass an image, generate a structured plant name, then keep the conversation going with follow-up questions. The smart part is not re-analyzing the image every time; caching the identified plant keeps the UX from feeling like it is paying the same expensive bill again and again. There are rough edges, including model weirdness and real-device requirements on iOS 27, but that’s useful honesty. This is the kind of AI demo that maps cleanly to our own apps: identify once, ask many times, stream the answer when it gets longer.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 108</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-09-04-issue-108.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-09-04-issue-108.html</id>
    <published>2026-09-04T00:00:00+00:00</published>
    <updated>2026-09-04T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift for WASM"/>
    <category term="FoundationModels Multimodal Input"/>
    <category term="App Intents"/>
    <category term="Spotlight App Donations"/>
    <category term="Sunburst Diagrams with SwiftCharts"/>
    <category term="Area Chart with Dimming layer"/>
    <category term="SwiftUI effects in Final Cut Pro"/>
    <category term="Local AI"/>
    <summary type="text">Hi folks, We’ve got a very “system edges are getting interesting again” issue this week. App Intents are moving from cute demos into actual routes through Spotlight, Siri, and our app data. Swift Charts keeps proving it can do the...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;We’ve got a very “system edges are getting interesting again” issue this week. App Intents are moving from cute demos into actual routes through Spotlight, Siri, and our app data. Swift Charts keeps proving it can do the weird product-polish stuff if we’re willing to understand the marks. And off to the side, Swift on Wasm, local AI engines, and SwiftUI in Final Cut Pro are all quietly saying the same thing: Swift is leaking into more places than our old mental model allowed.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;swift-for-wasm-august-2026-updates&quot;&gt;&lt;a href=&quot;https://forums.swift.org/t/swift-for-wasm-august-2026-updates/89316&quot;&gt;Swift for Wasm August 2026 Updates&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/maxdesiatov&quot; class=&quot;author&quot;&gt;Max Desiatov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift for WebAssembly had one of those months where the changelog looks small until you notice the shape of it: WasmKit running a WASI guest and GDB stub on an ESP32, BridgeJS getting cleaner module imports and generic imported functions, ElementaryUI tightening up its SwiftPM/Vite story. That’s not “hello world in the browser” territory anymore. It’s Swift being pushed into edge workers, embedded targets, and frontend experiments with fewer apologies. Still rough in places, sure, but if our idea of Swift stops at apps and server binaries, we’re missing where the interesting pressure is building.&lt;/p&gt;

&lt;h2 id=&quot;aiml&quot;&gt;AI/ML&lt;/h2&gt;

&lt;h3 id=&quot;building-ai-features-using-foundation-models-multimodal-input&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2026/09/01/building-ai-features-using-foundation-models-multimodal-input/&quot;&gt;Building AI features using Foundation Models. Multimodal input.&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Foundation Models get much more real once the prompt can include an image, and the plate-scanner example makes the point without overcooking it. Define a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Generable&lt;/code&gt; result type, pass instructions plus an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Attachment&lt;/code&gt; into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LanguageModelSession&lt;/code&gt;, and get structured output back that the UI can actually use. No giant cloud pipeline, no “AI strategy” meeting, just a feature-sized loop: image in, typed result out. That’s the kind of AI API surface I want in our apps — small enough to trust, useful enough to ship.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;teaching-siri-to-talk-about-your-favorite-walks-in-walk-mate&quot;&gt;&lt;a href=&quot;https://emredegirmenci.substack.com/p/ios-27-app-intents-journey&quot;&gt;Teaching Siri to talk about your favorite walks in Walk Mate&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://substack.com/@emredegirmenci&quot; class=&quot;author&quot;&gt;Emre Degirmenci&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A practical walk through making Siri understand app data, not just launch a shortcut and wave vaguely at the app. Walk Mate’s favorite routes become App Entities with readable properties, Spotlight indexing, Shortcuts search, and a Maps handoff, which is exactly the kind of plumbing our apps need if we want Apple Intelligence to feel useful instead of decorative. I like how grounded this is: one saved walk, one name Siri can say, one route that opens where the user expects. App Intents can get abstract fast; this keeps the work close to something a person would actually ask for.&lt;/p&gt;

&lt;h3 id=&quot;making-app-entities-available-in-spotlight&quot;&gt;&lt;a href=&quot;https://developer.apple.com/documentation/appintents/making-app-entities-available-in-spotlight&quot;&gt;Making app entities available in Spotlight&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://developer.apple.com/documentation&quot; class=&quot;author&quot;&gt;Apple Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple’s guide lays out the official path for getting AppEntity types into Spotlight, with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;IndexedEntity&lt;/code&gt; doing a lot of the connective work. The big bit for our codebase is that Spotlight is no longer just a bag of searchable strings; it can carry structured app entities that Siri and other system experiences can reason about. That means the boring indexing layer suddenly matters a lot more. If our app has user-created objects, saved places, documents, workouts, recipes, whatever, this is the place to start making them visible to the system.&lt;/p&gt;

&lt;h3 id=&quot;building-a-sunburst-diagram-in-swift-charts&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/BuildingASunburstDiagramInSwiftCharts/&quot;&gt;Building a sunburst diagram in Swift Charts&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/hishnash.bsky.social&quot; class=&quot;author&quot;&gt;Matthaus Woolard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift Charts can build a proper sunburst diagram, but the fun is in the details: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SectorMark&lt;/code&gt; rings, radius ratios, angular insets, grouped data layout, and accessibility labels that don’t get treated as an afterthought. The result is a multi-level donut chart where the outer rings still line up with their parent categories, which sounds simple until you try to fake it by hand. Who doesn’t like a chart that looks custom without becoming a pile of custom drawing code? This is a good reminder that Charts has more range than the usual bar-and-line dashboard screenshots suggest.&lt;/p&gt;

&lt;h3 id=&quot;area-chart-with-a-dimming-layer-up-to-the-current-point-in-time&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/AreaChartWithADimmingLayer/&quot;&gt;Area chart with a dimming layer up to the current point in time&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A nice little Swift Charts recipe inspired by the iOS Weather UV chart: gradient area, matching line, current-time marker, and a dimming layer over the part of the day that has already passed. The technique is useful because it’s not just prettier data, it tells the user what’s behind them and what’s still ahead at a glance. Our apps often need exactly this kind of visual hint, the small layer that makes a chart feel alive instead of pasted in. Bonus points for keeping accessibility in the conversation when the area and line represent the same data.&lt;/p&gt;

&lt;h3 id=&quot;093---swiftui-in-fcp&quot;&gt;&lt;a href=&quot;https://lucas.love/100/093&quot;&gt;093 - SwiftUI in FCP&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/lucas.love&quot; class=&quot;author&quot;&gt;Lucas Fischer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftUI views rendered as Final Cut Pro effects is the sort of sentence that makes you stop and check you read it right. Using &lt;a href=&quot;https://github.com/finnvoor/SwiftUIFX&quot;&gt;SwiftUIFX&lt;/a&gt;, the experiment builds SwiftUI components and renders them frame by frame onto video footage, which is not the usual plugin path most of us have in our heads. It’s scrappy and exploratory in the best way. Even if our day job never touches Final Cut Pro, seeing SwiftUI escape the app window is a healthy reminder that our UI tools are more portable than we tend to assume.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;nobodywho&quot;&gt;&lt;a href=&quot;https://www.nobodywho.ai/&quot;&gt;NobodyWho&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/nobodywhooo.bsky.social&quot; class=&quot;author&quot;&gt;NobodyWho&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NobodyWho is pitching local AI inference across devices, with text, vision, speech-to-text, and text-to-speech models loaded from places like Hugging Face and called from Swift, React Native, Kotlin, Dart, Python, and more. The Swift sample is refreshingly direct: load a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GGUF&lt;/code&gt; model, ask it something, await the completed response. For mobile teams, the appeal is obvious — private, offline-capable AI features without sending every user interaction across the network. Of course we still need to care about model size, latency, and battery, but this is the kind of tool that makes local-first AI feel less like a research project.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 107</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-08-28-issue-107.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-08-28-issue-107.html</id>
    <published>2026-08-28T00:00:00+00:00</published>
    <updated>2026-08-28T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift Documentation"/>
    <category term="CoreAI Quickstart"/>
    <category term="AppIntents"/>
    <category term="Background Tasks in SwiftUI"/>
    <category term="Photo Extensions"/>
    <category term="EventKit"/>
    <category term="Calendar Charts"/>
    <category term="Xcode Key Bindings"/>
    <summary type="text">Hi folks, This week’s issue is about giving the system more useful ways into our apps without giving up control of the hard parts. We have Swift’s newly unified documentation, a pragmatic App Intents baseline for Siri and Spotlight, custom...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;This week’s issue is about giving the system more useful ways into our apps without giving up control of the hard parts. We have Swift’s newly unified documentation, a pragmatic App Intents baseline for Siri and Spotlight, custom on-device models with Core AI, and the less glamorous work of background scheduling and EventKit permissions. Then we get properly hands-on: non-destructive Photo Editing extensions, an accessible Swift Charts calendar, and a few Xcode shortcuts that make routine refactoring just annoying enough less.&lt;/p&gt;

&lt;p&gt;We hope you like it!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;swifts-new-documentation-site&quot;&gt;&lt;a href=&quot;https://forums.swift.org/t/swifts-new-documentation-site/89192&quot;&gt;Swift’s New Documentation Site&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/heckj&quot; class=&quot;author&quot;&gt;Joseph Heck&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift finally has one hosted home for The Swift Programming Language, standard library APIs, Swift Testing, toolchain material, and platform guidance, built nightly with DocC. The useful bit is the split between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;latest&lt;/code&gt; release documentation and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;main&lt;/code&gt; development docs, with real versioning and a switcher still being worked out; Foundation is notably missing for now.&lt;/p&gt;

&lt;h2 id=&quot;aiml&quot;&gt;AI/ML&lt;/h2&gt;

&lt;h3 id=&quot;run-custom-models-on-device-with-core-ai&quot;&gt;&lt;a href=&quot;https://www.theswift.dev/posts/run-custom-models-on-device-with-core-ai/&quot;&gt;Run Custom Models On Device With Core AI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/twhitt14&quot; class=&quot;author&quot;&gt;Trevor Whittingham&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Core AI fills the awkward space between Apple’s Foundation Models and traditional Core ML: bring a task-specific model, convert it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.aimodel&lt;/code&gt;, and keep inference on device. The architecture advice is the real keeper—compose small vision and language models, hide tensor plumbing behind narrow types, and treat download plus first-run specialization as product states rather than surprising the user with a spinner.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;app-intents-for-ios-27-the-indie-playbook-for-the-new-siri-and-spotlight&quot;&gt;&lt;a href=&quot;https://www.applyra.io/blog/app-intents-ios-27-indie-siri-playbook&quot;&gt;App Intents for iOS 27: The Indie Playbook for the New Siri and Spotlight&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://x.com/AurelienWeiss&quot; class=&quot;author&quot;&gt;Aurélien Weiss&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;App Intents are not some magical replacement for ASO, and treating them that way misses the point. For most indie apps, one open intent, one search intent, and one create intent behind an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AppShortcutsProvider&lt;/code&gt; is enough to make the app genuinely usable from Siri, Spotlight, and Shortcuts—small work with a surprisingly broad system footprint.&lt;/p&gt;

&lt;h3 id=&quot;background-tasks-in-swiftui&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2022/07/06/background-tasks-in-swiftui/&quot;&gt;Background tasks in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftUI’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;backgroundTask&lt;/code&gt; modifier makes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BGTaskScheduler&lt;/code&gt; feel far less bolted on, especially now that handlers can use async/await and cooperative cancellation. The system still decides when work runs, though, so schedule from lifecycle transitions, use background &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;URLSession&lt;/code&gt; for long transfers, and learn the debugger commands that simulate launch and expiration—or enjoy waiting indefinitely for iOS to cooperate.&lt;/p&gt;

&lt;h3 id=&quot;photo-extensions&quot;&gt;&lt;a href=&quot;https://www.objc.io/issues/21-camera-and-photos/photo-extensions/&quot;&gt;Photo Extensions&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://x.com/iwantmyrealname&quot; class=&quot;author&quot;&gt;Sam Davies&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Photo Editing extensions are a neat example of designing for non-destructive work: render a display-sized preview, persist the recipe as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PHAdjustmentData&lt;/code&gt;, then apply it to the full-resolution asset only when the user commits. The old APIs show their age, but the constraints have not—share code carefully with the container app, avoid wasteful image buffers, and assume memory pressure will expose every lazy choice.&lt;/p&gt;

&lt;h3 id=&quot;developing-ios-apps-with-eventkit-and-calendar-integration&quot;&gt;&lt;a href=&quot;https://reintech.io/blog/developing-ios-apps-eventkit-calendar-integration&quot;&gt;Developing iOS Apps with EventKit and Calendar Integration&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://reintech.io&quot; class=&quot;author&quot;&gt;Arthur C.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EventKit integration is mostly straightforward CRUD until permissions, recurrence, multiple calendars, and outside changes enter the room. A long-lived &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EKEventStore&lt;/code&gt;, explicit authorization handling, stable event identifiers, and observation of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EKEventStoreChanged&lt;/code&gt; turn the usual pile of snippets into something our codebase can actually rely on.&lt;/p&gt;

&lt;h3 id=&quot;building-an-accessible-calendar-chart-with-swift-charts&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/BuildingAnAccessibleCalendarInSwiftCharts/&quot;&gt;Building an accessible calendar chart with Swift Charts&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/hishnash.bsky.social&quot; class=&quot;author&quot;&gt;Matthaus Woolard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A calendar heat map looks simple until dates from later weeks form a staircase and VoiceOver groups every Monday into one inaccessible column. Normalizing weekdays into a reference week fixes the geometry; replacing the plot’s accessibility children with a matching synthetic grid restores day-by-day navigation and month headings without throwing away Swift Charts’ date-based model.&lt;/p&gt;

&lt;h2 id=&quot;tips&quot;&gt;Tips&lt;/h2&gt;

&lt;h3 id=&quot;xcode-key-bindings-to-make-refactoring-less-painful&quot;&gt;&lt;a href=&quot;https://qualitycoding.org/xcode-key-bindings-refactoring/&quot;&gt;Xcode Key Bindings to Make Refactoring Less Painful&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://qualitycoding.org/about/&quot; class=&quot;author&quot;&gt;Jon Reid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xcode refactoring is unreliable enough that digging through its menus trains us to stop trying. Binding Rename, Extract All Occurrences, and Extract to Method to memorable shortcuts flips that cost: try instantly, move on instantly if Xcode says no, and stay in flow on the rare happy path when it works.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 106</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-08-21-issue-106.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-08-21-issue-106.html</id>
    <published>2026-08-21T00:00:00+00:00</published>
    <updated>2026-08-21T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Package Registries"/>
    <category term="Custom Operators"/>
    <category term="Hybrid AI with FoundationModels"/>
    <category term="Using AI"/>
    <category term="App Launch Time Debugging"/>
    <category term="Geometry changes in SwiftUI"/>
    <category term="Testing Navigation"/>
    <category term="Liquid Glass Agent Skill"/>
    <summary type="text">Hello again. Package infrastructure, hybrid AI, critical thinking, launch profiling, adaptive layout, testable navigation, and even custom operators all land in this issue. The common thread is control: knowing where SwiftPM gets its code, choosing deliberately between Apple Foundation Models...</summary>
    <content type="html">&lt;p&gt;Hello again.&lt;/p&gt;

&lt;p&gt;Package infrastructure, hybrid AI, critical thinking, launch profiling, adaptive layout, testable navigation, and even custom operators all land in this issue. The common thread is control: knowing where SwiftPM gets its code, choosing deliberately between Apple Foundation Models and Gemini, checking what AI produces, measuring launch work instead of guessing, and keeping SwiftUI decisions small enough to test. There’s also a focused skill for Liquid Glass—useful, provided we treat agent instructions like code rather than magic.&lt;/p&gt;

&lt;p&gt;Have fun!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;what-is-a-package-registry&quot;&gt;&lt;a href=&quot;https://swiftpackageindex.com/blog/what-is-a-package-registry&quot;&gt;What is a package registry?&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://github.com/daveverwer&quot; class=&quot;author&quot;&gt;Dave Verwer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftPM resolves dependencies, the Swift Package Index helps us find them, but a package registry does the less glamorous job of serving verified, immutable source archives. That distinction matters once our builds need more than a Git URL and crossed fingers—and the nice part is we can try a registry today rather than waiting for the ecosystem to catch up.&lt;/p&gt;

&lt;h3 id=&quot;custom-operators-in-swift&quot;&gt;&lt;a href=&quot;https://wesleydegroot.nl/blog/custom-operators-in-swift&quot;&gt;Custom Operators in Swift&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://bsky.app/profile/0xwdg.bsky.social&quot; class=&quot;author&quot;&gt;Wesley de Groot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Custom operators can make a mathematical type or domain-specific language feel wonderfully natural, right up until nobody else can read the code. The useful bit here is the mechanics—prefix, postfix, infix, precedence groups, assignment, pattern matching, and function composition—paired with the reminder I’d enforce in review: if a named function is clearer, use the named function.&lt;/p&gt;

&lt;h2 id=&quot;aiml&quot;&gt;AI/ML&lt;/h2&gt;

&lt;h3 id=&quot;apple-foundation-models-hybrid-ai-with-dynamic-profiles&quot;&gt;&lt;a href=&quot;https://peterfriese.dev/blog/2026/hybrid-ai-apple-foundation-models-gemini&quot;&gt;Apple Foundation Models: Hybrid AI with Dynamic Profiles&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://bsky.app/profile/peterfriese.dev&quot; class=&quot;author&quot;&gt;Peter Friese&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On-device Apple Foundation Models are private and free, but an 8K context window, limited reasoning, and mobile thermals are real constraints, not footnotes. Dynamic Profiles make the hybrid approach clean: count tokens up front, keep suitable work on device, and route larger or harder prompts to Gemini through the same &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LanguageModelSession&lt;/code&gt; API. I like this far more than “try local and catch the failure”—users shouldn’t pay for our routing logic with battery and latency.&lt;/p&gt;

&lt;h3 id=&quot;using-ai-while-exercising-your-critical-thinking&quot;&gt;&lt;a href=&quot;https://swiftrocks.com/using-ai-without-losing-critical-thinking&quot;&gt;Using AI while exercising your critical thinking&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://github.com/rockbruno&quot; class=&quot;author&quot;&gt;Bruno Rocha&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“Cognitive surrender” is a better name for blindly forwarding AI output than the industry’s uglier medicalized label. The practical discipline is unexciting but sound: supervise complex work, demand evidence, open the cited links, and read generated code line by line. AI-assisted development still needs an engineer in the loop; otherwise we’re just an expensive meat proxy with commit access.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;measure-app-launch-time-with-instruments&quot;&gt;&lt;a href=&quot;https://swiftdevjournal.com/posts/measure-app-launch-time/&quot;&gt;Measure App Launch Time with Instruments&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://mastodon.world/@swiftdevjournal&quot; class=&quot;author&quot;&gt;Mark Szymczyk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If app launch feels slow, stop poking at random initialization code and measure it. Instruments’ App Launch template and the App Lifecycle pane show each launch phase with its duration, giving us a concrete place to start instead of another round of “it seems faster on my phone.”&lt;/p&gt;

&lt;h3 id=&quot;responding-to-geometry-changes-in-swiftui&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/RespondingToGeometryChangesInSwiftUI/&quot;&gt;Responding to geometry changes in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Resizable iPad windows and iPhone apps running on larger surfaces have made device-based layout assumptions properly obsolete. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onGeometryChange()&lt;/code&gt; lets a view derive a small &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Equatable&lt;/code&gt; value—say, whether a card should switch orientation—from the space it actually receives, and only updates state when that value changes. Return the smallest signal you need and keep it independent from the measured layout, or you’ll build a feedback loop that thrashes during resizing.&lt;/p&gt;

&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;

&lt;h3 id=&quot;unit-testing-navigation-logic-in-swiftui&quot;&gt;&lt;a href=&quot;https://azamsharp.com/2026/08/13/unit-testing-navigation-logic-in-swiftui.html&quot;&gt;Unit Testing Navigation Logic in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://www.linkedin.com/in/mohammad-azam-5537993/&quot; class=&quot;author&quot;&gt;Azam Sharp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigation stops being “just UI” the moment the destination depends on role, account state, or permissions. Representing destinations as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Route&lt;/code&gt; values and moving those decisions into a router—or a feature coordinator once the router starts becoming a junk drawer—turns them into fast Swift Testing assertions instead of brittle UI tests. That seam is small, but it pays off every time a product rule changes.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;fwc-swiftui-skills&quot;&gt;&lt;a href=&quot;https://github.com/FloWritesCode/fwc-swiftui-skills/&quot;&gt;FWC SwiftUI Skills&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;— &lt;a href=&quot;https://github.com/FloWritesCode&quot; class=&quot;author&quot;&gt;Florian Schweizer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This focused Cursor Agent Skill packages modern SwiftUI guidance for implementing and reviewing Liquid Glass with native iOS 26 APIs. Installation is straightforward through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npx skills add&lt;/code&gt;, and the narrow scope is the selling point: one well-maintained skill with concrete pitfalls beats a giant prompt that pretends to know every corner of SwiftUI.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 105</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-08-14-issue-105.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-08-14-issue-105.html</id>
    <published>2026-08-14T00:00:00+00:00</published>
    <updated>2026-08-14T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift News"/>
    <category term="Hitting Run"/>
    <category term="SwiftUI App Lifecycle"/>
    <category term="Adaptive Toolbars"/>
    <category term="Content transitions"/>
    <category term="ContentBuilder explained"/>
    <category term="Bypassing App Launch in Testing"/>
    <category term="Observable Persistency"/>
    <summary type="text">Hi folks! A lot of this week’s issue is about making the invisible parts of our apps a little less mysterious. The compiler path from Swift text to WebAssembly, SwiftUI’s type-checking speedups, concurrency runtime changes, lifecycle callbacks — none of...</summary>
    <content type="html">&lt;p&gt;Hi folks!&lt;/p&gt;

&lt;p&gt;A lot of this week’s issue is about making the invisible parts of our apps a little less mysterious. The compiler path from Swift text to WebAssembly, SwiftUI’s type-checking speedups, concurrency runtime changes, lifecycle callbacks — none of that is glamorous in the screenshot sense. But it is the stuff that decides whether our codebase feels fast, testable, and sane six months from now.&lt;/p&gt;

&lt;p&gt;There’s also a nice thread of “tell the system what you mean.” Give SwiftUI real toolbar priorities. Give tests their own launch path. Give observable state a persistence story that fits the model we already use. Less fighting defaults, more shaping intent. I’ll take that trade any week.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;whats-new-in-swift-july-2026-edition&quot;&gt;&lt;a href=&quot;https://www.swift.org/blog/whats-new-in-swift-july-2026/&quot;&gt;What’s new in Swift: July 2026 Edition&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/alexandersandberg/&quot; class=&quot;author&quot;&gt;Alexander Sandberg&lt;/a&gt;, &lt;a href=&quot;https://github.com/davelester/&quot; class=&quot;author&quot;&gt;Dave Lester&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;July’s Swift roundup has a nice mix of “big machinery moving under our feet” and small tooling wins we’ll actually feel in our codebase. Task Stealers landing in the concurrency runtime is the one to keep an eye on if our apps or services lean hard on async work, while SwiftPM’s package registry implementation nudges self-hosted package infrastructure closer to something boring and usable. I also like the reminder that contributing to Swift does not have to mean compiler archaeology; docs, website work, testing, tooling, all of it counts. Open source is healthier when the front door is not guarded by LLVM dragons.&lt;/p&gt;

&lt;h3 id=&quot;what-happens-when-you-hit-run&quot;&gt;&lt;a href=&quot;https://miniswift.run/blog/how-miniswift-works/&quot;&gt;What Happens When You Hit Run&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/toprakdeviren&quot; class=&quot;author&quot;&gt;Ugur Toprakdeviren&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A compiler walkthrough that does the rare thing: it explains lexing, parsing, semantic analysis, IR, native code, WebAssembly, and runtime support without turning into a wall of compiler jargon. MiniSwift’s trick is especially fun because the browser path is not fake Swift on a server somewhere; the compiler itself runs as WebAssembly in the tab, then compiles your Swift to WebAssembly too. That makes the whole thing feel less like magic and more like a very careful assembly line. For anyone who has ever pressed Run and vaguely trusted the universe, this is a good peek behind the curtain.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;app-lifecycle-management-in-ios&quot;&gt;&lt;a href=&quot;https://wesleydegroot.nl/blog/app-lifecycle-management-in-ios&quot;&gt;App Lifecycle Management in iOS&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/0xwdg.bsky.social&quot; class=&quot;author&quot;&gt;Wesley de Groot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lifecycle code is one of those things we ignore until our apps lose state, leak work in the background, or come back from interruption looking half-alive. This is a practical pass through UIKit delegates, scene-based lifecycle, SwiftUI’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scenePhase&lt;/code&gt;, view callbacks, background tasks, restoration, and memory warnings. Some of it is familiar, sure, but having the map in one place is useful when our app has a mix of old UIKit corners and newer SwiftUI screens. Save early, cancel deliberately, test the ugly transitions. Boring advice, still true.&lt;/p&gt;

&lt;h3 id=&quot;adaptive-swiftui-toolbars-in-ios-27&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/AdaptiveSwiftUIToolbarsInIOS27/&quot;&gt;Adaptive SwiftUI toolbars in iOS 27&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftUI toolbars are getting more honest about the world our apps live in now: resizable windows, cramped layouts, search taking over the top bar, and actions that do not all deserve equal billing. The new iOS 27 APIs let us assign visibility priorities, keep secondary commands in overflow, pin a key action to the trailing edge, and tune how navigation bars minimize while scrolling. I like this direction because it lets us describe intent instead of fighting layout after the fact. Not every button is precious; our toolbar code should be able to say that out loud.&lt;/p&gt;

&lt;h3 id=&quot;content-transition-in-swiftui&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2022/08/02/content-transition-in-swiftui/&quot;&gt;Content transition in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Content transitions are a small API with a very visible payoff: the view stays put, but the stuff inside it changes with animation instead of snapping like a cheap prototype. The examples show &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;contentTransition(.interpolate)&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.opacity&lt;/code&gt;, and the especially handy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.numericText()&lt;/code&gt; for counters, scores, and health-style readings where only part of the number changes. There’s also a useful note that the transition travels through the environment, which matters if we build custom rendering views. It is not a giant feature, but who doesn’t like deleting a pile of custom animation code?&lt;/p&gt;

&lt;h3 id=&quot;contentbuilder-explained---the-secret-behind-swiftuis-type-checking-speedup&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/contentbuilder-explained/&quot;&gt;ContentBuilder Explained - The Secret Behind SwiftUI’s Type-Checking Speedup&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/fatbobman.com&quot; class=&quot;author&quot;&gt;Xu Yang&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ContentBuilder&lt;/code&gt; looks almost suspiciously boring at first — in Xcode 27 it is a typealias to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ViewBuilder&lt;/code&gt; — and then the real story turns out to be the API shape around it. The interesting bit is SwiftUI moving shared containers like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Group&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ForEach&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Section&lt;/code&gt; toward one structural construction path, with domain meaning proven later through conditional conformance. That cuts down the compiler’s old “which builder overload is this?” guessing game at every nesting level, which explains the dramatic type-checking wins Apple has been talking about. There are caveats, especially where relaxed constraints make overloads ambiguous, but the design lesson is sharp: build the structure first, prove the capability after.&lt;/p&gt;

&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;

&lt;h3 id=&quot;how-to-bypass-swiftui-app-launch-during-unit-testing&quot;&gt;&lt;a href=&quot;https://qualitycoding.org/bypass-swiftui-app-launch-unit-testing/&quot;&gt;How to Bypass SwiftUI App Launch During Unit Testing&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://qualitycoding.org/about/&quot; class=&quot;author&quot;&gt;Jon Reid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unit tests should not pay for our whole app launch ritual: persistence, analytics, network calls, first-screen setup, all the stuff that makes test feedback slow and weird. The SwiftUI lifecycle needs a slightly different escape hatch than old AppDelegate swapping, and the post lays out both a tiny conditional approach and a more explicit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MainEntryPoint&lt;/code&gt; that chooses &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ProductionApp&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TestApp&lt;/code&gt;. I’m partial to the simple version when it fits, because fewer moving parts means fewer excuses. But if launch code has real side effects, giving tests their own empty app shell is the cleaner boundary.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;observablepersistency&quot;&gt;&lt;a href=&quot;https://github.com/danielsaidi/ObservablePersistency&quot;&gt;ObservablePersistency&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/did:plc:ezes7inrgvrj7jz23cab7hp7&quot; class=&quot;author&quot;&gt;Daniel Saidi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@Observable&lt;/code&gt; is lovely until we miss the convenience of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@AppStorage&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@SceneStorage&lt;/code&gt;, and this package steps into exactly that gap. By adopting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ObservablePersisted&lt;/code&gt;, an observable class can define persisted keys and read/write values with less boilerplate than hand-rolling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UserDefaults&lt;/code&gt; glue everywhere. It is a small library, not a new architecture, which is part of the appeal. If our state model already lives in observable types, persistence should not force us back into older patterns just to store a boolean.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 104</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-08-07-issue-104.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-08-07-issue-104.html</id>
    <published>2026-08-07T00:00:00+00:00</published>
    <updated>2026-08-07T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Protocols and Global Actors"/>
    <category term="FoundationModels hooks"/>
    <category term="Dynamic-sized SwiftUI sheets"/>
    <category term="Alignment guides in SwiftUI"/>
    <category term="Tracking SwiftUI update sources"/>
    <category term="Liquid Glass in UIKit"/>
    <category term="SubscriptionStoreView variants"/>
    <category term="Xogot for mac beta 3"/>
    <summary type="text">Hi folks! A lot of this week is about choosing the right constraint before it chooses us. Actor isolation, alignment guides, sheet detents, StoreKit paywalls, even UIKit’s Liquid Glass bruises — same story in different clothes. The platform gives us...</summary>
    <content type="html">&lt;p&gt;Hi folks!&lt;/p&gt;

&lt;p&gt;A lot of this week is about choosing the right constraint before it chooses us. Actor isolation, alignment guides, sheet detents, StoreKit paywalls, even UIKit’s Liquid Glass bruises — same story in different clothes. The platform gives us powerful defaults, but our apps get better when we understand where those defaults stop being kind and start being baggage.&lt;/p&gt;

&lt;p&gt;There’s also a nice tools thread here: Foundation Models hooks, Xogot’s Swift support and Pi inside the editor. Less ceremony, more context, fewer little bridges we have to maintain by hand. I’ll take that bargain most weeks.&lt;/p&gt;

&lt;p&gt;Have fun!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;an-even-closer-look-at-protocols-and-global-actors&quot;&gt;&lt;a href=&quot;https://www.massicotte.org/blog/protocols-and-global-actors/&quot;&gt;An Even Closer Look at Protocols and Global Actors&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mattmassicotte&quot; class=&quot;author&quot;&gt;Matt Massicotte&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Protocols and actor isolation keep looking simple right up until our APIs start leaking constraints everywhere. The useful bit here is the distinction between whole-protocol &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@MainActor&lt;/code&gt;, per-requirement isolation, and sometimes no isolation at all now that Swift 6.2 gives us better tools. We like the push to ask what the protocol really needs before stamping &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@MainActor&lt;/code&gt; on everything, because once that constraint lands in our codebase, it tends to stick.&lt;/p&gt;

&lt;h2 id=&quot;aiml&quot;&gt;AI/ML&lt;/h2&gt;

&lt;h3 id=&quot;swift-hooks-for-foundation-models-a-little-cleaner-way&quot;&gt;&lt;a href=&quot;https://medium.com/@itsuki.enjoy/swift-hooks-for-foundation-models-a-little-cleaner-way-c822ed2cb25b&quot;&gt;Swift: Hooks for Foundation Models. A Little Cleaner Way!&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/itsuki-enjoy/&quot; class=&quot;author&quot;&gt;Itsuki Kamizuru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Foundation Models hooks feel like one of those small APIs that saves a surprising amount of glue code. Instead of posting notifications around every tool call, a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LanguageModelSession.DynamicProfile&lt;/code&gt; can observe prompts, responses, activation, tool calls, and tool output in one place. For our apps, that means human-in-the-loop approval, logging, and guardrails can live near the model session instead of getting scattered through every tool implementation. Much cleaner. Also much harder to accidentally forget.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;making-a-swiftui-sheet-automatically-size-to-fit-its-content&quot;&gt;&lt;a href=&quot;https://danielsaidi.com/blog/2026/05/22/making-a-swiftui-sheet-automatically-size-to-fit-its-content&quot;&gt;Making a SwiftUI sheet automatically size to fit its content&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/did:plc:ezes7inrgvrj7jz23cab7hp7&quot; class=&quot;author&quot;&gt;Daniel Saidi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftUI sheets still make us choose from detents that are close enough, which is annoying when the content has an obvious natural height. The trick here is nicely boring: measure the sheet content with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onGeometryChange&lt;/code&gt;, feed that height back into a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.height(...)&lt;/code&gt; detent, and wrap it behind a small custom modifier. It is the kind of fix we want in a shared UI package, because nobody wants every sheet in our apps wasting half the screen for a tiny confirmation view.&lt;/p&gt;

&lt;h3 id=&quot;alignment-guides-in-swiftui&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/AlignmentGuidesInSwiftUI/&quot;&gt;Alignment guides in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alignment guides are one of SwiftUI’s best “stop fighting the layout system” tools, and yes, most of us still reach for offsets too quickly. The walkthrough moves from built-in baselines to custom guides that let a parent align around a meaningful point buried inside a child view. That matters in real interfaces: icons next to text, timeline rows, custom artwork, all the small places where our apps look just a bit off unless we give SwiftUI the right reference point.&lt;/p&gt;

&lt;h3 id=&quot;tracking-value-sources-to-prevent-recursive-swiftui-updates&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/TrackingValueSourcesToPreventRecursiveSwiftUIUpdates/&quot;&gt;Tracking value sources to prevent recursive SwiftUI updates&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/hishnash.bsky.social&quot; class=&quot;author&quot;&gt;Matthaus Woolard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a sharp little pattern for wrapped UIKit and AppKit controls: track where a binding update came from instead of comparing huge values over and over. A custom transaction value can mark the originating &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UITextView&lt;/code&gt;, then &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;updateUIView&lt;/code&gt; can skip applying the same value back to the view that just produced it. It is tiny, but the payoff is real — fewer pointless text resets, less layout churn, and no cursor jumps while someone is typing into our beautifully wrapped legacy control.&lt;/p&gt;

&lt;h3 id=&quot;liquid-glass---a-field-guide-to-uikit-compatibility-pitfalls&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/liquid-glass-a-field-guide-to-uikit-compatibility-pitfalls/&quot;&gt;Liquid Glass - A Field Guide to UIKit Compatibility Pitfalls&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/did:plc:wmcvrpqjmppuvyoucbuq3wuf&quot; class=&quot;author&quot;&gt;Megabits Studio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Liquid Glass brought the shine, but UIKit teams got the bill. This field report is full of the ugly, practical stuff: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UIBarButtonItem&lt;/code&gt; custom views losing sizing and color behavior, badges that sometimes refuse to update, tab bars getting weird around controller replacement, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WKWebView&lt;/code&gt; content needing proper safe-area CSS. The uncomfortable lesson is a good one for our apps: test every supported iOS version, especially around navigation, and the further we wander from Apple’s patterns, the more strange little caves we may fall into.&lt;/p&gt;

&lt;h3 id=&quot;mastering-storekit-2-subscriptionstoreview-in-swiftui&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2023/08/23/mastering-storekit2-subscriptionstoreview-in-swiftui/&quot;&gt;Mastering StoreKit 2. SubscriptionStoreView in SwiftUI.&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SubscriptionStoreView&lt;/code&gt; is Apple doing the thing we keep asking for: taking a miserable purchase flow and making the default path pretty reasonable. Drop in a group ID or product IDs, then let StoreKit handle loading, purchasing, upgrades, downgrades, and the current subscription state. The customization hooks are the part worth lingering on — marketing content, backgrounds, control styles, and button labels give our paywalls room to feel like our apps instead of a gray system receipt stapled to the screen. There’s also a handy gallery with all of the initializer options for your needs at &lt;a href=&quot;https://exploreswiftui.com/library/subscriptionstoreview&quot;&gt;Explore SwiftUI&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;

&lt;h3 id=&quot;net-swift-git-and-ai-land-in-xogot-for-mac&quot;&gt;&lt;a href=&quot;https://blog.xogot.com/xogot-for-mac-beta-3/&quot;&gt;.NET, Swift, Git and AI land in Xogot for Mac&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/migueldeicaza.bsky.social&quot; class=&quot;author&quot;&gt;Miguel de Icaza&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xogot for Mac Beta 3 is turning into a very Apple-native answer to “what if Godot felt like it belonged on this machine?” Swift and C# get first-class editing and debugging, Git and LFS are built in, and Pi shows up as an integrated coding assistant instead of yet another external tool to wire together. I am especially interested in the Swift side: sourcekit-lsp, LLDB, Swift Packages, and Swift scripts attached to Godot nodes is exactly the sort of weird-but-useful bridge our corner of the community tends to enjoy.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 103</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-07-31-issue-103.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-07-31-issue-103.html</id>
    <published>2026-07-31T00:00:00+00:00</published>
    <updated>2026-07-31T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift Optionals"/>
    <category term="FoundationModels Dynamic Profiles"/>
    <category term="Xcode disk space skill"/>
    <category term="SwiftUI Environment defaults gotcha"/>
    <category term="Semantic Accessibility"/>
    <category term="Guide to reusable SwiftUI Views"/>
    <category term="SwiftStash"/>
    <category term="Starling"/>
    <summary type="text">Hi folks! The thread this week is control. Not the dramatic kind — the small, boring control that keeps our apps from wobbling: stable environment defaults, optionals handled honestly, reusable views with APIs that do not fight SwiftUI, accessibility semantics...</summary>
    <content type="html">&lt;p&gt;Hi folks!&lt;/p&gt;

&lt;p&gt;The thread this week is control. Not the dramatic kind — the small, boring control that keeps our apps from wobbling: stable environment defaults, optionals handled honestly, reusable views with APIs that do not fight SwiftUI, accessibility semantics that actually say what the UI means.&lt;/p&gt;

&lt;p&gt;And then AI keeps barging into the room. Foundation Models gets a cleaner architecture story with Dynamic Profiles, Xcode cleanup becomes agent-assisted but still approval-first, and Starling shows what happens when one person points agents at a job we used to measure in teams and years. Exciting? Yes. A little unsettling? Also yes. Which is probably the right mood for 2026.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;advanced-swift-optionals&quot;&gt;&lt;a href=&quot;https://medium.com/icommunity/advanced-swift-optionals-d7823ae544e3&quot;&gt;Advanced Swift: Optionals&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/okarius/&quot; class=&quot;author&quot;&gt;Okan Orkun&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Optionals are one of those Swift features we all use daily, then occasionally misuse in ways that make our codebase feel haunted. A solid walk through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if let&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;guard let&lt;/code&gt;, chaining, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;map&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flatMap&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;compactMap&lt;/code&gt;, and the newer Swift 6.2 string interpolation default gives the whole thing some needed shape. We especially like the blunt line on force-unwrapping: use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;!&lt;/code&gt; only when crashing is the correct answer, not because we got tired of thinking. Good refresher, and probably worth sending to that teammate who still treats &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nil&lt;/code&gt; like a shrug.&lt;/p&gt;

&lt;h2 id=&quot;aiml&quot;&gt;AI/ML&lt;/h2&gt;

&lt;h3 id=&quot;build-agentic-swift-apps-with-dynamic-profiles&quot;&gt;&lt;a href=&quot;https://www.theswift.dev/posts/foundation-models-dynamic-profiles/&quot;&gt;Build Agentic Swift Apps With Dynamic Profiles&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/trevor-whittingham/&quot; class=&quot;author&quot;&gt;Trevor Whittingham&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dynamic Profiles in Foundation Models feel like one of those APIs that exists because the first wave of demos created a very real mess. Instead of rebuilding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LanguageModelSession&lt;/code&gt;s, carrying transcripts around by hand, and stuffing every tool into one giant prompt, our apps can describe the current AI mode from state: analysis now, brainstorming later, maybe Private Cloud Compute only when it earns the trip. That is a cleaner shape for agentic Swift features, but the warning is fair too: model switches mean privacy, cost, and capability decisions, not just a fancier initializer. Nice architecture piece for anyone trying to move past “chat box with tools bolted on.”&lt;/p&gt;

&lt;h3 id=&quot;how-to-free-up-xcode-disk-space-safely-with-an-ai-agent&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/ai-development/how-to-free-up-xcode-disk-space-safely-with-an-ai-agent/&quot;&gt;How to free up Xcode disk space safely with an AI Agent&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/avanderlee.com&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xcode has always eaten disk space, but agentic development makes the problem louder: worktrees, Derived Data everywhere, old runtimes, archives we are scared to delete, the whole circus. This Xcode Disk Cleanup Agent Skill takes a refreshingly conservative route by auditing first, explaining candidates, and deleting only the exact items we approve. We’re into that, because “just &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rm -rf&lt;/code&gt; DerivedData” is the kind of advice that looks efficient right up until our next build, symbolication, or simulator state matters. Practical automation, with enough brakes attached to trust it.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;the-hidden-cost-of-unstable-swiftui-environment-defaults&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/UnstableDefaultEnvironmentValuesInSwiftUI/&quot;&gt;The hidden cost of unstable SwiftUI environment defaults&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A tiny SwiftUI default value can accidentally become a little invalidation machine, and yes, that is exactly the sort of bug that makes us blame the framework first. Creating a class instance directly inside an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@Entry&lt;/code&gt; default means every fallback lookup can return a fresh reference, so views that only read that environment value may re-evaluate when unrelated environment values change. The fix is boring in the best way: store the default reference somewhere stable, or make the dependency optional and inject it explicitly from the app. File this under “small code, weird performance bill.”&lt;/p&gt;

&lt;h3 id=&quot;semantic-accessibility-in-swiftui&quot;&gt;&lt;a href=&quot;https://wesleydegroot.nl/blog/semantic-accessibility-in-swiftui&quot;&gt;Semantic Accessibility in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/0xwdg.bsky.social&quot; class=&quot;author&quot;&gt;Wesley de Groot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftUI gives us a decent accessibility baseline, but semantics are where our apps start feeling built for real people instead of merely passing a quick audit. Labels, hints, values, grouping, decorative hiding, custom actions, traits, sort priority — it is all the stuff that makes VoiceOver navigation understandable rather than noisy. The useful bit here is how concrete the examples are, especially the rating control with an adjustable action. Accessibility is not polish at the end; it is part of the control’s API, same as its binding or label.&lt;/p&gt;

&lt;h3 id=&quot;the-anatomy-of-a-reusable-swiftui-view&quot;&gt;&lt;a href=&quot;https://alexanderweiss.dev/blog/2026-07-12-the-anatomy-of-a-reusable-swiftui-view&quot;&gt;The Anatomy of a Reusable SwiftUI View&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/alexanderwe&quot; class=&quot;author&quot;&gt;Alexander Weiss&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reusable SwiftUI views go bad fast when we design them like private helper functions instead of tiny platform citizens. The strongest point here is to start with semantics and data flow before reaching for visuals: is the component semantic or prescriptive, does it own state, should it use a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Binding&lt;/code&gt;, and what invalid states should be impossible? The examples around &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Card&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tag&lt;/code&gt;, and a stylable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rating&lt;/code&gt; control show how far we can get by copying Apple’s API instincts — &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LocalizedStringResource&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ShapeStyle&lt;/code&gt;, environment values, custom styles, and accessibility baked in. Especially now that agents can spray a bad component API across our codebase in minutes, designing the call site first feels less optional than ever.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;swiftstash&quot;&gt;&lt;a href=&quot;https://github.com/tklocek/SwiftStash&quot;&gt;SwiftStash&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/tklocek&quot; class=&quot;author&quot;&gt;Tomasz Klocek&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SwiftStash is a young package, but the pitch is easy to understand: property-wrapper persistence that covers UserDefaults, Keychain, SwiftUI bindings, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Codable&lt;/code&gt; values, observation, and stricter Swift 6 behavior without dragging in third-party dependencies. It reads like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@AppStorage&lt;/code&gt; where that makes sense, then keeps going into places &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@AppStorage&lt;/code&gt; was never meant to handle: non-SwiftUI code, secrets, typed updates, and “was this ever set?” checks. I like that the README also says the quiet part out loud — if &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@AppStorage&lt;/code&gt; already solves the job, keep it. For apps with both settings and credentials scattered around, though, one syntax for both stores could clean up a lot of little persistence corners.&lt;/p&gt;

&lt;h2 id=&quot;interesting&quot;&gt;Interesting&lt;/h2&gt;

&lt;h3 id=&quot;starling--the-first-real-desktop-written-by-ai&quot;&gt;&lt;a href=&quot;https://starling.build&quot;&gt;Starling — the first real desktop written by AI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/starling-build&quot; class=&quot;author&quot;&gt;Starling&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Starling is not iOS development, exactly, but it is too weird and too Swift-adjacent to ignore: a real Linux desktop, written in Swift/C/C++, directed by one person with AI doing a huge amount of the building. The interesting claim is not the headline; it is the bar they set for “real” — drives the GPU through DRM/KMS, speaks Wayland and X11, and runs Chrome, Slack, Zoom, and other apps it did not write. Whether or not Starling becomes something people daily-drive, the labor collapse is the part worth staring at. If one person can push a desktop this far in six months, our assumptions about what agentic coding can produce are already stale.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 102</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-07-24-issue-102.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-07-24-issue-102.html</id>
    <published>2026-07-24T00:00:00+00:00</published>
    <updated>2026-07-24T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Typealiases"/>
    <category term="Launch time optimizations"/>
    <category term="Mastering the Model layer"/>
    <category term="SwiftUI drawing"/>
    <category term="Adaptive non-modal panels"/>
    <category term="SwiftUI is a graph"/>
    <category term="HistoryObserver for syncing with remote"/>
    <category term="transcribe.cpp"/>
    <summary type="text">Hi again! Sometimes it feels like we’re just skimming the surface. “It works” is fine for a prototype, but it’s a nightmare for a production app, especially when we’re fighting iOS 27’s new layout quirks or trying to stop our...</summary>
    <content type="html">&lt;p&gt;Hi again!&lt;/p&gt;

&lt;p&gt;Sometimes it feels like we’re just skimming the surface. “It works” is fine for a prototype, but it’s a nightmare for a production app, especially when we’re fighting iOS 27’s new layout quirks or trying to stop our state from becoming a tangled mess.&lt;/p&gt;

&lt;p&gt;This week, we’re digging in. Really digging in. We’ve got everything from the internal machinery of SwiftUI’s attribute graph to local STT running on Metal. It’s time to stop just using the facade and actually start owning our codebase.&lt;/p&gt;

&lt;p&gt;Let’s go!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;typealias-usage-in-swift&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/swift/typealias-usage-swift/&quot;&gt;Typealias Usage in Swift&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/avanderlee.com&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Typealiases aren’t just for fancy-looking signatures; they’re about making the codebase actually speak the language of the business. Using them for things like currency or complex completion handlers cleans up the noise. It’s a small win, but those are the ones that keep a project from feeling like a chore to read.&lt;/p&gt;

&lt;h3 id=&quot;how-did-apple-cut-launch-time-by-30-in-ios-27&quot;&gt;&lt;a href=&quot;https://blog.jacobstechtavern.com/p/ios-27-launch-time&quot;&gt;How did Apple cut launch time by 30% in iOS 27?&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/jacobstechtavern.com&quot; class=&quot;author&quot;&gt;Jacob Bartlett&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple claims a 30% boost in launch times for iOS 27, and the Instruments traces mostly back it up. But let’s be real: no amount of OS-level magic fixes the bloat from ten different marketing SDKs. We still have to do the hard work of profiling our own critical path.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;mastering-the-model-layer-iron-clad-state-management-in-model-driven-apps&quot;&gt;&lt;a href=&quot;https://getstream.io/blog/mvvm-state-management/&quot;&gt;Mastering the Model Layer: Iron-Clad State Management in Model-Driven Apps&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://getstream.io/blog/&quot; class=&quot;author&quot;&gt;Lucas van D&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s be honest, we’ve seen devs that just shoehorn state into ViewModels and hope for the best until the app becomes a tangled mess of “bucket-brigade” updates. The real way out is to treat State as the absolute center of the universe—model it, test the hell out of its mutations, and then build the UI. It’s a bit more legwork upfront, but getting those iron-clad business rules in place means we stop playing whack-a-mole with bugs in our production apps.&lt;/p&gt;

&lt;h3 id=&quot;geometry-compositing-and-drawing-groups-in-swiftui&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/GeometryCompositingAndDrawingGroupsInSwiftUI/&quot;&gt;Geometry, Compositing and Drawing Groups in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ever wondered why your SwiftUI animation looks like it’s falling apart? It’s usually a geometry or compositing boundary issue. Getting a handle on when to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;geometryGroup&lt;/code&gt; versus &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drawingGroup&lt;/code&gt; is the difference between a “good enough” UI and one that actually feels polished.&lt;/p&gt;

&lt;h3 id=&quot;building-adaptive-non-modal-panels-in-swiftui&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/BuildingAdaptiveNonModalPanelsInSwiftUI/&quot;&gt;Building Adaptive Non-Modal Panels in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/hishnash.bsky.social&quot; class=&quot;author&quot;&gt;Matthaus Woolard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the new resizability requirements in iOS 27, the old sheet APIs just don’t cut it for landscape on iPhone. Building a custom overlay-based panel is a bit of a trek, but it’s the only way to keep our maps interactive while showing details. It’s a great example of when to stop fighting the system and just build the tool we need.&lt;/p&gt;

&lt;h3 id=&quot;swiftui-is-one-graph-over-40-years-of-engineering&quot;&gt;&lt;a href=&quot;https://aleahim.com/blog/swiftui-is-one-graph/&quot;&gt;SwiftUI Is One Graph, Over 40+ Years of Engineering&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/mihaelamj&quot; class=&quot;author&quot;&gt;Mihaela Jakić&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stop thinking of SwiftUI as a view tree; it’s a demand-driven attribute graph. Once you realize it’s just a giant set of rules and cached values, the “magic” of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@State&lt;/code&gt; and identity actually makes sense. If we just use the facade, we’re just users, not developers.&lt;/p&gt;

&lt;h2 id=&quot;data&quot;&gt;Data&lt;/h2&gt;

&lt;h3 id=&quot;syncing-swiftdata-with-a-custom-backend-using-historyobserver&quot;&gt;&lt;a href=&quot;https://azamsharp.com/2026/07/16/syncing-swiftdata-with-a-custom-backend-using-historyobserver.html&quot;&gt;Syncing SwiftData With A Custom Backend Using HistoryObserver&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/mohammad-azam-5537993&quot; class=&quot;author&quot;&gt;Mohammad Azam&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Syncing SwiftData to a custom backend used to be a nightmare of manual tracking. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HistoryObserver&lt;/code&gt; in iOS 27 finally gives us a centralized way to watch the ledger. The trick is using soft deletes and author tags to avoid those lovely infinite sync loops we’ve all accidentally built.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;transcribecpp&quot;&gt;&lt;a href=&quot;https://github.com/handy-computer/transcribe.cpp&quot;&gt;transcribe.cpp&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/cjpais&quot; class=&quot;author&quot;&gt;CJ Pais&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Local speech-to-text that actually runs fast on Apple Silicon is a game changer. This library brings a massive range of models to the Metal backend via ggml. If we’re looking to add robust transcription to our apps without sending audio to a cloud API, this is the way to go.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 101</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-07-17-issue-101.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-07-17-issue-101.html</id>
    <published>2026-07-17T00:00:00+00:00</published>
    <updated>2026-07-17T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Task duration pitfalls"/>
    <category term="User Diagnostics with AI"/>
    <category term="macOS apps without opening Xcode"/>
    <category term="Spec Kit"/>
    <category term="macOS apps with SwiftUI"/>
    <category term="Xcode Previews"/>
    <category term="LiquidGlass rotation"/>
    <category term="Equatable properties in Observable classes"/>
    <summary type="text">Hi folks, It’s a very practical issue this week: less “look at the shiny thing,” more “how do we keep our apps from wobbling when real users, real devices, and real shipping pipelines get involved?” SwiftUI is still growing into...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;It’s a very practical issue this week: less “look at the shiny thing,” more “how do we keep our apps from wobbling when real users, real devices, and real shipping pipelines get involved?” SwiftUI is still growing into the Mac, Observation still has sharp performance edges, and agentic coding is clearly moving past loose prompts into repeatable workflows. I like that mix. It feels like where our codebases actually live: half platform nuance, half tooling discipline, and a bunch of tiny decisions that either save us later or make future-us deeply annoyed.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;task-alive-duration-when-device-is-locked&quot;&gt;&lt;a href=&quot;https://developer.apple.com/forums/thread/836879&quot;&gt;Task alive duration when device is locked&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://developer.apple.com/forums/thread/836879&quot; class=&quot;author&quot;&gt;Apple Developer Forums&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A crisp reminder that a Swift &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Task&lt;/code&gt; is not a magic background execution coupon. If iOS suspends our process, the worker threads stop, URLSession work can get defuncted, servers may time out, and the app might never be resumed before termination. The practical menu is familiar but worth repeating: prevent suspension where allowed, cancel before backgrounding, tolerate failure, or use background URLSession when that’s the job.&lt;/p&gt;

&lt;h2 id=&quot;aiml&quot;&gt;AI/ML&lt;/h2&gt;

&lt;h3 id=&quot;user-diagnostics-reports-solving-app-bugs-faster-with-ai-agents&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/debugging/introducing-diagnostics-improved-debugging-and-user-support/&quot;&gt;User Diagnostics Reports: Solving app bugs faster with AI Agents&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/avanderlee.com&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Diagnostics reports are one of those boring-sounding features that become gold the first time a user says “it doesn’t work” and gives you nothing else. The pitch here is simple: collect app version, device context, relevant state, and logs in a structured way so support and AI agents can reason from facts instead of guesswork. I’m very into this direction, because our debugging loop should not start with three emails asking for information the app already knows.&lt;/p&gt;

&lt;h3 id=&quot;building-and-shipping-mac-and-ios-apps-without-ever-opening-xcode&quot;&gt;&lt;a href=&quot;https://scottwillsey.com/building-and-shipping-mac-and-ios-apps-without-ever-opening-xcode/&quot;&gt;Building and Shipping Mac and iOS Apps Without Ever Opening Xcode&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/scottwillsey.com&quot; class=&quot;author&quot;&gt;Scott Willsey&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xcode still needs to be installed, yes, but it does not need to be the room we live in. The workflow here is delightfully blunt: use XcodeGen, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xcodebuild&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;notarytool&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stapler&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;devicectl&lt;/code&gt;, and a checked-in release script so an agent can build, sign, notarize, install, and deploy without clicking through Organizer. There’s setup pain once — certificates, keychain credentials, team IDs — but after that, our shipping path becomes a command the agent can actually run and verify.&lt;/p&gt;

&lt;h3 id=&quot;spec-kit-spec-driven-development-in-an-ios-project&quot;&gt;&lt;a href=&quot;https://emredegirmenci.substack.com/p/spec-kit-spec-driven-development&quot;&gt;Spec Kit (Spec-Driven Development) in an iOS Project&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://substack.com/@emredegirmenci&quot; class=&quot;author&quot;&gt;Emre Degirmenci&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Spec-driven development feels like the needed backlash to “prompt, pray, accept diff.” The walkthrough puts GitHub’s Spec Kit into a real SwiftUI + TCA project, then drives a Favorites sort and search feature through constitution, spec, clarify, plan, tasks, analyze, and implementation. The best part is not the tooling glamour; it’s that architecture rules, localization requirements, and test-first reducer logic become artifacts the agent has to keep looking at instead of tribal knowledge buried in our heads.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;a-wwdc-26-update-on-building-a-mac-assed-app-with-swiftui&quot;&gt;&lt;a href=&quot;https://pfandrade.me/blog/swiftui-mac-assed-wwdc27-update/&quot;&gt;A WWDC 26 Update on Building a Mac-assed App with SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/pfandrade/&quot; class=&quot;author&quot;&gt;Paulo Andrade&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A good follow-up for anyone trying to make SwiftUI feel properly Mac-like instead of “iOS app wearing a menu bar.” The useful bits are small but real: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;backgroundProminence&lt;/code&gt; can stand in for custom selection emphasis in some cases, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.onDragSessionUpdated&lt;/code&gt; looks like the drag-and-drop hook we’ve been missing, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.reorderable&lt;/code&gt; may finally make the common case less annoying. Still, the bigger point lands harder: these gaps are rarely dramatic by themselves, but pile enough of them into our apps and suddenly we’re back to reimplementing platform behavior by hand.&lt;/p&gt;

&lt;h3 id=&quot;the-power-of-previews-in-xcode&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2024/11/26/the-power-of-previews-in-xcode/&quot;&gt;The power of previews in Xcode&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previews keep getting better, and the newer pieces are more than convenience sugar. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@Previewable&lt;/code&gt; cuts out those throwaway wrapper views we keep making just to hold &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@State&lt;/code&gt;, while &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PreviewModifier&lt;/code&gt; gives us reusable preview environments for things like in-memory SwiftData containers or app stores. Who doesn’t like less preview boilerplate, especially when it also makes our component states easier to actually inspect?&lt;/p&gt;

&lt;h3 id=&quot;rotating-liquid-glass-in-swiftui-without-breaking-the-shape&quot;&gt;&lt;a href=&quot;https://livsycode.com/swiftui/liquid-glass-rotating/&quot;&gt;Rotating Liquid Glass in SwiftUI without breaking the shape&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/artem-mirzabekian/&quot; class=&quot;author&quot;&gt;Artem Mirzabekian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Liquid Glass makes a simple rotation suddenly less simple, because the effect is tied to bounds and geometry in a way a plain background is not. The workaround leans on a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GeometryEffect&lt;/code&gt; plus &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ignoredByLayout()&lt;/code&gt; so the rotation stays visual instead of leaking into layout calculations. I’d be careful with the underscored &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_RotationEffect&lt;/code&gt;, but the lesson is bigger and useful: SwiftUI layout geometry and rendered geometry are not the same thing, and sometimes our UI only behaves once we treat them separately.&lt;/p&gt;

&lt;h3 id=&quot;equatable-properties-in-observable-classes&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/EquatablePropertiesInObservableClasses/&quot;&gt;Equatable properties in @Observable classes&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A neat performance detail hiding inside Observation: whether an assignment invalidates dependent SwiftUI views can depend on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Equatable&lt;/code&gt;. Custom value types stored in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@Observable&lt;/code&gt; classes notify on every assignment unless Swift can compare the old and new values, so unchanged data from polling, async streams, or framework callbacks can still cause redraws. Adding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Equatable&lt;/code&gt; to those small model structs is not glamorous, but it can keep our views quiet when nothing actually changed.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 100</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-07-10-issue-100.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-07-10-issue-100.html</id>
    <published>2026-07-10T00:00:00+00:00</published>
    <updated>2026-07-10T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Observations"/>
    <category term="SwiftUI custom bindings"/>
    <category term="Splitting large views"/>
    <category term="Custom pull-to-refresh for SwiftUI"/>
    <category term="Device orientation monitoring"/>
    <category term="SwiftUI&apos;s privacySensitive()"/>
    <category term="XCTest meets MainActor"/>
    <category term="Functional SwiftUI"/>
    <summary type="text">Hi folks, This week marks our 100th edition and is all about stopping the fight with SwiftUI. Whether it’s finally getting a handle on those annoying re-renders by swapping closure bindings for subscripts, or actually following Apple’s advice to split...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;This week marks our 100th edition and is all about stopping the fight with SwiftUI. Whether it’s finally getting a handle on those annoying re-renders by swapping closure bindings for subscripts, or actually following Apple’s advice to split views into structs instead of computed properties, we’re moving toward a world where our code actually matches how the framework thinks. Throw in some Swift 6 concurrency fixes for our tests and a proper way to stream observation changes, and we’ve got a lot of ground to cover to keep our apps snappy and our builds warning-free.&lt;/p&gt;

&lt;p&gt;Have fun!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;streaming-changes-with-observations&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2025/07/30/streaming-changes-with-observations/&quot;&gt;Streaming changes with Observations&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Observations&lt;/code&gt; bit lets us turn observable models into async streams. No more manually triggering recursive observation or fighting with the Swift Concurrency world. It’s a clean bridge between reactive updates and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for await&lt;/code&gt; loops that makes our UI code feel way less clunky.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;custom-bindings-in-swiftui-closures-vs-subscripts&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/CustomBindingsInSwiftUIClosuresVsSubscripts/&quot;&gt;Custom bindings in SwiftUI: closures vs subscripts&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ve all used &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Binding(get:set:)&lt;/code&gt; and wondered why our views are re-rendering for no reason. Turns out, creating these closures in the body is a performance trap. Switching to labeled subscripts in the model gives SwiftUI a stable dependency to track and keeps our rows from flickering during unrelated state updates.&lt;/p&gt;

&lt;h3 id=&quot;splitting-large-swiftui-views-in-the-apples-way&quot;&gt;&lt;a href=&quot;https://emredegirmenci.substack.com/p/splitting-large-swiftui-views-in&quot;&gt;Splitting Large SwiftUI Views in the Apple’s way&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://substack.com/@emredegirmenci&quot; class=&quot;author&quot;&gt;Emre Degirmenci&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple’s latest guidance is clear: stop using computed properties to split your views. While &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@ViewBuilder&lt;/code&gt; is great for tiny local branches, it doesn’t create a new invalidation boundary. Moving heavy sections into their own private view structs is the only real way to stop wasteful re-evaluations and actually gain some performance.&lt;/p&gt;

&lt;h3 id=&quot;a-custom-pull-to-refresh-in-swiftui&quot;&gt;&lt;a href=&quot;https://livsycode.com/swiftui/a-custom-pull-to-refresh-in-swiftui/&quot;&gt;A Custom Pull-to-Refresh in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/artem-mirzabekian&quot; class=&quot;author&quot;&gt;Artem Mirzabekian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.refreshable&lt;/code&gt; just isn’t enough when the designers want a branded, animated experience. This entry shows an approach that treats the refresh lifecycle as a state machine, giving us total control over the indicator’s progress and animations. It’s a solid blueprint for anyone who’s tired of the generic system spinner.&lt;/p&gt;

&lt;h3 id=&quot;little-swiftui-tip-get--set--watch-interface-orientation--orientation-lock&quot;&gt;&lt;a href=&quot;https://medium.com/@itsuki.enjoy/little-swiftui-tip-get-set-watch-interface-orientation-orientation-lock-5076a0923c14&quot;&gt;Little SwiftUI Tip: Get &amp;amp; Set &amp;amp; Watch Interface Orientation &amp;amp; Orientation Lock&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://medium.com/@itsuki.enjoy&quot; class=&quot;author&quot;&gt;Itsuki&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tracking interface orientation in SwiftUI is surprisingly annoying since it’s not in the environment. Using KVO on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;effectiveGeometry&lt;/code&gt; is the way to go to keep our UI in sync. It’s a bit of a workaround, but it’s the most reliable way to handle orientation locks and rotations without fighting the framework.&lt;/p&gt;

&lt;h3 id=&quot;how-to-mark-content-as-private-using-privacysensitive&quot;&gt;&lt;a href=&quot;https://www.hackingwithswift.com/quick-start/swiftui/how-to-mark-content-as-private-using-privacysensitive&quot;&gt;How to mark content as private using privacySensitive()&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/twostraws.bsky.social&quot; class=&quot;author&quot;&gt;Paul Hudson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;privacySensitive()&lt;/code&gt;, we can finally tell SwiftUI which parts of our views should be hidden on the lock screen or in widgets. Pair it with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.redacted(reason: .privacy)&lt;/code&gt; to easily mask out credit card numbers or personal info. It’s a small but essential tool for keeping our users’ data safe by default.&lt;/p&gt;

&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;

&lt;h3 id=&quot;xctest-meets-mainactor-how-to-fix-strict-concurrency-warnings&quot;&gt;&lt;a href=&quot;https://qualitycoding.org/xctest-mainactor/&quot;&gt;XCTest Meets @MainActor: How to Fix Strict Concurrency Warnings&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://qualitycoding.org/about/&quot; class=&quot;author&quot;&gt;Jon Reid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flipping the switch to Strict Concurrency in Swift 6 turns our test suites into a sea of warnings. The fix is simpler than it looks: mark the test class as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@MainActor&lt;/code&gt; and switch to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;async throws&lt;/code&gt; versions of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setUp&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tearDown&lt;/code&gt;. It’s the quickest path to a clean build without abandoning XCTest.&lt;/p&gt;

&lt;h2 id=&quot;talk&quot;&gt;Talk&lt;/h2&gt;

&lt;h3 id=&quot;swiftui-is-functional&quot;&gt;&lt;a href=&quot;https://bobkonf.de/2026/chakravarty.html&quot;&gt;SwiftUI is functional&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/tacticalgrace.justtesting.org&quot; class=&quot;author&quot;&gt;Manuel Chakravarty&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A deep dive into why SwiftUI’s declarative nature is actually a functional programming win. It’s not just about the syntax; it’s about how the render tree and observation framework reconcile state. For those of us coming from a more OO background, it’s a great reminder of why the MVU pattern scales so much better for modern UIs.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 99</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-07-03-issue-99.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-07-03-issue-99.html</id>
    <published>2026-07-03T00:00:00+00:00</published>
    <updated>2026-07-03T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Apple acquires Play"/>
    <category term="Goodnotes on WASM"/>
    <category term="Swift 6.4 Concurrency tweaks"/>
    <category term="Swift 6.4 Testing"/>
    <category term="Actors in Swift"/>
    <category term="SwiftUI Animation Debugging"/>
    <category term="SwiftUI Performance"/>
    <category term="ATProtoKit"/>
    <summary type="text">Hi folks, Swift is in a strange, high-gear phase right now. Between the deep-dive into actor internals and the humbling realization that SwiftUI performance is mostly just a game of ‘spot the difference’ for the compiler, it feels like we’re...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;Swift is in a strange, high-gear phase right now. Between the deep-dive into actor internals and the humbling realization that SwiftUI performance is mostly just a game of ‘spot the difference’ for the compiler, it feels like we’re finally peeling back the curtain on the machinery. And seeing millions of lines of Swift actually humming along in a browser via Wasm? That’s the kind of ‘future is now’ win that makes the struggle with ghosty animation bugs worth it. From Swift 6.4’s quality-of-life wins to Apple swallowing our favorite prototyping tools, this week is all about power gains and the growing pains that come with them.&lt;/p&gt;

&lt;p&gt;Enjoy the mix!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;news&quot;&gt;News&lt;/h2&gt;

&lt;h3 id=&quot;apple-acquires-award-winning-app-play&quot;&gt;&lt;a href=&quot;https://thedailytechfeed.com/apple-acquires-award-winning-app-play/&quot;&gt;Apple Acquires Award-Winning App ‘Play’&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://thedailytechfeed.com&quot; class=&quot;author&quot;&gt;The Daily Tech Feed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple officially announced their acquisition of Play, that clever SwiftUI prototyping tool. It’s off the App Store now, so we can only hope its best bits end up in Xcode soon. Who doesn’t want a more fluid way to iterate on our apps?&lt;/p&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;bringing-goodnotes-to-the-web-with-swift-and-webassembly&quot;&gt;&lt;a href=&quot;https://www.swift.org/blog/bringing-goodnotes-to-web-with-swift/&quot;&gt;Bringing Goodnotes to the web with Swift and WebAssembly&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/kateinoigakukun/&quot; class=&quot;author&quot;&gt;Yuta Saito&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Goodnotes just proved that we can actually run millions of lines of Swift in a browser using Wasm without sacrificing that 60 FPS ink feel. They shared a ton about using WASI threads and custom actor executors to keep things snappy. It’s a massive win for those of us wanting a truly shared codebase across iOS and the web.&lt;/p&gt;

&lt;h3 id=&quot;swift-64-whats-new-in-concurrency&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/concurrency/swift-6-4-whats-new-in-concurrency/&quot;&gt;Swift 6.4: What’s New in Concurrency&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/AvdLee&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift 6.4 is sneaking in some really practical quality-of-life bits. Async &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;defer&lt;/code&gt; is a godsend for cleanup, and cancellation shields finally let us finish critical work without being cut off. Also, those new warnings for ignored throwing tasks will save us from a lot of “why did this fail silently” debugging sessions.&lt;/p&gt;

&lt;h3 id=&quot;swift-64-brings-new-language-features-and-swift-testingxctest-interop&quot;&gt;&lt;a href=&quot;https://www.infoq.com/news/2026/06/swift-6-4-beta-features/&quot;&gt;Swift 6.4 Brings New Language Features and Swift Testing/XCTest Interop&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/sdesimone&quot; class=&quot;author&quot;&gt;Sergio De Simone&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beyond concurrency, Swift 6.4 is cleaning up the edges with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;weak let&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~Sendable&lt;/code&gt; for when we need to be explicit about thread-safety. The interoperability between Swift Testing and XCTest is the real headline here, making the migration path a lot less painful. Plus, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;anyAppleOS&lt;/code&gt; is a nice touch to stop the boilerplate from piling up in our availability checks.&lt;/p&gt;

&lt;h3 id=&quot;actors-in-swift-the-problem-they-solve-and-how-it-works&quot;&gt;&lt;a href=&quot;https://www.swiftdifferently.com/blog/swift/concurrency/how-actors-work&quot;&gt;Actors in Swift: The Problem They Solve and How it Works&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/EngOmarElsayed&quot; class=&quot;author&quot;&gt;Omar Elsayed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A deep dive into the “aha” moment of actor isolation. It cuts through the mystery of why we use them and warns us about the reentrancy trap—where the world changes under our feet during an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;await&lt;/code&gt;. If you’ve ever wondered why your actor state felt unstable, this is the read you need.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;debugging-notes-on-two-swiftui-animation-bugs&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/debugging-notes-on-two-swiftui-animation-bugs/&quot;&gt;Debugging Notes on Two SwiftUI Animation Bugs&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/fatbobman.com&quot; class=&quot;author&quot;&gt;Xu Yang&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A raw look at chasing those ghosty SwiftUI animation bugs that only show up on specific iOS versions. One’s a lesson in why implicit animations are safer than &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;withAnimation&lt;/code&gt; for complex trees, and the other is a weird case where &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if/else&lt;/code&gt; beats a ternary for identity reasons. It’s a reminder that sometimes a bit of “comment-it-out” intuition is all we’ve got.&lt;/p&gt;

&lt;h3 id=&quot;swiftui-performance-is-not-about-views-it-is-about-diffing&quot;&gt;&lt;a href=&quot;https://hackernoon.com/swiftui-performance-is-not-about-views-it-is-about-diffing&quot;&gt;SwiftUI Performance Is Not About Views. It Is About Diffing&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://hackernoon.com/u/element&quot; class=&quot;author&quot;&gt;Maxim Egorov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Performance in SwiftUI isn’t about the number of views—it’s about whether the framework can actually tell what changed. The real culprits are usually non-diffable closures and lazy computed properties masquerading as views. The fix is to be explicit with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Equatable&lt;/code&gt; and create real diffing boundaries by extracting actual view structs.&lt;/p&gt;

&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;

&lt;h3 id=&quot;atprotokit&quot;&gt;&lt;a href=&quot;https://github.com/MasterJ93/ATProtoKit&quot;&gt;ATProtoKit&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/MasterJ93&quot; class=&quot;author&quot;&gt;Christopher Jr Riley&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A solid Swift library for anyone looking to build on Bluesky or the AT Protocol. It wraps the complex xrpc and api logic into something that feels native to our language. It’s still unstable, but it’s the quickest way to get a bot or a client running without fighting the protocol from scratch.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 98</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-06-26-issue-98.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-06-26-issue-98.html</id>
    <published>2026-06-26T00:00:00+00:00</published>
    <updated>2026-06-26T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift Package Index joins Apple"/>
    <category term="Swift in Kernel"/>
    <category term="AWS IoT SDK for Swift"/>
    <category term="swift-os"/>
    <category term="SwiftUI reordering"/>
    <category term="Toolbar items"/>
    <category term="CoreData to SwiftData"/>
    <category term="Apple Container"/>
    <summary type="text">Hi folks, Swift is finally hitting the metal in a big way. Between Apple’s KernelKit slipping into the kernel and a full-blown Swift-based OS, the ‘it’s just for apps’ era is officially over. On the UI front, iOS 27 finally...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;Swift is finally hitting the metal in a big way. Between Apple’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KernelKit&lt;/code&gt; slipping into the kernel and a full-blown Swift-based OS, the ‘it’s just for apps’ era is officially over. On the UI front, iOS 27 finally fixes some of the most annoying parts of SwiftUI toolbars and reordering, so we can stop fighting the framework for five minutes. We’ve also got a cautionary tale on SwiftData migrations that’ll save you from a few launch-day crashes, plus some native IoT tooling from AWS and a new Swift-powered container tool from Apple.&lt;/p&gt;

&lt;p&gt;A lot to chew on this week. Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;swift-package-index-joins-apple&quot;&gt;&lt;a href=&quot;https://swiftpackageindex.com/blog/swift-package-index-joins-apple&quot;&gt;Swift Package Index joins Apple&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/tkremenek&quot; class=&quot;author&quot;&gt;Ted Kremenek&lt;/a&gt;, &lt;a href=&quot;https://github.com/daveverwer&quot; class=&quot;author&quot;&gt;Dave Verwer&lt;/a&gt;, &lt;a href=&quot;https://github.com/finestructure&quot; class=&quot;author&quot;&gt;Sven A. Schmidt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift Package Index finally joined Apple, and honestly, it’s a win for all of us. We can still rely on it for package discovery and those crucial compatibility checks without worrying about it disappearing into a corporate black hole. It’s staying open source, and they’re promising new stuff like package signing, so our project dependencies might actually get a bit more secure.&lt;/p&gt;

&lt;h3 id=&quot;apple-internals-swift-in-the-kernel&quot;&gt;&lt;a href=&quot;https://blog.calif.io/p/apple-internals-swift-in-the-kernel&quot;&gt;Apple Internals: Swift in the Kernel&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://substack.com/@therealblacktop&quot; class=&quot;author&quot;&gt;Josh Maine&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple is moving Swift into the kernel with this new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KernelKit&lt;/code&gt; thing. We’re seeing the Embedded Swift runtime pop up in macOS 27’s pthread kext, though the core of XNU is still stuck in C/C++. It looks like they’re just laying the plumbing for now, which is exactly how you avoid breaking everything at once.&lt;/p&gt;

&lt;h3 id=&quot;aws-iot-device-sdk-for-swift-is-now-generally-available&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/06/aws-iot-device-sdk-swift/&quot;&gt;AWS IoT Device SDK for Swift is now generally available&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://aws.amazon.com&quot; class=&quot;author&quot;&gt;AWS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS gave us a native Swift SDK for IoT at last. No more wrestling with wrappers when we want to build secure device fleets on iOS or macOS. It’s got the usual suspects—Device Shadow, Jobs, and TLS 1.3 support—so we can actually build production-ready IoT apps without the headache.&lt;/p&gt;

&lt;h3 id=&quot;swift-os--a-real-operating-system-written-in-swift&quot;&gt;&lt;a href=&quot;https://swiftos.tech&quot;&gt;swift-os — a real operating system, written in Swift&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/asaptf&quot; class=&quot;author&quot;&gt;Andrey Sapunov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Someone actually went and (vibe?) wrote a whole OS in Swift. It’s not just a “hello world” kernel; we’re talking a native TCP/IP stack, an HTTP server, and even an AI inference server, all running on Embedded Swift. It’s experimental, sure, but it’s a hell of a way to prove that Swift can live comfortably at the metal.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;new-swiftui-apis-for-reordering-and-drag-and-drop-on-ios-27&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/NewSwiftUIAPIsForReorderingAndDragAndDropOniOS27/&quot;&gt;New SwiftUI APIs for reordering and drag and drop on iOS 27&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can do proper reordering in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LazyVStack&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LazyVGrid&lt;/code&gt; without writing a mountain of custom coordination code now. iOS 27 gives us &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.reorderable()&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.reorderContainer()&lt;/code&gt;, which basically means the system handles the animations and placeholders while we just update our model. It’s about time these APIs hit iPhone and iPad.&lt;/p&gt;

&lt;h3 id=&quot;taking-control-of-toolbar-items-in-swiftui&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2026/06/23/taking-control-of-toolbar-items-in-swiftui/&quot;&gt;Taking control of toolbar items in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Toolbars in SwiftUI can be a nightmare of “where did my button go?” on different platforms. The new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.visibilityPriority&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ToolbarOverflowMenu&lt;/code&gt; give us a way to actually control what stays visible and what gets hidden. Plus, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.toolbarMinimizeBehavior&lt;/code&gt; is a nice touch for those of us who want the navigation bar to get out of the way when the user scrolls.&lt;/p&gt;

&lt;h2 id=&quot;data&quot;&gt;Data&lt;/h2&gt;

&lt;h3 id=&quot;adopting-swiftdata-for-a-core-data-app&quot;&gt;&lt;a href=&quot;https://emredegirmenci.substack.com/p/adopting-swiftdata-for-a-core-data&quot;&gt;Adopting SwiftData for a Core Data app&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://substack.com/@emredegirmenci&quot; class=&quot;author&quot;&gt;Emre Degirmenci&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Moving from Core Data to SwiftData sounds like a dream until you hit your first schema mismatch crash. Emre shares a practical “room by room” migration strategy, highlighting the critical need to match the legacy SQLite schema exactly on the first pass. It’s a great reminder that “cleaning up” the model while migrating is a one-way ticket to a fatal error.&lt;/p&gt;

&lt;h2 id=&quot;vm&quot;&gt;VM&lt;/h2&gt;

&lt;h3 id=&quot;container&quot;&gt;&lt;a href=&quot;https://github.com/apple/container&quot;&gt;container&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/apple&quot; class=&quot;author&quot;&gt;Apple&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple just open-sourced a tool called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container&lt;/code&gt; that lets you run Linux containers as lightweight VMs on Apple Silicon. It’s written in Swift, OCI-compatible, and requires macOS 26. Finally, a way to handle containers on Mac that doesn’t feel like a hack.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 97</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-06-19-issue-97.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-06-19-issue-97.html</id>
    <published>2026-06-19T00:00:00+00:00</published>
    <updated>2026-06-19T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift at Apple"/>
    <category term="Claude with FoundationModels"/>
    <category term="Measurement Unit Fonts in SwiftUI"/>
    <category term="horizontalSizeClass"/>
    <category term="Dynamic Text in SwiftUI"/>
    <category term="New SwiftUI Prominent Tabs"/>
    <category term="Custom SwiftTesting Assertions"/>
    <category term="Tinkerble"/>
    <summary type="text">Hi folks, This week, we’re diving into some serious performance gains as Apple swaps C for Swift in their TrueType hinting interpreter, and exploring a new frontier with Anthropic’s Claude integration for the Foundation Models framework. We’ve got some essential...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;This week, we’re diving into some serious performance gains as Apple swaps C for Swift in their TrueType hinting interpreter, and exploring a new frontier with Anthropic’s Claude integration for the Foundation Models framework. We’ve got some essential SwiftUI polishing tips on measurement units and a reality check on the new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.prominent&lt;/code&gt; tabs in iOS 27 — remember, tabs are for destinations, not actions. We’re also rethinking our layout strategies for the resizable iPhone era, stealing a BCP 47 trick for dynamic text, and leveling up our Swift Testing game with better custom assertions. And for the “tweak-and-run” addicts, Tinkerble is here to save us from a thousand recompiles.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;swift-at-apple-migrating-the-truetype-hinting-interpreter&quot;&gt;&lt;a href=&quot;https://www.swift.org/blog/migrating-truetype-hinting-to-swift/&quot;&gt;Swift at Apple: Migrating the TrueType Hinting Interpreter&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/numist/&quot; class=&quot;author&quot;&gt;Scott Perry&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple finally swapped out their C-based TrueType hinting interpreter for a memory-safe Swift version in the Fall 2025 releases. Not only did they kill off a major security attack surface, but they actually managed to make it 13% faster. They used a bunch of cool Swift 6 features like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~Copyable&lt;/code&gt; types and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Span&lt;/code&gt; to keep performance high without sacrificing readability.&lt;/p&gt;

&lt;h2 id=&quot;ai--ml&quot;&gt;AI / ML&lt;/h2&gt;

&lt;h3 id=&quot;apple-foundation-models---claude-api-docs&quot;&gt;&lt;a href=&quot;https://platform.claude.com/docs/en/cli-sdks-libraries/libraries/apple-foundation-models&quot;&gt;Apple Foundation Models - Claude API Docs&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://platform.claude.com/docs/en/home&quot; class=&quot;author&quot;&gt;Claude APIDocs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anthropic just dropped a Swift package that lets us plug Claude directly into Apple’s Foundation Models framework. It basically lets you swap between the on-device model and Claude using the same &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LanguageModelSession&lt;/code&gt; API, which is a huge win for consistency. It’s currently targeting the OS 27 betas, so we’re looking at a future where switching from local to frontier models is just a one-liner.&lt;/p&gt;

&lt;h2 id=&quot;ui--ux&quot;&gt;UI / UX&lt;/h2&gt;

&lt;h3 id=&quot;styling-measurement-unit-fonts-in-swiftui&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/StylingMeasurementUnitFontsInSwiftUI/&quot;&gt;Styling measurement unit fonts in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ever get annoyed that SwiftUI treats measurement values and units as one big blob of text? We’ve all been there. Natalia shows us how to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AttributedString&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;transformingAttributes&lt;/code&gt; to target just the unit, letting us downscale it with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.caption&lt;/code&gt; font while keeping the value bold. It’s one of those small details that makes our apps look way more polished.&lt;/p&gt;

&lt;h3 id=&quot;from-size-class-to-available-space---is-horizontalsizeclass-still-reliable&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/from-size-class-to-available-space/&quot;&gt;From Size Class to Available Space - Is horizontalSizeClass Still Reliable?&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/fatbobman.com&quot; class=&quot;author&quot;&gt;Xu Yang&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With iPhone Mirroring and resizable iPhone apps in iOS 26, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;horizontalSizeClass&lt;/code&gt; isn’t the width sensor we thought it was. Fatbobman explains that Apple is decoupling “host semantics” from “geometric space,” meaning a wide iPhone window doesn’t automatically trigger a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.regular&lt;/code&gt; size class. If we want our layouts to actually adapt to the space available, we need to stop relying on idioms and start looking at the actual geometry of the view or scene. It’s time to stop thinking about “devices” and start thinking about “space.”&lt;/p&gt;

&lt;h3 id=&quot;dynamic-text-in-swiftui--robb-böhnke&quot;&gt;&lt;a href=&quot;https://robb.is/writing/dynamic-swiftui-text/&quot;&gt;Dynamic Text in SwiftUI – Robb Böhnke&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://robb.is&quot; class=&quot;author&quot;&gt;Robb Böhnke&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s a clever hack for handling app-wide preferences, like choosing between a full name and a display name, without littering every &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Text&lt;/code&gt; view with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if&lt;/code&gt; statements. The author uses a custom &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FormatStyle&lt;/code&gt; and hijacks the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Locale&lt;/code&gt;’s BCP 47 private use subtags to propagate preferences through the environment. It’s a bit of a workaround, but it makes the dynamic behavior feel like a native part of SwiftUI’s late-binding system. Who doesn’t love a good “hidden” feature of BCP 47?&lt;/p&gt;

&lt;h3 id=&quot;swiftuis-new-prominent-tab-in-ios-27-is-not-a-floating-action-button&quot;&gt;&lt;a href=&quot;https://www.sagarunagar.com/blog/swiftui-prominent-tab-is-not-a-floating-action-button/&quot;&gt;SwiftUI’s New .prominent Tab in iOS 27 Is Not a Floating Action Button&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.sagarunagar.com/about/&quot; class=&quot;author&quot;&gt;Sagar Unagar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one gives us a much-needed reality check on the new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.prominent&lt;/code&gt; tab role in iOS 27. It’s tempting to use it as a Floating Action Button for “Add” or “Create” actions, but Sagar argues that’s a huge mistake. Tabs are for destinations, not actions. If tapping it doesn’t take the user somewhere, it shouldn’t be a prominent tab. Let’s not ruin our UX just because a new API makes it easy.&lt;/p&gt;

&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;

&lt;h3 id=&quot;how-to-make-custom-test-assertions-in-swift-testing&quot;&gt;&lt;a href=&quot;https://qualitycoding.org/swift-testing-custom-assertions/&quot;&gt;How to Make Custom Test Assertions in Swift Testing&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://qualitycoding.org/about/&quot; class=&quot;author&quot;&gt;Jon Reid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The article dives into the “Swift Testing” framework and explains why we still need custom assertions even though &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#expect&lt;/code&gt; is way more informative than XCTest’s old assertions. The big tip here is using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SourceLocation&lt;/code&gt; to make sure failures are reported at the call site in your test, not inside your helper function. If we’re doing complex validation with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if&lt;/code&gt; statements, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Issue.record&lt;/code&gt; is the way to go for clean, readable failures.&lt;/p&gt;

&lt;h2 id=&quot;utils&quot;&gt;Utils&lt;/h2&gt;

&lt;h3 id=&quot;tinkerble&quot;&gt;&lt;a href=&quot;https://github.com/edwardsanchez/Tinkerble&quot;&gt;Tinkerble&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/edwardsanchez&quot; class=&quot;author&quot;&gt;Edward Sanchez&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a cool debug companion system for SwiftUI. Instead of recompiling every time you want to tweak a padding value or a color, you register them with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@TinkerbleState&lt;/code&gt; and edit them live from a macOS companion app. It even supports logging live values and triggering app-side actions. It’s a huge productivity boost for those of us who spend half our day in the “tweak-and-run” loop.&lt;/p&gt;

</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 96</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-06-12-issue-96.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-06-12-issue-96.html</id>
    <published>2026-06-12T00:00:00+00:00</published>
    <updated>2026-06-12T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="WWDC26 tl;dw"/>
    <category term="State macro in Xcode 27"/>
    <category term="CLI to install simulator runtimes"/>
    <category term="Xcode 27 agent skills"/>
    <category term="AgenticSwift"/>
    <category term="FoundationModels CLI"/>
    <category term="Inspector Guidelines"/>
    <category term="LazyVStack internals"/>
    <summary type="text">Hello again! Apple are shaking things up with @State macros and a new way to export Xcode’s official agent skills to our favorite IDEs, while the fm CLI finally lets us script on-device models from the terminal. We’ve got a...</summary>
    <content type="html">&lt;p&gt;Hello again!&lt;/p&gt;

&lt;p&gt;Apple are shaking things up with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@State&lt;/code&gt; macros and a new way to export Xcode’s official agent skills to our favorite IDEs, while the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fm&lt;/code&gt; CLI finally lets us script on-device models from the terminal. We’ve got a bit of everything this week: from the magic of AI-generated function bodies in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AgenticSwift&lt;/code&gt; to a much-needed deep dive into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SwiftUI&lt;/code&gt;’s lazy stack internals and macOS inspector design. Plus, if you’re feeling overwhelmed by WWDC26, there’s a perfect “too long; didn’t watch” cheat sheet to get you up to speed without the fatigue.&lt;/p&gt;

&lt;p&gt;Let’s dive in!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;initializing-observable-classes-with-the-state-macro-in-xcode-27&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/InitializingObservableClassesWithTheStateMacroInXcode27/&quot;&gt;Initializing @Observable classes with the @State macro in Xcode 27&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@State&lt;/code&gt; is now a macro in Xcode 27, and it finally brings lazy evaluation to @Observable classes. No more wasted cycles initializing models every time a view struct is recreated—it just works. We can finally stop using those clunky optional workarounds in task modifiers for simple state setup.&lt;/p&gt;

&lt;h3 id=&quot;installing-simulator-runtimes-from-the-command-line&quot;&gt;&lt;a href=&quot;https://www.donnywals.com/installing-simulator-runtimes-from-the-command-line/&quot;&gt;Installing simulator runtimes from the command line&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/donnywals.bsky.social&quot; class=&quot;author&quot;&gt;Donny Wals&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xcode 27’s runtime downloader is acting up again, leaving some of us staring at a “fetching download information” dialog forever. The fix is to jump into the terminal and use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xcodebuild -downloadPlatform&lt;/code&gt;. Just a heads-up: you might need to specify &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-architectureVariant arm64&lt;/code&gt; if it can’t find the universal runtime, because that’s where the real magic happens.&lt;/p&gt;

&lt;h2 id=&quot;ai--ml&quot;&gt;AI / ML&lt;/h2&gt;

&lt;h3 id=&quot;using-xcode-27s-agent-skills-in-claude-codex-and-cursor&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/ai-development/using-xcode-27s-agent-skills-in-claude-codex-and-cursor/&quot;&gt;Using Xcode 27’s Agent Skills in Claude, Codex, and Cursor&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/AvdLee&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple’s finally giving us official agent skills in Xcode 27, and the best part is we can actually export them for use in Cursor or Claude. Just run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xcrun agent skills export&lt;/code&gt; and you’ve got a set of authoritative instructions for things like SwiftUI modernization and test migration in your favorite IDE. Some of them need Xcode to actually run, but for the source-code stuff, it’s a total game changer for our workflow.&lt;/p&gt;

&lt;h3 id=&quot;agenticswift&quot;&gt;&lt;a href=&quot;https://github.com/migueldeicaza/AgenticSwift&quot;&gt;AgenticSwift&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/migueldeicaza.bsky.social&quot; class=&quot;author&quot;&gt;Miguel de Icaza&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine a world where you don’t even have to write the function body—you just describe it in a macro and let Codex handle the rest. That’s exactly what &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AgenticSwift&lt;/code&gt; does with its &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@ai&lt;/code&gt; macro. It’s a bit wild to have code generated at expansion time, but for the boilerplate-heavy parts of our apps, this kind of automation may be exactly where we’re heading.&lt;/p&gt;

&lt;h3 id=&quot;foundation-models-from-python-the-fm-cli&quot;&gt;&lt;a href=&quot;https://blakecrosley.com/blog/foundation-models-python-fm-cli&quot;&gt;Foundation Models from Python: the fm CLI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://blakecrosley.com/about&quot; class=&quot;author&quot;&gt;Blake Crosley&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;macOS 27 just ripped down the wall between Swift and LLMs with the new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fm&lt;/code&gt; CLI and a Python SDK. We can finally script the on-device model directly from the terminal or a Jupyter notebook without needing a full Xcode project. Whether it’s sorting files with JSON schemas or running evaluation pipelines with Pandas, the loop from “idea” to “evidence” just got a whole lot shorter.&lt;/p&gt;

&lt;h2 id=&quot;ui--ux&quot;&gt;UI / UX&lt;/h2&gt;

&lt;h3 id=&quot;inspector-guidelines&quot;&gt;&lt;a href=&quot;https://marioaguzman.github.io/design/inspectorguidelines/&quot;&gt;Inspector Guidelines&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/marioguzman.bsky.social&quot; class=&quot;author&quot;&gt;Mario A Guzman&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re building for macOS 26 and your app is starting to feel cluttered, it might be time to move those auxiliary controls into an Inspector. Whether you go with a floating panel or the modern sidebar approach, the key is density and context. Just remember to keep your widths between 225 and 400 pts, or you’ll end up with a UI that feels “off” to Mac users.&lt;/p&gt;

&lt;h2 id=&quot;wwdc26&quot;&gt;WWDC26&lt;/h2&gt;

&lt;h3 id=&quot;jacobs-wwdc26-tldw&quot;&gt;&lt;a href=&quot;https://wwdc.jacobstechtavern.com/2026&quot;&gt;Jacob’s WWDC26 tl;dw&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/jacobstechtavern.com&quot; class=&quot;author&quot;&gt;Jacob Bartlett&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Who has time to watch every single WWDC session? These “too long; didn’t watch” notes are a lifesaver, distilling the chaos of WWDC26 into a clean, filterable list. From the state of the union to the nitty-gritty of agentic app experiences, it’s the perfect cheat sheet for catching up on everything Apple just dropped without spending 100 hours in the video player.&lt;/p&gt;

&lt;h2 id=&quot;video&quot;&gt;Video&lt;/h2&gt;

&lt;h3 id=&quot;dive-into-lazy-stacks-and-scrolling-with-swiftui&quot;&gt;&lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2026/321/&quot;&gt;Dive into lazy stacks and scrolling with SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/rensbreur&quot; class=&quot;author&quot;&gt;Rens Breur&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ever wonder why your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LazyVStack&lt;/code&gt; occasionally hitches or why your scroll position jumps? This deep dive pulls back the curtain on how SwiftUI estimates sizes and prefetches content. The big takeaway: stop doing heavy setup in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onAppear&lt;/code&gt; and filter your data at the query level, not in the view body. If you want buttery-smooth scrolling in your apps, you’ve got to play by the lazy stack’s rules.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 95</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-06-05-issue-95.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-06-05-issue-95.html</id>
    <published>2026-06-05T00:00:00+00:00</published>
    <updated>2026-06-05T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Apple Design Awards 2026"/>
    <category term="Improvements in Swift 6.4"/>
    <category term="Result Builders"/>
    <category term="Swift on AWS"/>
    <category term="SwiftUI Animation Timings"/>
    <category term="Observable CoreData"/>
    <category term="apfel server"/>
    <summary type="text">Welcome to this week’s edition! We celebrate the pinnacle of design with the 2026 Apple Design Awards and dive deep into the cutting edge of the Swift language. Just a few days before WWDC 2026, we’ll explore significant performance boosts...</summary>
    <content type="html">&lt;p&gt;Welcome to this week’s edition!&lt;/p&gt;

&lt;p&gt;We celebrate the pinnacle of design with the 2026 Apple Design Awards and dive deep into the cutting edge of the Swift language. Just a few days before WWDC 2026, we’ll explore significant performance boosts in the Swift 6.4 type checker and the elegance of custom DSLs via Result Builders. For those focused on high-performance backend and AI, we have a thrilling Swift vs. Rust Lambda showdown and a look at running OpenAI-compatible local models with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apfel&lt;/code&gt;. Finally, we’ll refine our apps’ polish with a guide to SwiftUI animation timing and discover how to modernize Core Data state management using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Observation&lt;/code&gt; framework.&lt;/p&gt;

&lt;p&gt;Let’s dive in!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;design&quot;&gt;Design&lt;/h2&gt;

&lt;h3 id=&quot;apple-design-awards---2026-winners-and-finalists&quot;&gt;&lt;a href=&quot;https://developer.apple.com/design/awards/&quot;&gt;Apple Design Awards - 2026 winners and finalists&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://developer.apple.com/&quot; class=&quot;author&quot;&gt;Apple&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we all know, the Apple Design Awards are the gold standard for celebrating excellence in app design and user experience. This year’s winners showcase an incredible range of innovation, from whimsical Neolithic grunts in grug to the immersive spatial storytelling of D-Day. We can draw inspiration from these masterpieces of simplicity and accessibility to create more delightful experiences for our users.&lt;/p&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;whats-new-in-swift-may-2026-edition&quot;&gt;&lt;a href=&quot;https://www.swift.org/blog/whats-new-in-swift-may-2026/&quot;&gt;What’s new in Swift: May 2026 Edition&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/davelester/&quot; class=&quot;author&quot;&gt;Dave Lester&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Who doesn’t like a good monthly digest of everything happening in the Swift ecosystem? From the exciting progress in Swift and WebAssembly to the new Bedrock library for AI agents, there’s plenty to keep us inspired. We should also keep an eye on the recent Swift Evolution proposals like the new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ref&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MutableRef&lt;/code&gt; types, which promise to make our references safer and more performant.&lt;/p&gt;

&lt;h3 id=&quot;recent-improvements-to-the-type-checker&quot;&gt;&lt;a href=&quot;https://forums.swift.org/t/recent-improvements-to-the-type-checker/87048&quot;&gt;Recent improvements to the type checker&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/slavapestov&quot; class=&quot;author&quot;&gt;Slava Pestov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Waiting for the compiler to finish type-checking can be the bane of our productivity. The author shares some fantastic improvements coming in Swift 6.4, including disjunction pruning and better binding inference, which significantly speed up complex expressions. We can look forward to faster build times and more responsive diagnostics, making the development loop feel much snappier.&lt;/p&gt;

&lt;h3 id=&quot;result-builders-in-swift&quot;&gt;&lt;a href=&quot;https://wesleydegroot.nl/blog/result-builders-in-swift&quot;&gt;Result Builders in Swift&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/0xwdg.bsky.social&quot; class=&quot;author&quot;&gt;Wesley de Groot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We all like to create clean, declarative APIs that make our code easier to maintain. Wesley de Groot provides a fantastic deep dive into Result Builders, the magic that powers SwiftUI, and shows us how to build our own custom DSLs for things like URL construction or HTML generation. By mastering this advanced feature, we can bring that same elegance to other parts of our apps, reducing boilerplate and improving readability.&lt;/p&gt;

&lt;h2 id=&quot;swift-on-server&quot;&gt;Swift on Server&lt;/h2&gt;

&lt;h3 id=&quot;can-swift-match-rust-on-a-lambda-micro-benchmark-almost&quot;&gt;&lt;a href=&quot;https://stormacq.com/2026/06/02/can-swift-match-rust-on-a-lambda-micro-benchmark-almost./&quot;&gt;Can Swift Match Rust on a Lambda Micro-Benchmark? Almost.&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/sebsto.bsky.social&quot; class=&quot;author&quot;&gt;Sébastien Stormacq&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Who doesn’t like a good performance showdown? Sébastien Stormacq puts Swift head-to-head against Rust in a demanding S3 archiving Lambda benchmark, and the results are impressively close. By opting for the Soto SDK and leveraging &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ByteBuffer&lt;/code&gt; for zero-copy efficiency, he proves that Swift is not just viable, but highly competitive for high-throughput serverless workloads. It’s a great reminder of the power we have in our hands when we profile and optimize with intention.&lt;/p&gt;

&lt;h2 id=&quot;ui--ux&quot;&gt;UI / UX&lt;/h2&gt;

&lt;h3 id=&quot;swiftui-animation-timing&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/AnimationTimingInSwiftUI/&quot;&gt;SwiftUI animation timing&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we all know, the difference between a clunky and a polished app often comes down to the details of motion. This entry is a comprehensive guide to animation timing in SwiftUI, from classic easing curves to the physics-based behavior of spring animations. By understanding how to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CustomAnimation&lt;/code&gt; and animation modifiers in our apps, we can create interfaces that feel intuitive and alive, bringing a professional touch to our user experiences.&lt;/p&gt;

&lt;h2 id=&quot;data&quot;&gt;Data&lt;/h2&gt;

&lt;h3 id=&quot;core-data--observation---from-property-level-reactivity-to-a-freer-mental-model&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/core-data-observation-freer-mental-model/&quot;&gt;Core Data + Observation - From Property-Level Reactivity to a Freer Mental Model&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/fatbobman.com&quot; class=&quot;author&quot;&gt;Xu Yang&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ve often felt the friction of Core Data’s coarse-grained observation, forcing us to split views just to avoid unnecessary refreshes, aren’t we? This post explores a way to bring property-level reactivity to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NSManagedObject&lt;/code&gt; via the Observation framework, bridging the gap between the stable Core Data ecosystem and the natural developer experience of SwiftData. This approach lets us organize our state according to business logic rather than observation constraints, a win for any developer maintaining a complex persistence layer.&lt;/p&gt;

&lt;h2 id=&quot;ai--ml&quot;&gt;AI / ML&lt;/h2&gt;

&lt;h3 id=&quot;the-serve-mode-and-the-openai-protocol&quot;&gt;&lt;a href=&quot;https://www.rotecodefraktion.de/en/blog/apfel-agent-02-serve/&quot;&gt;The serve mode and the OpenAI protocol&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/rotecodefraktion&quot; class=&quot;author&quot;&gt;David Krcek&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apfel&lt;/code&gt;, the command-line access to Apple FoundationModels on macOS that we wrote about in &lt;a href=&quot;https://ios-newsletter.snappmobile.io/issues/2026-04-10-issue-87.html&quot;&gt;issue #87&lt;/a&gt;? In this article we can see how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apfel&lt;/code&gt; turns a local Foundation Model into an OpenAI-compatible HTTP server. By decoupling the agent logic from the framework and using a protocol we all recognize, it becomes a breeze to swap models, run smoke tests with curl, and maintain a clean architecture in our codebase.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 94</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-05-29-issue-94.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-05-29-issue-94.html</id>
    <published>2026-05-29T00:00:00+00:00</published>
    <updated>2026-05-29T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Programming"/>
    <category term="iOS Keychain"/>
    <category term="Two-Factor Authentication"/>
    <category term="TimelineView"/>
    <category term="Custom Layouts in SwiftUI"/>
    <category term="Apple Docs for AI"/>
    <category term="XCTest Custom Assertions"/>
    <category term="Swift Compiler for the Web"/>
    <summary type="text">Hi folks, This week’s issue is a deep dive into both the philosophy and technical mastery of iOS development. From Paul Hudson’s timeless advice on resilience and lifelong learning to advanced SwiftUI techniques like TimelineView and custom layouts for perfectly...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;This week’s issue is a deep dive into both the philosophy and technical mastery of iOS development. From Paul Hudson’s timeless advice on resilience and lifelong learning to advanced SwiftUI techniques like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TimelineView&lt;/code&gt; and custom layouts for perfectly smooth &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;List&lt;/code&gt; row animations, we cover a broad spectrum of growth. We also explore the AI integration with a local documentation system, the technical brilliance of MiniSwift’s browser-based compiler, and the quirky delight of “Check ‘em” for 2FA pattern spotting. Finally, we touch on essential security with the Keychain Services API and the practical art of writing custom XCTest assertions to streamline our debugging.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;programming&quot;&gt;Programming&lt;/h2&gt;

&lt;h3 id=&quot;8-things-i-wish-i-knew-when-i-started-programming&quot;&gt;&lt;a href=&quot;https://www.hackingwithswift.com/articles/252/8-things-i-wish-i-knew-when-i-started-programming&quot;&gt;8 Things I Wish I Knew When I Started Programming&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/twostraws.bsky.social&quot; class=&quot;author&quot;&gt;Paul Hudson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we all know, the tech landscape shifts rapidly, and it’s crucial not to get tied down to a single language or framework. Embracing a lifelong learning mindset and building resilience against those inevitable “impostor syndrome” moments helps us grow in our apps’ development journeys. We also find that soft skills and a foundational grasp of computer science often matter as much as the code itself.&lt;/p&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;working-with-the-keychain-in-ios&quot;&gt;&lt;a href=&quot;https://tanaschita.com/ios-keychain-secure-data-storage/&quot;&gt;Working with the Keychain in iOS&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://mastodon.social/@tanaschita&quot; class=&quot;author&quot;&gt;Natascha Fadeeva&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When we need to store sensitive data like passwords or tokens, the Keychain Services API is the go-to solution for keeping our apps’ data encrypted. Understanding the query-based structure allows us to efficiently save, retrieve, and update items, even if the C-based API feels slightly dated. It’s a fundamental part of iOS security that we should all master to protect our users’ privacy.&lt;/p&gt;

&lt;h3 id=&quot;the-2fa-app-that-tells-you-when-you-get-314159&quot;&gt;&lt;a href=&quot;https://blog.jacobstechtavern.com/p/building-a-2fa-app-that-detects-patterns&quot;&gt;The 2FA app that tells you when you get &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;314159&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/jacobstechtavern.com&quot; class=&quot;author&quot;&gt;Jacob Bartlett&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those of us who love spotting patterns, “Check ‘em” brings the joy of “GETs” to multi-factor authentication. By pre-computing codes and scheduling push notifications, the app alerts us when rare sequences appear in our 2FA codes. It’s a delightful example of how an indie project can combine cryptographic utility with a touch of geeky fun in our apps.&lt;/p&gt;

&lt;h2 id=&quot;ui--ux&quot;&gt;UI / UX&lt;/h2&gt;

&lt;h3 id=&quot;refreshing-and-animating-views-using-timelineview-in-swiftui&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/TimelineViewInSwiftUI/&quot;&gt;Refreshing and animating views using TimelineView in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ve all wanted to create a clock or a smooth animation in our apps without cluttering our state with timers. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TimelineView&lt;/code&gt; in SwiftUI offers a streamlined way to reevaluate views periodically or continuously, effortlessly driving visual effects and animations. Learning how to leverage different schedules allows us to build more dynamic interfaces while respecting the system’s update cadence.&lt;/p&gt;

&lt;h3 id=&quot;taming-row-height-and-spacing-jumps-in-swiftui-list-with-a-custom-layout&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/taming-row-height-and-spacing-jumps/&quot;&gt;Taming Row Height and Spacing Jumps in SwiftUI List with a Custom Layout&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/fatbobman.com&quot; class=&quot;author&quot;&gt;Xu Yang&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one tackles a familiar SwiftUI pain point: jumpy row-height and spacing transitions inside &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;List&lt;/code&gt; when dynamic content appears or disappears. It proposes a native SwiftUI architecture using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Animatable&lt;/code&gt;, custom &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Layout&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LayoutValueKey&lt;/code&gt;, and state decoupling to animate height smoothly without visual squeezing artifacts. It also introduces a custom vertical stack strategy to keep spacing synchronized with collapse progress, solving the subtle “last-frame jump” many of us see in production UIs. For teams polishing interaction quality in our apps, this is an advanced and very practical animation deep dive.&lt;/p&gt;

&lt;h2 id=&quot;ai--ml&quot;&gt;AI / ML&lt;/h2&gt;

&lt;h3 id=&quot;cupertino&quot;&gt;&lt;a href=&quot;https://github.com/mihaelamj/cupertino&quot;&gt;🍎📚Cupertino&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mihaelamj&quot; class=&quot;author&quot;&gt;Mihaela Mihaljevic&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To keep our AI agents grounded and prevent those pesky hallucinations, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cupertino&lt;/code&gt; provides a local, structured documentation system. By indexing hundreds of thousands of Apple API pages into a searchable database, it serves accurate context via the Model Context Protocol. It’s a powerful utility that ensures the AI we use in our apps’ development is actually speaking the latest language of the platforms.&lt;/p&gt;

&lt;h2 id=&quot;testing&quot;&gt;Testing&lt;/h2&gt;

&lt;h3 id=&quot;how-to-make-custom-test-assertions-in-xctest&quot;&gt;&lt;a href=&quot;https://qualitycoding.org/swift-test-assertions/&quot;&gt;How to Make Custom Test Assertions in XCTest&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://qualitycoding.org/about/&quot; class=&quot;author&quot;&gt;Jon Reid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The author shows how to build custom XCTest assertions in Swift that preserve accurate failure locations using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#filePath&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#line&lt;/code&gt;. He starts from tuple-testing pain points and demonstrates how a focused helper can produce much clearer diagnostics than generic assertions. In our apps, this pattern helps us keep test code expressive while reducing repetitive boilerplate and improving debugging speed. As we all like to keep feedback loops tight, this is a small technique with outsized value for test quality.&lt;/p&gt;

&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;

&lt;h3 id=&quot;miniswift--swift-compiler-for-the-web&quot;&gt;&lt;a href=&quot;https://miniswift.run&quot;&gt;MiniSwift — Swift Compiler for the Web&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/toprakdeviren&quot; class=&quot;author&quot;&gt;Uğur Toprakdeviren&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine having a full Swift and SwiftUI pipeline running entirely in your browser—no LLVM, no React, just pure C compiled to WASM. MiniSwift makes this a reality, allowing us to experiment with Swift code and Metal shaders in real-time without leaving a tab. It’s a stunning technical achievement that brings the power of Swift development to the web, as we all know how much we value instant feedback.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 93</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-05-22-issue-93.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-05-22-issue-93.html</id>
    <published>2026-05-22T00:00:00+00:00</published>
    <updated>2026-05-22T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Sorting Arrays"/>
    <category term="Task suspension points"/>
    <category term="DispatchGroup and TaskGroup"/>
    <category term="Deprecating APIs"/>
    <category term="Git for Agents"/>
    <category term="Training an LLM in Swift"/>
    <category term="SwiftData for beginners"/>
    <category term="Xogot on Mac"/>
    <summary type="text">Hi folks, In this week’s issue, we dive deep into high-performance Swift, from achieving Tflop/s speeds in LLM matrix multiplications to mastering the kinds of concise array sorting that make our code feel more elegant. We also tackle those subtle...</summary>
    <content type="html">&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;In this week’s issue, we dive deep into high-performance Swift, from achieving Tflop/s speeds in LLM matrix multiplications to mastering the kinds of concise array sorting that make our code feel more elegant. We also tackle those subtle concurrency pitfalls, like unexpected main-thread hopping, that can quietly impact the responsiveness of our apps. Beyond the code, we explore the evolving landscape of developer tools with agent-native version control for AI-driven workflows and Xogot’s first-class native Mac experience for Godot. We’ve also included practical tips on maintaining a professional codebase using availability annotations to prune dead code, a comprehensive guide to streamlined persistence with SwiftData, and a comparison of how to manage concurrent tasks as we all strive for more structured concurrency. It’s a packed edition designed to help us make our apps faster, cleaner, and more robust.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;sorting-arrays-in-swift-using-comparison-operators-as-closures&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/SortingArraysInSwiftUsingComparisonOperators/&quot;&gt;Sorting arrays in Swift using comparison operators as closures&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.socia&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article explains how to make sorting arrays in Swift more concise and readable by using comparison operators as closures. By passing operators like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&lt;/code&gt; directly into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sorted(by:)&lt;/code&gt; method, we can write more expressive code. This technique leverages Swift’s functional programming capabilities to simplify collection management in our apps.&lt;/p&gt;

&lt;h3 id=&quot;unexpected-task-suspension-points-in-swift-concurrency&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/concurrency/unexpected-task-suspension-points-in-swift-concurrency/&quot;&gt;Unexpected Task suspension points in Swift Concurrency&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/avanderlee.com&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antoine van der Lee explores a subtle but impactful performance issue in Swift Concurrency where tasks unexpectedly start on the Main Actor, causing “main-thread hopping.” This happens when a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Task&lt;/code&gt; inherits isolation from its surrounding context, even if the first operation is an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;await&lt;/code&gt; call to a different domain. By explicitly using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@concurrent&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MainActor.run&lt;/code&gt;, developers can avoid these unnecessary suspension points and improve the responsiveness of their apps.&lt;/p&gt;

&lt;h3 id=&quot;what-do-you-do-when-you-want-to-get-notified-when-a-bunch-of-async-tasks-have-finished&quot;&gt;&lt;a href=&quot;https://emredegirmenci.substack.com/p/what-do-you-do-when-you-want-to-get&quot;&gt;What do you do when you want to get notified when a bunch of async tasks have finished?&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://substack.com/@emredegirmenci&quot; class=&quot;author&quot;&gt;Emre Degirmenci&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s compare the legacy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DispatchGroup&lt;/code&gt; approach with the modern &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TaskGroup&lt;/code&gt; in Swift Concurrency for handling multiple parallel asynchronous tasks. This article demonstrates how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TaskGroup&lt;/code&gt; simplifies code by replacing manual counter tracking (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;enter&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;leave&lt;/code&gt;) and callbacks with structured concurrency and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;async/await&lt;/code&gt;. This transition makes managing concurrent operations in our apps more intuitive and less prone to the errors associated with manual group management.&lt;/p&gt;

&lt;h3 id=&quot;deprecating-your-own-convenience-api&quot;&gt;&lt;a href=&quot;https://swiftwithmajid.com/2026/05/19/deprecating-your-own-convenience-api/&quot;&gt;Deprecating your own convenience API&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/mecid.bsky.social&quot; class=&quot;author&quot;&gt;Majid Jabrayilov&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Majid explains a strategy for managing codebase cleanliness when supporting multiple iOS versions. By creating custom convenience wrappers for newer APIs and then using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@available&lt;/code&gt; annotations with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deprecated&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;obsoleted&lt;/code&gt; parameters, developers can leverage the compiler to identify and remove dead code once the minimum platform version is bumped. This approach helps in maintaining a professional codebase in our apps without accumulating unnecessary technical debt as the OS evolves.&lt;/p&gt;

&lt;h2 id=&quot;ai--ml&quot;&gt;AI / ML&lt;/h2&gt;

&lt;h3 id=&quot;git-for-ai-agents-version-control-built-for-llm-coding-workflows&quot;&gt;&lt;a href=&quot;https://pickuma.com/posts/git-for-ai-agents-agent-native-version-control/&quot;&gt;Git for AI Agents: Version Control Built for LLM Coding Workflows&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/owen&quot; class=&quot;author&quot;&gt;Owen Marshall&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This entry explores the gap in traditional version control when using AI agents, where the “why” behind changes is often lost in ephemeral chat transcripts. It introduces the concept of agent-native version control, such as &lt;a href=&quot;https://github.com/regent-vcs/re_gent&quot;&gt;re_gent&lt;/a&gt;, which records reasoning, prompts, and plans alongside the diff. This approach allows developers to bisect decisions rather than just lines of code, greatly improving observability in agentic coding workflows.&lt;/p&gt;

&lt;h3 id=&quot;training-an-llm-in-swift-part-1-taking-matrix-multiplication-from-gflops-to-tflops&quot;&gt;&lt;a href=&quot;https://www.cocoawithlove.com/blog/matrix-multiplications-swift.html&quot;&gt;Training an LLM in Swift, Part 1: Taking matrix multiplication from Gflop/s to Tflop/s&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mattgallagher&quot; class=&quot;author&quot;&gt;Matt Gallagher&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this detailed exploration, Matt Gallagher takes a handwritten matrix multiplication implementation in Swift and optimizes it from a slow baseline to over 1 Tflop/s. He walks through various techniques, including using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MutableSpan&lt;/code&gt; to avoid COW overhead, leveraging the Numerics library for fused-multiply-add, and employing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;InlineArray&lt;/code&gt; for stack allocation. The journey culminates in the use of Apple Silicon’s AMX unit and Metal GPU kernels, demonstrating that Swift can match or even exceed C’s performance for high-compute tasks in our apps.&lt;/p&gt;

&lt;h2 id=&quot;data&quot;&gt;Data&lt;/h2&gt;

&lt;h3 id=&quot;swiftdata-tutorial-swift-data-storage-for-ios-apps&quot;&gt;&lt;a href=&quot;https://bugfender.com/blog/swift-data/&quot;&gt;SwiftData Tutorial: Swift Data Storage for iOS Apps&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/ventayol/&quot; class=&quot;author&quot;&gt;Aleix Ventayol&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tutorial introduces SwiftData, Apple’s Swift-native persistence framework, highlighting its ability to replace the boilerplate of Core Data with a declarative &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@Model&lt;/code&gt; approach. The guide covers essential CRUD operations, advanced querying with predicates, and managing relational data, while providing a comparison with other storage options like SQLite and Realm. By integrating tightly with SwiftUI, SwiftData allows developers to focus on feature delivery rather than persistence plumbing in our apps.&lt;/p&gt;

&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;

&lt;h3 id=&quot;xogot-on-mac&quot;&gt;&lt;a href=&quot;https://blog.xogot.com/xogot-on-mac/&quot;&gt;Xogot on Mac&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/migueldeicaza.bsky.social&quot; class=&quot;author&quot;&gt;Miguel de Icaza&lt;/a&gt;, &lt;a href=&quot;https://hachyderm.io/@josephhill&quot; class=&quot;author&quot;&gt;Joseph Hill&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xogot is bringing its SwiftUI-based shell for the Godot game engine to the Mac, aiming to provide a first-class native experience that follows Apple’s Human Interface Guidelines. By integrating features like a Report Navigator and a Command Palette, Xogot seeks to make Apple platform deployment and debugging more approachable for Godot developers, reducing the friction often associated with Xcode. This tool allows developers to focus on game creation while enjoying the professional feel of a native Mac creative application in our apps.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 92</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-05-15-issue-92.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-05-15-issue-92.html</id>
    <published>2026-05-15T00:00:00+00:00</published>
    <updated>2026-05-15T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Swift 6.3.2"/>
    <category term="Unavailable from async"/>
    <category term="Swift ARC"/>
    <category term="Agent Skills"/>
    <category term="Area Charts"/>
    <category term="fixedSize View Modifier"/>
    <category term="RealityKit Extruding Meshes"/>
    <category term="KeyringAccess for Linux"/>
    <summary type="text">Hi again, This week’s issue is packed with valuable insights to enhance your development workflow. We dive into the latest stability updates with Swift 6.3.2 and explore the intricacies of memory management with an evolution of Swift’s ARC. For those...</summary>
    <content type="html">&lt;p&gt;Hi again,&lt;/p&gt;

&lt;p&gt;This week’s issue is packed with valuable insights to enhance your development workflow. We dive into the latest stability updates with Swift 6.3.2 and explore the intricacies of memory management with an evolution of Swift’s ARC. For those focused on UI, we’ve got practical guides on mastering SwiftUI’s layout with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.fixedSize&lt;/code&gt; and creating visually striking area charts with dimming layers. We also venture into the third dimension with RealityKit mesh extrusion and expand our platform reach with KeyringAccess for secure secret storage on Linux.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;announcing-swift-632&quot;&gt;&lt;a href=&quot;https://forums.swift.org/t/announcing-swift-6-3-2/86698&quot;&gt;Announcing Swift 6.3.2&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/shahmishal&quot; class=&quot;author&quot;&gt;Mishal Shah&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Swift 6.3.2 is a maintenance release that provides critical bug fixes and stability improvements following the major 6.3 release. It ensures that the toolchain remains reliable for developers building across Apple’s platforms and other supported environments. This update is recommended for all developers to ensure the best performance and correctness of their Swift code.&lt;/p&gt;

&lt;h3 id=&quot;unavailable-from-async-attribute&quot;&gt;&lt;a href=&quot;https://www.hackingwithswift.com/swift/5.7/noasync&quot;&gt;Unavailable from async attribute&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/twostraws.bsky.social&quot; class=&quot;author&quot;&gt;Paul Hudson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This entry explains the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;noasync&lt;/code&gt; attribute introduced in Swift 5.7, which allows developers to mark types and functions as unavailable in asynchronous contexts. This is particularly useful for avoiding risks associated with thread-local storage, locks, or semaphores. While it provides a layer of protection, the author notes that it can be bypassed by nesting calls in synchronous functions.&lt;/p&gt;

&lt;h3 id=&quot;swift-arc-from-zombie-objects-to-side-tables&quot;&gt;&lt;a href=&quot;https://livsycode.com/swift/swift-arc-from-zombie-objects-to-side-tables/&quot;&gt;Swift ARC: From Zombie Objects to Side Tables&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/artem-mirzabekian&quot; class=&quot;author&quot;&gt;Artem Mirzabekian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This in-depth article explores the evolution of Swift’s Automatic Reference Counting (ARC) from early “zombie objects” to the modern “side tables” approach. It explains how side tables allow for more efficient memory management by decoupling the lifetime of the object from its weak reference bookkeeping. The author also provides detailed comparisons between strong, weak, and unowned references, highlighting their performance and memory trade-offs.&lt;/p&gt;

&lt;h2 id=&quot;ai--ml&quot;&gt;AI / ML&lt;/h2&gt;

&lt;h3 id=&quot;install-these-skills-before-codex-touches-your-xcode-project&quot;&gt;&lt;a href=&quot;https://x.com/PaulSolt/status/2042716870512353294&quot;&gt;Install These Skills Before Codex Touches Your Xcode Project&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/paulsolt&quot; class=&quot;author&quot;&gt;Paul Solt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The author shares five specialized skill packs and tools designed to make AI agents more reliable when building iOS and macOS applications. The list features expert contributions and covers a wide range of topics from modern SwiftUI patterns to rules-based architectures. Additionally, he introduces his own AppCreator tool as a critical resource for establishing agent-friendly build systems that reduce common compiler errors and verbose output.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;area-chart-with-a-dimming-layer-up-to-the-current-point-in-time&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/AreaChartWithADimmingLayer/&quot;&gt;Area chart with a dimming layer up to the current point in time&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article provides a step-by-step guide on creating a sophisticated area chart in SwiftUI, inspired by the iOS Weather app’s UV index chart. It covers the use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AreaMark&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LineMark&lt;/code&gt; with linear gradients and cardinal interpolation for smooth visuals. A key highlight is the implementation of a dimming layer using a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RectangleMark&lt;/code&gt; and a custom mask to subtly indicate past time.&lt;/p&gt;

&lt;h3 id=&quot;finally-found-a-use-case-for-fixedsize-&quot;&gt;&lt;a href=&quot;https://www.swiftdifferently.com/blog/swiftui/fixedsize-usecase&quot;&gt;Finally found a use case for .fixedSize 😅&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/EngOmarElsayed&quot; class=&quot;author&quot;&gt;Omar Elsayed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this practical layout guide, Omar Elsayed shares a common SwiftUI challenge: making all items in a horizontal scroll view match the height of the tallest card. He demonstrates how combining &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.frame(maxHeight: .infinity)&lt;/code&gt; with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.fixedSize(horizontal: false, vertical: true)&lt;/code&gt; solves this problem by forcing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HStack&lt;/code&gt; to shrink to its ideal height. The article encourages developers not to avoid modifiers based on assumptions, as each one serves a specific purpose in SwiftUI’s layout engine.&lt;/p&gt;

&lt;h2 id=&quot;3d&quot;&gt;3D&lt;/h2&gt;

&lt;h3 id=&quot;realitykit-basics-extruding-meshes&quot;&gt;&lt;a href=&quot;https://stepinto.vision/example-code/realitykit-basics-extruding-meshes/&quot;&gt;RealityKit Basics: Extruding Meshes&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/vrhermit.com&quot; class=&quot;author&quot;&gt;Joseph Simpson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tutorial demonstrates how to create 3D shapes in RealityKit by extruding 2D Swift Path data. It explains the use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MeshResource.ShapeExtrusionOptions&lt;/code&gt; to define linear depth and chamfer radii, as well as how to assign materials to different faces of the extruded mesh. The provided example creates and animates a rotating 3D star, illustrating a powerful way to bridge 2D vectors and 3D entities.&lt;/p&gt;

&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;

&lt;h3 id=&quot;keyringaccess&quot;&gt;&lt;a href=&quot;https://github.com/amethystsoft/KeyringAccess&quot;&gt;KeyringAccess&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/MiaKoring&quot; class=&quot;author&quot;&gt;MiaKoring&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;KeyringAccess is a pure Swift implementation of the Secret Service API for Linux, providing both high-level and low-level APIs for secure secret storage. It eliminates the need for system development headers by communicating directly via DBus and fully supports &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;async/await&lt;/code&gt;. The library simplifies secret management with features like automatic collection discovery and a convenient subscript-based API for storing and retrieving secrets.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iOS Newsletter Issue 91</title>
    <link href="https://ios-newsletter.snappmobile.io/issues/2026-05-08-issue-91.html" rel="alternate" type="text/html"/>
    <id>https://ios-newsletter.snappmobile.io/issues/2026-05-08-issue-91.html</id>
    <published>2026-05-08T00:00:00+00:00</published>
    <updated>2026-05-08T00:00:00+00:00</updated>
    <author>
      <name>Snapp Technology</name>
    </author>
    <category term="Accessibility Audio Descriptions"/>
    <category term="SwiftUI WebView"/>
    <category term="Concurrency Gotchas"/>
    <category term="Background Tasks"/>
    <category term="Accelerometer-driven Views"/>
    <category term="Generable Tip"/>
    <category term="Mac Fans Control"/>
    <summary type="text">Hi again, This week, we dive deep into the nuances of Swift Concurrency and synchronization, with insights on avoiding unexpected suspension points and a comprehensive guide on choosing between Actors, queues, and locks. We explore the possibilities of SwiftUI with...</summary>
    <content type="html">&lt;p&gt;Hi again,&lt;/p&gt;

&lt;p&gt;This week, we dive deep into the nuances of Swift Concurrency and synchronization, with insights on avoiding unexpected suspension points and a comprehensive guide on choosing between Actors, queues, and locks. We explore the possibilities of SwiftUI with accelerometer-driven UI effects and an introduction to the new WebKit for SwiftUI API, while also focusing on accessibility with a guide to audio descriptions. Additionally, Natalia Panferova helps us master background app refreshes, and we discover MacFansControl for native macOS thermal management.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ios-newsletter.snappmobile.io/subscribe&quot; class=&quot;btn&quot;&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;articles&quot;&gt;Articles&lt;/h1&gt;

&lt;h2 id=&quot;swift&quot;&gt;Swift&lt;/h2&gt;

&lt;h3 id=&quot;unexpected-task-suspension-points-in-swift-concurrency&quot;&gt;&lt;a href=&quot;https://www.avanderlee.com/concurrency/unexpected-task-suspension-points-in-swift-concurrency/&quot;&gt;Unexpected Task suspension points in Swift Concurrency&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/avanderlee.com&quot; class=&quot;author&quot;&gt;Antoine van der Lee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ever wondered how unexpected suspension points in Swift Concurrency can negatively impact app performance by causing unnecessary main-thread hopping? Antoine demonstrates how inheriting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@MainActor&lt;/code&gt; isolation in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Task&lt;/code&gt; can block the main thread and delay UI updates. The article provides a solution using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@concurrent&lt;/code&gt; to ensure tasks start on a different isolation domain and use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MainActor.run&lt;/code&gt; for UI updates.&lt;/p&gt;

&lt;h3 id=&quot;synchronization-in-swift-actors-vs-queues-vs-locks&quot;&gt;&lt;a href=&quot;https://livsycode.com/best-practices/actors-vs-queues-vs-locks-in-swift/&quot;&gt;Synchronization in Swift: Actors vs Queues vs Locks&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/artem-mirzabekian&quot; class=&quot;author&quot;&gt;Artem Mirzabekian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This entry provides a comprehensive comparison of synchronization tools in Swift, ranging from high-level Actors to low-level Locks, Mutexes, and Atomics. It explains the trade-offs between safety, performance, and API design, highlighting how Actors encode isolation in the type system while Locks offer minimal overhead for synchronous paths. It also concludes with practical guidance on choosing the right mechanism based on the component’s requirements and the surrounding environment.&lt;/p&gt;

&lt;h2 id=&quot;accessibility&quot;&gt;Accessibility&lt;/h2&gt;

&lt;h3 id=&quot;audio-descriptions&quot;&gt;&lt;a href=&quot;https://wesleydegroot.nl/blog/audio-descriptions&quot;&gt;Audio Descriptions&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/0xwdg.bsky.social&quot; class=&quot;author&quot;&gt;Wesley de Groot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s a detailed guide on implementing audio descriptions in SwiftUI apps to make video content accessible for blind and low-vision users. The article explains how to detect user preferences and use AVFoundation to manage and select descriptive audio tracks. It also outlines the process of creating these tracks and shares a set of best practices for writing objective and concise descriptions.&lt;/p&gt;

&lt;h2 id=&quot;uiux&quot;&gt;UI/UX&lt;/h2&gt;

&lt;h3 id=&quot;scheduling-and-handling-background-app-refresh-in-swiftui&quot;&gt;&lt;a href=&quot;https://nilcoalescing.com/blog/SchedulingAndHandlingBackgroundAppRefreshInSwiftUI/&quot;&gt;Scheduling and handling background app refresh in SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/natpanferova.bsky.social&quot; class=&quot;author&quot;&gt;Natalia Panferova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article explains how to implement background app refreshes in SwiftUI apps using the Background Tasks framework. It covers the essential setup steps, including adding background capabilities in Xcode and registering task identifiers in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Info.plist&lt;/code&gt;. It also demonstrates how to schedule tasks using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BGAppRefreshTaskRequest&lt;/code&gt; and handle them with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.backgroundTask&lt;/code&gt; modifier, while also providing a method for testing these tasks via the Xcode debugger.&lt;/p&gt;

&lt;h3 id=&quot;controlling-views-using-the-accelerometer&quot;&gt;&lt;a href=&quot;https://www.hackingwithswift.com/plus/swiftui-special-effects/controlling-views-using-the-accelerometer&quot;&gt;Controlling views using the accelerometer&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/twostraws.bsky.social&quot; class=&quot;author&quot;&gt;Paul Hudson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The author demonstrates how to use Core Motion to control SwiftUI views using the device’s accelerometer and gyroscope. He provides a practical implementation of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MotionManager&lt;/code&gt; wrapper and explores various creative effects, such as screen-blending shapes, masking text with dynamic gradients, and achieving 3D rotation. The article emphasizes how minimal effort can add “spark of delight” to a user interface through real-world interaction.&lt;/p&gt;

&lt;h3 id=&quot;do-i-need-identifiable-on-my-generable-object-used-in-an-array&quot;&gt;&lt;a href=&quot;https://bsky.app/profile/bigmountainstudio.bsky.social/post/3ml6uj47jzu2g&quot;&gt;Do I need Identifiable on my Generable object used in an array?&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/bigmountainstudio.bsky.social&quot; class=&quot;author&quot;&gt;Mark Moeykens&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nothing beats a great tip on using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Identifiable&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Generable&lt;/code&gt; objects when interacting with Apple’s on-device intelligence models. We love this format - on-point, graphic and useful :)&lt;/p&gt;

&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;

&lt;h3 id=&quot;macfanscontrol&quot;&gt;&lt;a href=&quot;https://github.com/beyondthecode-bc/MacFansControl&quot;&gt;MacFansControl&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://beyondthecode.bsky.social/&quot; class=&quot;author&quot;&gt;Vlad&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MacFansControl is an open-source macOS utility built with Swift and SwiftUI that allows users to monitor temperature sensors and precisely control fan speeds on both Apple Silicon and Intel Macs. It features a visual multi-point fan curve editor, customizable menubar readouts, and safety watchdogs to prevent overheating if the app crashes. The project emphasizes a lightweight, “no-bloat” approach, providing native performance without using Electron or web views.&lt;/p&gt;

&lt;h2 id=&quot;talk&quot;&gt;Talk&lt;/h2&gt;

&lt;h3 id=&quot;meet-webkit-for-swiftui&quot;&gt;&lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2025/231&quot;&gt;Meet WebKit for SwiftUI&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/rr-codes&quot; class=&quot;author&quot;&gt;Richard Robinson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Richard introduces “WebKit for SwiftUI”, a new API that simplifies integrating web content into apps across all Apple platforms. The session covers the new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebView&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebPage&lt;/code&gt; components, allowing developers to load remote URLs, HTML strings, or even local resources via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;URLSchemeHandler&lt;/code&gt; protocol. It also highlights advanced features like JavaScript communication with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;callJavaScript&lt;/code&gt;, custom navigation policies with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NavigationDeciding&lt;/code&gt;, and SwiftUI-native scroll position syncing and “Find-In-Page” support.&lt;/p&gt;
</content>
  </entry>
</feed>
