Fatbobman's Swift Weekly #119
Building AI Moats: Anthropic’s Crackdown and the Apple-Google Alliance
Building AI Moats: Anthropic’s Crackdown and the Apple-Google Alliance
As 2026 begins, the AI world has already been hit with two blockbuster announcements.
First, Anthropic took drastic measures to ban third-party command-line interfaces (CLIs) and “wrapper” software from accessing personal Claude subscription accounts (Pro/Max). The official intent is clear: to plug the loophole where users were arbitraging low-cost subscriptions against high-value API usage, and to consolidate this efficient coding experience into an exclusive moat for their official tool, Claude Code.
Close on its heels, Apple officially confirmed a deep partnership with Google. Gemini serves as the cornerstone for Siri and Apple Intelligence, handling backend reasoning and logic. This signifies that in Apple’s AI landscape, Google has secured its status as “infrastructure”—thanks to its profound accumulation of cloud computing and TPU computing power—while OpenAI’s role has been repositioned as an optional “premium add-on.”
These two seemingly unrelated events reveal a significant trend for the AI industry in 2026: as the marginal returns on model capability diminish, raw “intelligence” is no longer the sole barrier to entry. Companies are now aggressively constructing their own differentiated moats.
Anthropic has chosen “vertical integration”, cementing model capabilities into an irreplaceable workflow experience by tightly bundling Claude Code with its subscription plans. Google, on the other hand, has won through “economies of scale”, leveraging the extreme cost control and stability of its TPU clusters to secure a ticket to Apple’s billion-user ecosystem.
In 2025, we were still frequently switching subscriptions based on “which model is smarter.” While each service had its merits, they were highly substitutable. Entering 2026, the window for this kind of “homogeneous competition” is rapidly closing.
In the cash-burning race of AI, time is running out for the “good but mediocre” middle ground. Whether you possess extreme cost advantages (like Google) or an exclusive, killer workflow (like Anthropic), you must possess a “trait” that competitors cannot easily replicate.
I currently subscribe to four different AI services. I believe that before the year is out, retaining just two will likely suffice for all my needs.
The main theme of 2026 will no longer be the numbers game of benchmark leaderboards. Instead, it will be about providing a compelling reason for existence that truly resonates with both business and consumer users—whether through price barriers or ultimate user experiences.
Previous Issue|Newsletter Archive
This Week’s Sponsor
AI moves fast. So should your builds
With build caching, selective testing, and actionable insights, your builds, test runs, and CI workflows fly, so your agents get faster feedback and more reliable results.
Recent Recommendations
Surviving tvOS: An Engineering Log of an Atypical Media Player
Within Apple’s vast hardware ecosystem, Apple TV often occupies a somewhat awkward position: it possesses a stable and loyal user base in the living room context, yet it is rarely a priority target for most developers, with the uncertainty of investment versus return deterring many. Ronnie Wong uses an atypical media player as an entry point to review her real-world experiences during tvOS development—ranging from platform limitations and interaction differences to engineering trade-offs and compromises. This article does not attempt to glamorize tvOS, but rather honestly presents how a developer can make rational choices and “survive” under realistic conditions on this “niche but unique” platform.
@_exported import vs. public import
Swift 6 introduced an inconspicuous yet profound new feature: Access-level modifiers on import declarations. This proposal requires developers to explicitly declare access levels when using import to reduce accidental dependency leaks and avoid “silent pollution” of module interfaces. In this article, Alexander Weiß systematically explains the design intent and usage caveats of this mechanism, focusing on the practical differences between public import and @_exported import in terms of module interface exposure, dependency transitivity, and API design. He explains why the former often does not achieve the “re-export” effect that developers intuitively expect. This has strong practical significance for developers who are building SDKs, Swift Packages, or wishing to clarify module boundaries.
After reading this article, I enabled
InternalImportsByDefaultin my current project and some third-party libraries, and was immediately greeted by a batch of compilation errors, somewhat reliving the experience of first encountering strict concurrency. However, compared to concurrency-related issues, these errors are usually more intuitive and easier to fix. I suggest you turn this setting on as early as possible to avoid facing larger-scale migration costs when it becomes the official default in the future.
Universal Links At Scale: The Challenges Nobody Talks About
The principles and implementation of Universal Links are not complex in themselves, which often gives the illusion of them being “simple and elegant.” However, once introduced into real-world scenarios involving large-scale applications, multiple domains, complex routing, and long-term evolution, the complexity reveals itself rapidly. In this article, Alberto De Bortoli combines his practical experience in large projects to systematically outline the issues often overlooked when using Universal Links at scale: the maintenance cost of AASA files, the uncertainty of caching and activation timing, risks under multi-environment and multi-team collaboration, and the reality that there is almost no “safety net” for debugging and rollback. Alberto reminds developers that when designing deep link solutions, they must prepare for “scale effects” in advance.
Swift Modules and Code/Assets Duplication
As Swift modularization deepens, resource (CodeAssets) management has gradually become an area that is easily overlooked but can cause actual problems in large-scale projects. Paulo Andrade analyzes the problem of duplicate packaging and volume inflation caused by Swift modules and CodeAssets in multi-module dependency scenarios through specific examples. He explains the underlying build and linking mechanisms and discusses feasible avoidance strategies under the current toolchain. Paulo reminds developers: modularization is not just about the design of APIs and dependency relationships; the boundaries and ownership of resources need to be treated just as seriously.
Crafting document-based apps in SwiftUI
Document-Based Apps are a form of application that is both common yet whose complexity is often underestimated. Compared to ordinary applications, their file lifecycle management, permissions and security scopes, and synergy with the system document browsing experience are unfamiliar to many developers. In this article, Alfonso Tarallo uses SwiftUI as the core to systematically outline the key components required to build document-based apps, including the division of responsibilities between FileDocument and DocumentGroup, and how SwiftUI works in synergy with system file mechanisms.
State of Swift 2026
This is a deep observation and trend analysis surrounding the Swift ecosystem. The article defines 2025 as a “year of transformation” for Swift, detailing the evolutionary path of the concurrency model from “strict” to “approachable,” as well as substantial breakthroughs in server-side (such as the Apple Password Service migration case) and Android development. The author does not shy away from community controversies regarding the architecture of SwiftUI versus AppKit, but objectively analyzes the opportunities and challenges within. Rather than a simple technical list, this article serves more as a strategic report, helping developers see the macro picture of Swift’s metamorphosis from a single “App language” to an all-scenario safe language, beyond daily technical details.
Tools
Axiom: Claude Code Agents for iOS Development
Axiom is a knowledge system of Claude Code Agents and Skills for iOS developers maintained by Charles Wiltgen. It systematically organizes development tasks, troubleshooting processes, and best practices that recur in real-world projects into reusable Skills, Agents, and Commands. It covers multiple directions including Swift 6, SwiftUI, concurrency, data persistence, debugging, accessibility, and Apple Intelligence.
Axiom attempts to answer another question: How to systematically entrust experienced engineering judgment to AI assistants. The author also encourages users to exchange practical experiences and feedback in the axiomdev subreddit.
BibTeXKit: Type-Safe BibTeX Parsing Library
BibTeX files are a text-based bibliographic database format widely used in the LaTeX document system to manage references. By maintaining independent .bib files, users can centrally store and reuse citation metadata, with tools automatically handling citation and formatting during the typesetting stage.
BibTeXKit, developed by Ezequiel Santos, is a BibTeX parsing and modeling library written in Swift with a clear objective: to provide a set of type-safe, scalable BibTeX processing capabilities for Swift projects. It maps entries, fields, and citation relationships in BibTeX files to clear Swift data structures, avoiding the complexity of staying at the string level for repeated parsing and manual processing. It is well-suited as a foundational component for bibliography management tools or research-oriented applications.
MirageKit: High-Performance Streaming and Remote Control Framework for Apple Platforms
MirageKit is a streaming framework dedicated to Apple platforms developed by Ethan Lipnik, aimed at achieving low-latency screen casting and control from macOS to iOS, visionOS, or another Mac.
The framework fully utilizes Apple’s latest system features (requires iOS 26+ / macOS 26+), with a core built on ScreenCaptureKit and Metal. It uses UDP for video streaming and supports AWDL peer-to-peer connections, achieving extremely low latency while ensuring image quality (supports 1:1 virtual display pixel-perfect rendering). Beyond simple screen transmission, MirageKit also enables input reverse control, supporting the forwarding of client-side mouse, keyboard, gestures, and even native menu bar interactions back to the host. For developers looking to build high-performance remote desktops, secondary screen apps, or Vision Pro productivity tools, this is a solution with significant potential.
Please note that MirageKit is still in an early and active stage of development, and breaking changes to the API may occur. The video shown in the tweet is a demonstration of an application Ethan is building based on MirageKit, which is also still under development.
Thanks for reading Fatbobman’s Swift Weekly! This post is public so feel free to share it.
从 Anthropic 封杀与苹果谷歌结盟,看 AI 护城河的构建
2026 年伊始,AI 界便迎来了两记重磅消息。
首先是 Anthropic 痛下杀手,禁止第三方命令行工具(CLI)和“套壳”软件调用 Claude 的个人订阅账号(Pro/Max)。官方意图非常明显:堵住利用低价订阅“薅”高价 API 羊毛的漏洞,并将这种高效的编码体验收归为官方工具 Claude Code 的专属护城河。
紧接着,苹果正式确认与谷歌达成深度合作。Gemini 将成为 Siri 及 Apple Intelligence 后端推理、逻辑处理的主力基石。这意味着,在苹果的 AI 版图中,谷歌凭借其在云计算和 TPU 算力上的深厚积累成为了“基础设施”,而 OpenAI 的角色则被重新定位为可选的“高级插件”。
这两个看似独立的新闻,揭示了 2026 年 AI 行业的一个显著趋势:随着大模型能力的边际效应递减,单纯的“智力”已不再是唯一的壁垒,各家公司正在疯狂构建属于自己的差异化护城河。
Anthropic 选择了“垂直整合”,通过强绑定 Claude Code 与订阅计划,将模型能力固化为不可替代的工作流体验;而谷歌则赢在了“规模效应”,凭借 TPU 集群带来的极致成本控制和稳定性,拿下了苹果这张通往十亿用户的船票。
2025 年,我们还在为“哪个模型更聪明”而频繁切换订阅,各家服务虽各有千秋,但可替代性强。进入 2026 年,这种“同质化竞争”的窗口期已临近关闭。
在烧钱如流水的 AI 赛道,留给“不错但平庸”的中间派的时间已经不多了。无论你是拥有极致的成本优势(如 Google),还是拥有独占的杀手级工作流(如 Anthropic),你必须具备一个竞争对手无法轻易复制的“特质”。
我目前仍有 4 个不同的 AI 服务订阅,我相信不用到年底,留 2 个订阅或许就能满足我的全部需求。
2026 年的主轴将不再是跑分榜上的数字游戏,而是通过价格壁垒或极致体验,提供切实打动 B 端与 C 端的生存理由。
本期赞助
AI 速度快,你的构建也应如此
通过构建缓存、选择性测试以及可操作的洞察,让你的构建、测试运行和 CI 工作流飞速运转,让你的 AI 代理获得更快的反馈和更可靠的结果。
近期推荐
在 tvOS 上活下來:一個非典型播放器的工程實錄
在苹果庞大的硬件生态中,Apple TV 往往处于一个略显尴尬的位置:它在客厅场景中拥有稳定且忠实的用户群,却始终不是多数开发者的优先目标,投入与回报的不确定性也让不少人望而却步。Ronnie Wong 以一款非典型播放器为切入点,回顾了她在 tvOS 开发过程中的真实经历——从平台限制、交互差异,到工程取舍与妥协。这篇文章这篇文章没有试图粉饰 tvOS 开发的痛点,而是如实呈现了在这一“小众但独特”的平台上,开发者如何在现实条件中做出理性选择并“活下来”。
@_exported import vs. public import
Swift 6 引入了一个并不显眼、却影响深远的新特性:Access-level modifiers on import declarations。该提案要求开发者在使用 import 时显式声明访问级别,以减少依赖无意外泄、避免模块接口被“悄然污染”。在本文中,Alexander Weiß 系统讲解了这一机制的设计初衷与使用注意事项,并重点对比了 public import 与 @_exported import 在模块接口暴露、依赖传递以及 API 设计层面的实际差异,解释了为什么前者往往并不能实现开发者直觉中的“重导出”效果。这对于正在构建 SDK、Swift Package,或希望明确模块边界的开发者来说,具有很强的现实指导意义。
我在读完这篇文章后,已经在当前项目以及部分第三方库中启用了
InternalImportsByDefault,并立刻迎来了一批编译错误,多少重温了刚接触严格并发时的体验。不过,相比并发相关的问题,这类错误通常更直观、也更容易修复。建议你尽早开启这一设置,以避免在未来官方默认启用时,集中面对更大规模的迁移成本。
Universal Links at Scale:那些鲜有人提及的规模化挑战 (Universal Links At Scale: The Challenges Nobody Talks About)
Universal Links 的原理和实现本身并不复杂,也因此常常给人一种“简单而优雅”的错觉。但一旦进入大规模应用、多个域名、复杂路由和长期演进的真实场景,其复杂度会迅速显现。在本文中,Alberto De Bortoli 结合自身在大型项目中的实践经验,系统梳理了 Universal Links 在规模化使用时常被忽视的问题:AASA 文件的维护成本、缓存与生效时机的不确定性、多环境与多团队协作下的风险,以及调试与回滚几乎没有“安全网”的现实困境。Alberto 提醒开发者在设计深度链接方案时,必须提前为“规模效应”做好准备。
当模块化遇到资源复制问题 (Swift Modules and Code/Assets Duplication)
随着 Swift 模块化程度的不断加深,资源(CodeAssets)管理逐渐成为一个容易被忽视、却可能在规模化项目中引发实际问题的领域。Paulo Andrade 通过具体示例分析了 Swift 模块与 CodeAssets 在多模块依赖场景下产生重复打包与体积膨胀的问题,解释了其背后的构建与链接机制,并探讨了当前工具链下可行的规避策略。Paulo 提醒开发者:模块化并不仅仅是 API 与依赖关系的设计,资源的边界与归属同样需要被认真对待。
使用 SwiftUI 构建文档型应用 (Crafting document-based apps in SwiftUI)
文档型应用(Document-Based App)是一个既常见、却常被低估复杂度的应用形态。相比普通应用,其文件生命周期管理、权限与安全作用域,以及与系统文档浏览体验的协同方式,对不少开发者而言都较为陌生。 在本文中,Alfonso Tarallo 以 SwiftUI 为核心,系统梳理了构建文档型应用所需的关键组成部分,包括 FileDocument、DocumentGroup 的职责划分,以及 SwiftUI 如何与系统文件机制协同工作。
Swift 2026 生态现状 (State of Swift 2026)
这是一篇围绕 Swift 生态的深度观察与趋势研判。文章将 2025 年定义为 Swift 的“变革之年”,详细梳理了并发模型从“严格”向“平易近人(Approachable)”的演进路径,以及服务端(如 Apple 密码服务迁移案例)与 Android 开发的实质性突破。作者没有回避社区关于 SwiftUI 与 AppKit 的架构争议,而是客观分析了其中的机遇与挑战。相比于单纯的技术清单,本文更像是一份战略报告,帮助开发者在日常代码之外,看清 Swift 正从单一的“App 语言”向全场景安全语言蜕变的宏观图景。
和 ChaoCode 一起学 CS146S
CS146S 是斯坦福大学开设的一门前沿计算机科学课程,全名为 “CS146S: The Modern Software Developer”。该课程的核心理念在于教导学生利用最新的 AI 工具(如 LLMs、Cursor、Claude 等)将开发效率提升 10 倍,从单纯的“代码编写者”转变为“AI 智能体的指挥官”。
如果你对这门课程感兴趣,但面对大量的英文阅读材料和纯文本 Slides 感到枯燥或畏难,那么 ChaoCode (Jane) 刚刚开启的这个“伴读”系列可能正是你需要的。Jane 以“视觉学习者”的视角,通过视频形式记录并分享了这门课程的学习过程。她不仅将原始 Slides 整理成了繁体中文/英文双语版本,补充了原版缺失的讲者注释,还专门维护了一个 Notion 页面 来整合所有的学习资源与作业。这不是一个课程搬运,而是一个“Learning in Public”的最佳实践。
工具
Axiom:面向 iOS 开发的 Claude Code Agent 集合
Axiom 是由 Charles Wiltgen 维护的一套面向 iOS 开发者的 Claude Code Agents 与 Skills 知识体系。它将大量真实项目中反复出现的开发任务、排障流程与最佳实践,系统整理为可复用的 Skills、Agents 与 Commands,覆盖 Swift 6、SwiftUI、并发、数据持久化、调试、可访问性以及 Apple Intelligence 等多个方向。
Axiom 尝试回答另一个问题:如何把经验丰富的工程判断,系统化地交给 AI 助手执行。作者也鼓励使用者在 Reddit 的 axiomdev 板块 中交流实践经验与反馈。
BibTeXKit:类型安全的 BibTeX 解析库
BibTeX 文件是一种基于文本的文献数据库格式,广泛用于 LaTeX 文档体系中管理参考文献。通过维护独立的 .bib 文件,用户可以集中存储并复用文献的元数据,在排版阶段由工具自动完成引用与格式化。
由 Ezequiel Santos 开发的 BibTeXKit 是一个使用 Swift 编写的 BibTeX 解析与建模库,目标非常明确:为 Swift 项目提供一套类型安全、可扩展的 BibTeX 处理能力。它将 BibTeX 文件中的条目、字段与引用关系映射为清晰的 Swift 数据结构,避免了停留在字符串层面反复解析与手工处理所带来的复杂性,更适合作为文献管理类工具或研究型应用的底层组件。
MirageKit:Apple 平台高性能投屏与远程控制框架
MirageKit 是一个由 Ethan Lipnik 开发的 Apple 平台专用流媒体框架,旨在实现 macOS 画面向 iOS、visionOS 或另一台 Mac 的低延迟投屏与控制。
该框架充分利用了 Apple 最新的系统特性(需 iOS 26+ / macOS 26+),核心基于 ScreenCaptureKit 与 Metal 构建,利用 UDP 传输视频流并支持 AWDL 点对点连接,在保证画质(支持 1:1 虚拟显示器像素级渲染)的同时实现了极低的延迟。除了单纯的画面传输,MirageKit 还打通了输入反向控制,支持将客户端的键鼠、手势操作甚至原生菜单栏交互回传至主机。对于想要构建高性能远程桌面、副屏应用或 Vision Pro 生产力工具的开发者来说,这是一个非常有潜力的起步方案。
需要注意的是,MirageKit 目前仍处于 早期且活跃的开发阶段,API 可能会出现破坏性变更。推文 中展示的视频,是 Ethan 基于 MirageKit 构建、仍在开发中的应用演示。


