<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Fatbobman&apos;s Blog</title><description>English Home | Fatbobman&apos;s Blog ｜肘子的 Swift 记事本 – Sharing content related to Swift, SwiftUI, Core Data, and Swift Data, as well as covering development tools, AI, and other topics. All articles are original creations; for reproduction, please contact the author.</description><link>https://fatbobman.com/</link><language>en</language><follow_challenge><feedId>57718511161060352</feedId><userId>60878761419746304</userId></follow_challenge><item><title>When Every Data Write Comes at a New Price - Fatbobman&apos;s Swift Weekly #144</title><link>https://fatbobman.com/en/weekly/issue-144/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-144/</guid><description>Recently, OpenAI’s Codex was found to have a logging issue: the program kept writing large volumes of logs to a local database, causing the files to grow continuously and generating far more disk writes than normal. Bugs like this are hardly new. A few years ago, most people would probably have deleted the files, restarted the app, and waited for the next release to fix it.</description><pubDate>Mon, 13 Jul 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, OpenAI’s Codex was found to have a logging issue: the program kept writing large volumes of logs to a local database, causing the files to grow continuously and generating far more disk writes than normal. Bugs like this are hardly new. A few years ago, most people would probably have deleted the files, restarted the app, and waited for the next release to fix it.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-144/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>When Linux Becomes &quot;Air&quot;: Containers, Agents, and a &quot;Desktop War&quot; That No Longer Matters - Fatbobman&apos;s Swift Weekly #143</title><link>https://fatbobman.com/en/weekly/issue-143/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-143/</guid><description>A week ago, Microsoft released the public preview of native Windows 11 container support that requires no Docker. Combined with Apple&apos;s recent 1.0 release of its container manager (Apple Container), both major desktop operating systems have now deeply integrated Linux containers as first-class citizens of the system.</description><pubDate>Mon, 06 Jul 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A week ago, Microsoft released the public preview of native Windows 11 container support that requires no Docker. Combined with Apple&apos;s recent 1.0 release of its container manager (Apple Container), both major desktop operating systems have now deeply integrated Linux containers as first-class citizens of the system.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-143/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>Debugging Notes on Two SwiftUI Animation Bugs</title><link>https://fatbobman.com/en/posts/debugging-notes-on-two-swiftui-animation-bugs/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/debugging-notes-on-two-swiftui-animation-bugs/</guid><description>Easy-to-use animation has always been one of SwiftUI&apos;s defining features. But the nature of a declarative framework is a double-edged sword: once an animation misbehaves, tracking down the cause is often trickier than in an imperative framework. This post records two SwiftUI animation bugs I ran into over the past two weeks, along with how I tracked each of them down.</description><pubDate>Wed, 01 Jul 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Easy-to-use animation has always been one of SwiftUI&apos;s defining features. But the nature of a declarative framework is a double-edged sword: once an animation misbehaves, tracking down the cause is often trickier than in an imperative framework. This post records two SwiftUI animation bugs I ran into over the past two weeks, along with how I tracked each of them down.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/debugging-notes-on-two-swiftui-animation-bugs/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><author>Fatbobman</author></item><item><title>SPI Joins Apple, and Swift Moves Toward Self-Hosting - Fatbobman&apos;s Swift Weekly #142</title><link>https://fatbobman.com/en/weekly/issue-142/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-142/</guid><description>A few days ago, Swift Package Index (SPI) announced that it had joined Apple. The two sides will work together to build a comprehensive package registry for Swift developers. At the same time, SPI’s existing capabilities, including package discovery, compatibility checking, and documentation hosting, will continue to be provided, and package authors will not need to adjust their current publishing workflows in the short term.</description><pubDate>Mon, 29 Jun 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few days ago, Swift Package Index (SPI) announced that it had joined Apple. The two sides will work together to build a comprehensive package registry for Swift developers. At the same time, SPI’s existing capabilities, including package discovery, compatibility checking, and documentation hosting, will continue to be provided, and package authors will not need to adjust their current publishing workflows in the short term.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-142/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>Is Anyone Else Excited by Swift’s Progress as a Language? - Fatbobman&apos;s Swift Weekly #141</title><link>https://fatbobman.com/en/weekly/issue-141/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-141/</guid><description>Last week, a Reddit post titled &apos;Is anyone else excited by Swift progress as the language?⁠&apos; sparked a lively discussion. At WWDC 2026, Apple made it clear that Swift is now being used in key WebKit components, the QUIC networking stack, font rendering, drivers, and firmware—and, as the original poster claimed, it has started making its way into the core operating system kernel beginning with the 27 releases.</description><pubDate>Mon, 22 Jun 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, a Reddit post titled &apos;Is anyone else excited by Swift progress as the language?⁠&apos; sparked a lively discussion. At WWDC 2026, Apple made it clear that Swift is now being used in key WebKit components, the QUIC networking stack, font rendering, drivers, and firmware—and, as the original poster claimed, it has started making its way into the core operating system kernel beginning with the 27 releases.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-141/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>From Size Class to Available Space: Is horizontalSizeClass Still Reliable?</title><link>https://fatbobman.com/en/posts/from-size-class-to-available-space/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/from-size-class-to-available-space/</guid><description>Starting with WWDC 26, when an iPhone app is mirrored to a Mac through iPhone Mirroring, its window can be freely resized. At the same time, iPhone-only apps running on iPad will also enter a resizable environment. Even without updating a physical device to a beta system, developers can already experience this change through Xcode 27 previews or the iOS 27 simulation environment in Device Hub.</description><pubDate>Wed, 17 Jun 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Starting with WWDC 26, when an iPhone app is mirrored to a Mac through iPhone Mirroring, its window can be freely resized. At the same time, iPhone-only apps running on iPad will also enter a resizable environment. Even without updating a physical device to a beta system, developers can already experience this change through Xcode 27 previews or the iOS 27 simulation environment in Device Hub.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/from-size-class-to-available-space/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><author>Fatbobman</author></item><item><title>WWDC 26: AI Watched It for You — Now What? - Fatbobman&apos;s Swift Weekly #140</title><link>https://fatbobman.com/en/weekly/issue-140/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-140/</guid><description>With the rise of AI Agent workflows, many developers this year have started letting AI handle the summarizing and highlight-picking, absorbing WWDC announcements at a much faster pace. Apple has been accommodating too — releasing all Sessions, transcripts, and sample code at once, making it even easier for AI to process everything.</description><pubDate>Mon, 15 Jun 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With the rise of AI Agent workflows, many developers this year have started letting AI handle the summarizing and highlight-picking, absorbing WWDC announcements at a much faster pace. Apple has been accommodating too — releasing all Sessions, transcripts, and sample code at once, making it even easier for AI to process everything.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-140/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>Core Data + Observation: From Property-Level Reactivity to a Freer Mental Model</title><link>https://fatbobman.com/en/posts/core-data-observation-freer-mental-model/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/core-data-observation-freer-mental-model/</guid><description>The introduction of the Observation framework has refined SwiftUI’s state reactivity from the object level down to the property level, significantly reducing many unnecessary view computations caused by coarse-grained observation. I recently explored and implemented Observation support in Core Data Evolution, giving `NSManagedObject` property-level precise observation capabilities. This article discusses the motivation behind this feature, how to use it, its implementation approach, the engineering challenges involved, and some of the trade-offs made during development.</description><pubDate>Wed, 03 Jun 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The introduction of the Observation framework has refined SwiftUI’s state reactivity from the object level down to the property level, significantly reducing many unnecessary view computations caused by coarse-grained observation. I recently explored and implemented Observation support in Core Data Evolution, giving `NSManagedObject` property-level precise observation capabilities. This article discusses the motivation behind this feature, how to use it, its implementation approach, the engineering challenges involved, and some of the trade-offs made during development.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/core-data-observation-freer-mental-model/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><category>concurrency</category><category>swiftui</category><author>Fatbobman</author></item><item><title>Taming Row Height and Spacing Jumps in SwiftUI List with a Custom Layout</title><link>https://fatbobman.com/en/posts/taming-row-height-and-spacing-jumps/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/taming-row-height-and-spacing-jumps/</guid><description>The declarative expression of animation is one of SwiftUI&apos;s core strengths. But in some scenarios the result isn&apos;t always as smooth as we&apos;d hope. A typical example: when the content height inside a `List` row changes dynamically — a subtitle going from empty to non-empty, or text changing its line count after an update — the system&apos;s built-in layout engine often fails to produce a continuous transition. Instead we get visible height jumps, flicker, or even clipping anomalies. This article starts from that phenomenon, peels back the causes layer by layer, and gives a solution built entirely on SwiftUI&apos;s native primitives. Along the way it revisits a few key constraints in SwiftUI&apos;s layout machinery.</description><pubDate>Wed, 27 May 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The declarative expression of animation is one of SwiftUI&apos;s core strengths. But in some scenarios the result isn&apos;t always as smooth as we&apos;d hope. A typical example: when the content height inside a `List` row changes dynamically — a subtitle going from empty to non-empty, or text changing its line count after an update — the system&apos;s built-in layout engine often fails to produce a continuous transition. Instead we get visible height jumps, flicker, or even clipping anomalies. This article starts from that phenomenon, peels back the causes layer by layer, and gives a solution built entirely on SwiftUI&apos;s native primitives. Along the way it revisits a few key constraints in SwiftUI&apos;s layout machinery.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/taming-row-height-and-spacing-jumps/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><author>Fatbobman</author></item><item><title>CDE: An Attempt to Make Core Data Feel More Like Modern Swift</title><link>https://fatbobman.com/en/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/</guid><description>In my previous article, I discussed the current reality of Core Data in today&apos;s projects: it hasn&apos;t disappeared, and it still has unique value, but the disconnect between it and modern Swift projects is becoming increasingly apparent. In this article, I will introduce my experimental project Core Data Evolution, exploring whether we can make Core Data continue to exist in modern Swift projects in a more natural way?</description><pubDate>Wed, 18 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my previous article, I discussed the current reality of Core Data in today&apos;s projects: it hasn&apos;t disappeared, and it still has unique value, but the disconnect between it and modern Swift projects is becoming increasingly apparent. In this article, I will introduce my experimental project Core Data Evolution, exploring whether we can make Core Data continue to exist in modern Swift projects in a more natural way?&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><category>concurrency</category><author>Fatbobman</author></item><item><title> Why I&apos;m Still Thinking About Core Data in 2026</title><link>https://fatbobman.com/en/posts/why-i-am-still-thinking-about-core-data-in-2026/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/why-i-am-still-thinking-about-core-data-in-2026/</guid><description>Core Data remains widely used in 2026, but its mismatch with modern Swift concurrency, type safety, and code expression is growing. This article outlines the three core pain points and explores what modernization might look like without abandoning Core Data.</description><pubDate>Wed, 11 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Core Data remains widely used in 2026, but its mismatch with modern Swift concurrency, type safety, and code expression is growing. This article outlines the three core pain points and explores what modernization might look like without abandoning Core Data.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/why-i-am-still-thinking-about-core-data-in-2026/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><author>Fatbobman</author></item><item><title>Why Does Passing NSManagedObjectContext Across Isolation Domains No Longer Error in Swift 6.2? The Real Change Isn&apos;t in the Compiler</title><link>https://fatbobman.com/en/posts/sendable-nsmanagedobjectcontext/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/sendable-nsmanagedobjectcontext/</guid><description>This post documents a recent debugging journey: starting from a test failure, tracing all the way down to the Core Data SDK interface, and ultimately discovering that the key change had nothing to do with the Swift compiler itself — it was how NSManagedObjectContext is imported into Swift that had changed.</description><pubDate>Wed, 04 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post documents a recent debugging journey: starting from a test failure, tracing all the way down to the Core Data SDK interface, and ultimately discovering that the key change had nothing to do with the Swift compiler itself — it was how NSManagedObjectContext is imported into Swift that had changed.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/sendable-nsmanagedobjectcontext/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>concurrency</category><category>core data</category><author>Fatbobman</author></item><item><title>Xcode 26.3 + Claude Agent: Model Swapping,MCP, Skills, and Adaptive Configuration</title><link>https://fatbobman.com/en/posts/xcode-263-claude/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/xcode-263-claude/</guid><description>Unexpectedly, Apple has directly provided support for Claude Code/Codex in Xcode 26.3. With this update, developers can finally use native AI Agents elegantly within Xcode. Over the past two days, I’ve conducted a series of experiments with this new version, including configuring MCP and writing an adaptive `CLAUDE.md`. This article uses Claude Code as an example to share some tips that go beyond the official documentation.</description><pubDate>Fri, 06 Feb 2026 02:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Unexpectedly, Apple has directly provided support for Claude Code/Codex in Xcode 26.3. With this update, developers can finally use native AI Agents elegantly within Xcode. Over the past two days, I’ve conducted a series of experiments with this new version, including configuring MCP and writing an adaptive `CLAUDE.md`. This article uses Claude Code as an example to share some tips that go beyond the official documentation.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/xcode-263-claude/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>ai</category><category>dev tools</category><author>Fatbobman</author></item><item><title>From Pixel Capture to Metadata: Reimagining Screen Recording Architecture on macOS</title><link>https://fatbobman.com/en/posts/screensage-from-pixel-to-meta/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/screensage-from-pixel-to-meta/</guid><description>Independent developer Sintone shares a deep dive into building a macOS screen recorder. Learn practical solutions for ScreenCaptureKit errors (-3821), high-performance video composition with Metal, and optimizing complex SwiftUI timelines using the new @Observable macro.</description><pubDate>Wed, 04 Feb 2026 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Independent developer Sintone shares a deep dive into building a macOS screen recorder. Learn practical solutions for ScreenCaptureKit errors (-3821), high-performance video composition with Metal, and optimizing complex SwiftUI timelines using the new @Observable macro.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/screensage-from-pixel-to-meta/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>isolated(any) and #isolation: Letting Swift Closures Automatically Inherit Isolation</title><link>https://fatbobman.com/en/posts/letting-swift-closures-automatically-inherit-isolation/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/letting-swift-closures-automatically-inherit-isolation/</guid><description>Swift 6 introduced many new features and keywords for concurrency. While many of these might be rarely used in daily development, encountering specific scenarios without understanding these new concepts can lead to hitting a wall, even with AI assistance. In this post, I will walk through a concurrency issue encountered during development testing to introduce how to utilize **`@isolated(any)`** and the **`#isolation`** macro. These tools enable function isolation inheritance, allowing the compiler to automatically infer the execution context of closures.</description><pubDate>Wed, 21 Jan 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Swift 6 introduced many new features and keywords for concurrency. While many of these might be rarely used in daily development, encountering specific scenarios without understanding these new concepts can lead to hitting a wall, even with AI assistance. In this post, I will walk through a concurrency issue encountered during development testing to introduce how to utilize **`@isolated(any)`** and the **`#isolation`** macro. These tools enable function isolation inheritance, allowing the compiler to automatically infer the execution context of closures.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/letting-swift-closures-automatically-inherit-isolation/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>concurrency</category><author>Fatbobman</author></item><item><title>【Tips】Why Child @State Won&apos;t Update from Parent in SwiftUI</title><link>https://fatbobman.com/en/snippet/why-child-state-won-not-update-from-parent-in-swiftui/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/why-child-state-won-not-update-from-parent-in-swiftui/</guid><description>Assigning values to @State in init usually fails on updates. Discover the mechanics of SwiftUI View Identity and the correct data flow patterns to fix this common issue.</description><pubDate>Thu, 18 Dec 2025 08:21:01 GMT</pubDate><content:encoded>&lt;p&gt;Assigning values to @State in init usually fails on updates. Discover the mechanics of SwiftUI View Identity and the correct data flow patterns to fix this common issue.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/why-child-state-won-not-update-from-parent-in-swiftui/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><author>Fatbobman</author></item><item><title>【Tips】Fixing GTM Events in Partytown: Forwarding dataLayer &amp; gtag</title><link>https://fatbobman.com/en/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/</guid><description>Did your GA4 events stop working after optimizing with Partytown? Learn how to configure the `forward` property in Astro to bridge `gtag` and `dataLayer.push` between the main thread and Web Workers.</description><pubDate>Mon, 08 Dec 2025 14:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Did your GA4 events stop working after optimizing with Partytown? Learn how to configure the `forward` property in Astro to bridge `gtag` and `dataLayer.push` between the main thread and Web Workers.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>web</category><category>performance</category><category>astro</category><author>Fatbobman</author></item><item><title>【Tips】Faster Swift 6 Builds: Enabling SwiftSyntax Prebuilts</title><link>https://fatbobman.com/en/snippet/speed-up-compilation-with-prebuilt-swift-syntax/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/speed-up-compilation-with-prebuilt-swift-syntax/</guid><description>Is compiling Swift Macros slowing you down? Learn how to enable SwiftSyntax Prebuilts in Swift 6.1+ to significantly slash Xcode build times.</description><pubDate>Fri, 06 Jun 2025 00:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Is compiling Swift Macros slowing you down? Learn how to enable SwiftSyntax Prebuilts in Swift 6.1+ to significantly slash Xcode build times.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/speed-up-compilation-with-prebuilt-swift-syntax/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><author>Fatbobman</author></item><item><title>【Tips】Swift package Access Level: Sharing Code Across Targets Securely</title><link>https://fatbobman.com/en/snippet/controlling-access-within-a-swift-package/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/controlling-access-within-a-swift-package/</guid><description>Learn how to share code between multiple Targets within a Swift Package without exposing it publicly. We explore the `package` access modifier to bridge the gap between `internal` and `public`.</description><pubDate>Thu, 08 May 2025 14:21:01 GMT</pubDate><content:encoded>&lt;p&gt;Learn how to share code between multiple Targets within a Swift Package without exposing it publicly. We explore the `package` access modifier to bridge the gap between `internal` and `public`.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/controlling-access-within-a-swift-package/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><author>Fatbobman</author></item><item><title>【Tips】Fixing SwiftLint Configuration for Monorepos in VSCode &amp; Cursor</title><link>https://fatbobman.com/en/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/</guid><description>SwiftLint ignoring your root config in VSCode or Cursor? Learn how to set `configSearchPaths` and structure your Monorepo to share linting rules across multiple packages.</description><pubDate>Thu, 24 Apr 2025 14:20:00 GMT</pubDate><content:encoded>&lt;p&gt;SwiftLint ignoring your root config in VSCode or Cursor? Learn how to set `configSearchPaths` and structure your Monorepo to share linting rules across multiple packages.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev tools</category><author>Fatbobman</author></item><item><title>【Tips】VSCode/Cursor Core Data: Manually Compiling xcdatamodeld for Tests</title><link>https://fatbobman.com/en/snippet/how-to-test-core-data-code-in-vscode-cursor/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/how-to-test-core-data-code-in-vscode-cursor/</guid><description>Core Data unit tests failing in VSCode or Cursor? Learn how to configure the Xcode toolchain and use `xcrun momc` to manually compile `.xcdatamodeld` files.</description><pubDate>Tue, 15 Apr 2025 14:21:01 GMT</pubDate><content:encoded>&lt;p&gt;Core Data unit tests failing in VSCode or Cursor? Learn how to configure the Xcode toolchain and use `xcrun momc` to manually compile `.xcdatamodeld` files.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/how-to-test-core-data-code-in-vscode-cursor/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><author>Fatbobman</author></item></channel></rss>