Fatbobman's Swift Weekly #079
Microsoft Tightens Plugin Restrictions, Google Pushes for the Cloud and What's Next for Xcode?

Microsoft Tightens Plugin Restrictions, Google Pushes for the Cloud and What's Next for Xcode?
Not long ago, Microsoft significantly enhanced GitHub Copilot’s functionality. In addition to adding support for MCP, it also introduced an Agent mode for AI interaction similar to that of Cursor. As a result, GitHub Copilot has significantly closed the gap with the leading AI code tools. Given its lower pricing strategy (only $10 per month), it is clear that Microsoft is poised to fully enter the commercial AI assistance market and services.
For developers, healthy competition means better products and more cost-effective services. However, many current AI coding tools share identical or very similar underlying implementations with VSCode and often use similar large model combinations. This indicates that, in time, the differences between these tools will become even smaller. Consequently, offering more cost-effective and uniquely valuable features will become the main way for these tools to attract users.
Perhaps to maintain VSCode’s uniqueness, some crucial plugins developed by Microsoft within the VSCode ecosystem—such as Remote SSH, Pylance, Python Debugger, and C/C++—can no longer be used in editors other than VSCode in their latest versions. Although these plugins are closed source, third-party editors had always been allowed to use them; now, they suddenly display a message stating "Only available on Microsoft products". While this does not violate Microsoft’s licensing during the development of these plugins, this abrupt restriction has inconvenienced many users of other editors. Considering that Microsoft offers a plethora of excellent plugins throughout the VSCode ecosystem, if a significant portion of these can only run on VSCode in the future, it will undoubtedly enhance VSCode’s competitive edge among these editor tools and influence many developers’ choices.
In response to this challenge, the Cursor team quickly rolled out an emergency fix and plans to develop a long-term solution by gradually shifting towards supporting community-driven open-source alternatives. This incident essentially reflects that Microsoft now considers Cursor a serious competitor—a challenger whose AI capabilities can, in some scenarios, surpass the experience of VSCode.
Meanwhile, last week, Google launched Firebase Studio, pushing AI editors into a new realm. This platform, which integrates Project IDX, Genkit, and Gemini, not only supports rapid prototyping using natural language but also allows iterative app development through AI chat, and even provides one-click deployment to Firebase App Hosting. With deep integration into Google’s cloud services, it not only accelerates development and debugging but also significantly lowers deployment difficulties. It is foreseeable that Microsoft, with its own advantages in cloud services, will soon offer similar experiences in VSCode. Much like today’s browsers and search engines, AI development tools will gradually transition from being mere desktop utilities for developers to becoming gateways tightly bound to major corporations.
From a purely commercial perspective, this poses no inherent problem. However, it means that the window of opportunity for small companies and teams developing AI editors will shrink even further. They will have to choose between two paths: either truly differentiate the AI coding experience or rely on community support to maintain an ecosystem as a truly independent development tool. A market that gradually loses its vibrancy will stifle creativity—even though history shows that almost every sector tends to follow a similar trajectory, it is surprising how swiftly and decisively major companies are acting in the AI era.
Amid this wave of transformation in development tools, Apple’s Xcode seems to have yet to demonstrate a clear strategy for AI integration. As the core development tool within the Apple ecosystem, Xcode has long been the top choice for Apple developers due to its seamless integration with the platform. However, with AI reshaping the development experience at an unprecedented speed, adopting a wait-and-see approach is no longer wise. Without significant breakthroughs in the next one to two years, not only will the developer experience lag, but the innovative ecosystem may also suffer. What answer will Apple provide at WWDC 2025? This will determine its platform’s status in the next generation of development paradigms.
Previous Issue|Newsletter Archive
This Week's Sponsor
Need to debug HTTPS on your iPhone?
Try Proxyman! The best-in-class macOS that helps you capture/debug HTTP(s) with a few clicks. Support iOS devices and Simulator.
If you appreciate my work and want to promote your product to the Swift and iOS developer community, sponsoring my blog & newsletter could be an excellent opportunity for you.
Original
Building WASM Applications with Swift
With the official release of Swift 6.1, SwiftWasm has received a major upgrade. This milestone marks the first time SwiftWasm is built entirely on top of the official open-source Swift toolchain — no more custom patches. This greatly simplifies installation, reduces system storage usage, and most importantly, lowers maintenance costs across platforms, injecting new energy into the Swift ecosystem. In this article, we explore how to build WebAssembly applications using Swift, showcasing the cross-platform potential of the language.
Recent Recommendations
Rules of Structured Concurrency
Tasks in Swift Concurrency fall into two categories: structured and unstructured. The key difference lies in whether they form parent-child relationships, and whether they support automatic lifecycle, cancellation, and error propagation handling. In this article, Vitaly Batrakov introduces the concept of a task tree and summarizes three key rules for structured concurrency — Error, Group Completion, and Group Cancellation (a.k.a. EGG 🥚). This post is a great read for anyone building mental models for Swift Concurrency.
The Limits of swift-markdown Customization
swift-markdown is Apple’s official Markdown parsing and construction library. It provides a clean API and a Visitor-based traversal model. In this article, Christian Tietze shares the limitations he encountered when building a Markdown processing pipeline with it: while traversal and reading work well, inserting nodes, restructuring the tree, or extending the format are severely restricted. The inability to define new node types, inject subtrees, or extend formatters makes this a textbook case of “looks flexible, but isn’t.” Still, the article also reflects thoughtfully on the boundaries of AST tool design.
Distribute Your Swift CLIs for macOS
Many Swift CLI tools still rely on Mint or Mise for installation, which builds from source. While convenient for maintainers, it leads to slow and fragile installations for users. Pedro Piñera suggests a better approach: distribute precompiled binaries via GitHub Releases + UBI, and integrate with Mise for smooth versioning and installation. In this post, Pedro walks through a reusable release script that handles fat binary creation, compression, signing, and CI-compatible deployment.
Should You SwiftData?
SwiftData has sparked debate since its debut, and many developers are still unsure whether to adopt it. In this post, Leo G Dion shares his experience from building Bushel, and outlines his reasoning. If you favor official Apple frameworks, prefer ORM-style data access, and want to align with modern technologies like SwiftUI, Swift 6, and macros — SwiftData might be the right tool. The article also lists notable alternatives, including GRDB, CoreStore, and Boutique.
Why I Never Subclass UITableViewCell or UICollectionViewCell
While building a shopping app, Srđan Stanić followed the standard pattern of subclassing UITableViewCell
and UICollectionViewCell
to display product items — until design changes required the same UI to appear in various containers: horizontal scroll, pop-ups, and even static lists. This led to duplication, inflexibility, and unnecessary container overhead. Srđan chose to reverse course: extract layout logic into a standalone UIView
, embed it into whichever cell or context is needed, and simplify further using generics. The result? Greater reusability, easier maintenance, and even SwiftUI compatibility.
WWDC25 Wishes
It’s wishlist season again! Majid Jabrayilov shares his hopes for WWDC25 — and they focus squarely on developer tooling:
Swift Assist & AI Tooling: Calls for Apple to catch up on AI-powered development support and suggests introducing a dedicated Xcode MCP server to offer Copilot-style assistance.
Project.swift
for project configuration: Proposes a Swift-native configuration file akin toPackage.swift
, making version control friendlier and enabling editing in VS Code and other tools.Recycling views in SwiftUI: Hopes SwiftUI will gain a recycling mechanism for efficient rendering of large datasets — something UIKit has long supported via
UITableView
andUICollectionView
.
Every one of Majid’s points resonated with me — especially the push for modern project configuration in a multi-IDE world.
TextRenderer Examples Collection – Prismic
Starting in iOS 18, developers can implement the TextRenderer
protocol to transform text appearance before rendering in SwiftUI’s Text
component. Paul Hudson created Prismic, an open-source showcase of such effects — from simple Swift-based animations to advanced distortions using Metal shaders. Paul encourages contributors to share creative text renderers via the project.
Want to learn how to build these effects yourself? Check out Creating Stunning Dynamic Text Effects with TextRenderer
Event
AdventureX 2025 Now Open for Global Applications
AdventureX 2025 will take place in Hangzhou, China, from July 23 to 27. This year’s event is set to break records for hackathon scale in China, offering 800 participant slots, along with free accommodation, meals, and travel subsidies. Applications are now open to creators from all around the world.
Participants from countries including the United States, Canada, Japan, Singapore, the United Kingdom, and India have already signed up — the youngest of whom is just 15 years old. Our vision for AdventureX 2025 is to create an open, inclusive space that welcomes people of different cultures and backgrounds. United by their passion for creation, makers from across the globe will gather here to use technology to build a better world.
➡️ Apply Now
微软收紧插件、谷歌发力云端,Xcode 何去何从?
不久前,微软对 Github Copilot 进行了相当程度的功能增强,除了添加了对 MCP 的支持外,在 AI 交互模式上也提供了与 Cursor 对齐的 Agent 模式,至此,Github Copilot 大大缩小了与其他 AI 代码工具领先者之间的差距。考虑到其更低的定价策略( $10/月 ),明显微软已做好了全力进入商业 AI 辅助市场/服务的准备。
对于开发者来说,良性的竞争意味着会带来更好的产品和更有性价比的服务。但由于目前不少 AI 编程工具与 VSCode 都使用了相同或接近的底层实现,并且选用了类似的大模型组合,这意味着过段时间,这些工具之间的差异会越来越小,提供更有性价比、更具独特价值的功能就变成了这些工具获取用户的主要手段。
或许是为了保证 VSCode 的独特性,在 VSCode 生态中一些非常重要的,由微软开发的插件(Remote SSH、Pylance、Python Debugger、C/C++ 等)在最新的更新版中已经无法在 VSCode 之外的编辑器中使用了。这些插件虽然闭源但一直允许第三方编辑器使用,现在却突然弹出“只能在微软产品中使用”的提示。尽管这并没有违法微软在开发这些插件时的授权,但这种突然的屏蔽行为还是引起了很多其他编辑器使用者的不便。考虑到在整个 VSCode 生态中,微软提供了大量的优秀插件,如果未来其中相当一部分只能运行在 VSCode 中,那么会明显提高 VSCode 在这些编辑器工具中的竞争力,并影响不少开发者的选择。
面对这一挑战,Cursor 团队已迅速推出应急修复,并计划开发长期解决方案,逐步转向支持社区开源替代品。这一事件实际上反映了微软已将 Cursor 视为真正的竞争对手——一个凭借 AI 能力,在某些场景下体验超越 VSCode 的挑战者。
与此同时,谷歌在上周推出的 Firebase Studio 又将 AI 编辑器推向了新的领域。这款融合了 Project IDX、Genkit 和 Gemini 的平台不仅支持通过自然语言快速生成原型,还能通过 AI 聊天方式迭代应用,并提供一键部署到 Firebase App Hosting 的能力。通过与谷歌云端服务的深入捆绑,不仅加速了开发、调试的过程,也大幅降低了部署的难度。可以预见,同样具备云端服务优势的微软也很快会在 VSCode 上提供类似的体验。就像当前的浏览器、搜索引擎一样,AI 开发工具将逐步从开发者的桌面工具过度成各个大公司绑定开发者的入口。
单纯从商业角度来说这并没有什么问题,但这意味着仍在开发 AI 编辑器的小公司、小团队的机会窗口将更加的小了。他们不得不在两条路中选择:要么在 AI 编程体验上做出真正的差异化,要么依靠社区力量维持生态,成为一个真正独立的开发工具。一个逐渐缺少了活力的市场将扼杀创意,尽管从历史上来看几乎每个领域都会走向类似的结局,只是没想到在 AI 时代,大公司的行动会如此的迅速,如此的果决。
在这场开发工具的变革浪潮中,苹果的 Xcode 似乎还未展现出清晰的 AI 集成战略。作为苹果生态的核心开发工具,Xcode 长期以来依靠其与平台的无缝集成成为苹果开发者的不二之选。然而,当 AI 正以前所未有的速度重塑开发体验时,静观其变已不再是明智之举。如果不能在未来的一两年中有重要突破,不仅开发者体验会滞后,创新生态也可能流失。苹果会在 WWDC 2025 上交出怎样的答案?这将决定其平台在下一代开发范式中的地位。
本期赞助
需要在 iPhone 上调试 HTTPS?
试试 Proxyman!这是一款顶级的 macOS 应用,只需点击几下,即可轻松捕获和调试 HTTP(s) 流量。支持 iOS设备和模拟器。
如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 爱发电,Buy Me a Coffee 支持我的创作。
原创
用 Swift 构建 WASM 应用
随着 Swift 6.1 版本的正式发布,SwiftWasm 也迎来了重大升级。这一里程碑式的更新标志着 SwiftWasm 首次实现了完全基于官方 Swift 开源工具链的构建——告别了自定义补丁的时代,不仅显著简化了开发者的安装流程,大幅节省了系统存储空间,更为重要的是,这种纯正构建方式极大降低了平台的维护成本,为 Swift 生态系统注入了新的活力。在本文中,我们将探索如何利用 Swift 构建 WebAssembly 应用,带你领略 Swift 跨平台开发的无限可能。
近期推荐
结构化并发的行为准则 (Rules of Structured Concurrency)
Swift 并发中的任务可分为结构化(Structured)与非结构化(Unstructured)两类,核心差异在于是否具备父子任务关系,以及是否能自动管理生命周期、错误传播与取消逻辑。在这篇文章中,Vitaly Batrakov 基于“任务树”模型,总结出结构化并发的三大核心规则(Error、Group Completion、Group Cancellation,简称 EGG 🥚),为 Swift 并发机制提供了清晰、系统的理解路径,推荐给并发初学者与进阶开发者阅读。
swift-markdown 的自定义能力边界 (The Limits of swift-markdown Customization)
swift-markdown 是苹果最初开发的 Markdown 解析与构建库,提供了优雅的访问结构和基于 Visitor 模式的遍历机制。Christian Tietze 在文章中分享了他在构建 Markdown 处理管线过程中遇到的诸多限制:虽然读取和遍历功能完善,但在插入节点、修改结构、扩展元素等方面受限严重。无法新增节点类型、缺乏插入/组合能力、formatter 不可扩展,让这个库成为“看起来灵活、实际封闭”的典型代表。吐槽之余,Christian 也对 AST 工具的设计边界提出了不少值得参考的思考。
如何发布你的 macOS Swift 命令行工具 (Distribute Your Swift CLIs for macOS)
目前,许多 Swift CLI 工具仍依赖 Mint 或 Mise 实现“安装即编译”,虽然简化了维护流程,但对用户而言存在编译慢、易失败等问题。Pedro Piñera 认为,更理想的方式是发布预编译二进制文件,并结合 GitHub Releases + UBI 实现一键安装。再配合 Mise,可提供更完善的版本管理体验。在本文中,Pedro 提供了一套可复用的构建与发布脚本流程,覆盖 fat binary 构建、压缩、签名上传至 GitHub,并适配 CI 与本地环境。
你的项目适合用 SwiftData 吗?(Should You SwiftData?)
SwiftData 自发布以来一直颇具争议,很多开发者仍在观望是否应该投入使用。在本文中,Leo G Dion 结合自己开发 Bushel 的经验,分享了他的思考。他认为,对于倾向于使用 Apple 官方框架、喜欢 ORM 编程范式、重视长期维护成本与新技术支持(如 SwiftUI、Swift 6、宏等)的开发者来说,SwiftData 是值得考虑的方案。此外,文中还列出了一些替代方案,如 GRDB、CoreStore、Boutique 等,供不同需求的开发者参考。
我为什么不再子类化 UITableViewCell / UICollectionViewCell (Why I Never Subclass UITableViewCell or UICollectionViewCell)
在开发购物类 App 的过程中,Srđan Stanić 起初沿用了常规模式:为 UITableView
和 UICollectionView
分别子类化 UITableViewCell
/ UICollectionViewCell
,用以构建商品列表 UI。但随着产品设计不断演进,他逐渐遇到以下问题:相同 UI 需在多个上下文中复用;每次复用都必须重新实现布局逻辑;为适配某种 UI 承载方式,不得不引入不必要的复杂容器。于是他选择反向而行:不再子类化 Cell,而是将布局独立为一个纯 UIView
,根据使用场景再嵌入到不同的 Cell 或容器中。这不仅提升了复用性和可维护性,也能轻松适配 SwiftUI,通过泛型 Cell 容器进一步简化样板代码。
WWDC25 的愿望单 (WWDC25 Wishes)
又到了每年喜闻乐见的 WWDC 愿望清单时节,Majid Jabrayilov 的关注点主要聚焦在开发工具的改进:
Swift Assist 与 AI 工具链:呼吁 Apple 尽快补上 AI 辅助开发的短板,并建议推出 Xcode 专属的 MCP server,构建 Copilot 式开发体验;
Project.swift
项目配置文件:希望能像Package.swift
一样,用纯 Swift 描述项目配置,提升版本控制友好性,同时让 VS Code 等非 Xcode 工具更具可操作性;SwiftUI 的 Recycling View 支持:期待 SwiftUI 引入像
UITableView
/UICollectionView
一样的视图重用机制,解决复杂列表场景中的性能瓶颈。
Majid 提出的每一项都非常戳我,尤其是项目配置的现代化 —— 在当前多 IDE 并用的开发环境中,已经显得越来越迫切。
TextRenderer 演示合集 —— Prismic
从 iOS 18 开始,开发者可以通过自定义 TextRenderer
协议的实现,在 SwiftUI 的 Text
渲染前对文本进行变换,从而打造更具视觉冲击力的动态文字效果。Paul Hudson 创建了 Prismic,这是一个收录了多种 TextRenderer
示例效果的开源项目,既包含纯 Swift 实现的样式,也包含基于 Metal Shader 的高级扭曲与颜色特效。Paul 鼓励开发者基于该项目进行扩展,贡献更多创意实现。
想了解如何构建这些效果?推荐阅读:用 TextRenderer 构建绚丽动感的文字效果
活动
AdventureX 2025 解除报名的年龄限制
在 2024 年,AdventureX 曾规定参赛者年龄需在 26 岁以下。而在 2025 年,我们决定面向所有人开放报名。虽然 26 岁以下的青年创作者与学生依然将构成参赛者的主要群体,但我们也将开放至多 100 个不限年龄名额,欢迎那些虽不在年龄范围内、却依然怀抱年轻心态与创作热情的朋友加入。
我们希望借此机会,促成跨代创作者的深度交流,在同一个现场分享经验、碰撞灵感。
👉 了解详情:让我们再次为创造失眠
➡️ 点击进入 活动报名通道