Swift: New Design, New Case Study, New Experience
Ahead of WWDC 2025, the Swift official website has undergone a comprehensive redesign. The new design aims to enhance user-friendliness, highlight Swift’s technical strengths, and make it easier for beginners to get started. As a programming language deeply connected to the Apple ecosystem, the website naturally incorporates strong Apple-style visual elements.
After comparing the redesigned Swift.org with other mainstream programming language websites, I noticed that the new homepage looks significantly more modern, effectively reducing the previously overly technical and cold impression, and creating a welcoming first experience for beginners. As someone passionate about Swift development, I appreciate the message the community is conveying with this update and hope Swift continues to uphold its characteristics of elegance, fluidity, and creativity.
In addition to the website redesign, the Swift community recently shared some exciting news. Engineers from Apple and the Swift community showcased a major real-world case study: Apple has completely migrated the backend of its Password Monitoring service, which handles billions of requests daily, from Java to Swift using the Vapor framework. After migration, system performance improved by approximately 40%, memory usage decreased dramatically from tens of gigabytes to hundreds of megabytes, and nearly half of the server resources were freed up. This shift has resulted in significant advancements in concurrency handling, code maintainability, and resource efficiency.
Although Vapor has long been the most prominent server-side framework within the Swift ecosystem, its adoption in enterprise-scale applications has been relatively slow due to a lack of high-profile, large-scale production cases. Apple's official adoption of Vapor in a critical business application not only represents a key milestone for server-side Swift development but also serves as a highly valuable reference for teams looking to build high-performance backend systems.
Furthermore, the Swift community has recently resolved the long-standing issue of excessively long compile times affecting Swift Macro developers and users. By enabling the compiler to utilize pre-built versions of the Swift-Syntax library, the community has significantly reduced the compilation burden. This improvement will undoubtedly further encourage the adoption and application of Swift Macros.
Overall, the Swift community has thoroughly warmed up for WWDC 2025. What surprises will Apple bring to developers next? Let’s eagerly anticipate this annual grand event.
This issue is published two days early to allow more time next week for covering WWDC 2025.
Previous Issue|Newsletter Archive
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.
Originals
Notepad.exe: A Lightweight Swift Code Editor
Xcode Playgrounds seems to have drifted from its original intention, while configuring VSCode can feel overwhelming for beginners. So how can we build a lightweight environment for learning and experimenting with Swift? This article introduces Notepad.exe, which might just be the answer you're looking for.
Recent Recommendations
WWDC 2025 Wish List Roundup
What do developers hope Apple will bring to the table this year? Can it breathe new life into the developer ecosystem? Michael Tsai compiled a list of WWDC 2025 wishes from active developers across blogs and social platforms — including improved Xcode stability, SwiftUI performance, plugin system openness, AI integration, faster TestFlight reviews, and expanded iCloud storage. How many of these dreams will become reality on WWDC stage?
Embedding Godot Games in iOS Apps is Easy Now
For years, SwiftUI has supported embedding SpriteKit scenes via SpriteView
for interactive experiences. Now, you can achieve something similar with Godot.
In this article, Christian Selig shares how to embed Godot scenes directly into iOS apps like any SwiftUI view. But this is more than just “stuffing a game into your app” — it gives developers real flexibility: build rich, cross-platform game content in Godot, while leveraging Swift and native APIs for UI, subscriptions, iCloud sync, and more. It's a best-of-both-worlds approach.
Note: This currently only works on physical devices (not in Simulator), and bundling a Godot game adds around 30MB to your binary.
A Brief History of Mac OS Version Numbers
Why is Ventura macOS 13 and Sonoma macOS 14? What happened with the overlap of 10.16 and 11? Ahead of WWDC 2025, Howard Oakley takes us through the evolution of macOS version numbers—from System 1 all the way to macOS 15—and how Apple has balanced UI naming with underlying kernel versions over the years.
Honestly, I still can’t keep all the code names straight 🙃
iOS Lifecycle: Handling willEnterForeground in AppDelegate and SceneDelegate
Starting with iOS 18.4, UIKit logs a warning if your app hasn’t adopted the scene-based lifecycle — and in the near future, this will escalate to a launch-time assertion. In other words, AppDelegate-based lifecycles are going away.
Ashish Kakkad compares the behavior of applicationWillEnterForeground
and sceneWillEnterForeground
, showing key differences in cold launch scenarios, timing, and multi-window setups — a practical guide for anyone planning to migrate.
Dealing with 0xdead10cc's in SwiftData
The dreaded 0xdead10cc
crash has long haunted iOS developers — typically caused by holding file locks during suspension, especially in setups where multiple processes share a Core Data / SwiftData store.
In Issue 84, we shared an article suggesting avoiding shared Core Data stores altogether. But Scott Driggers took a different path.
This post dives deep into diagnosing the crash and offers a workaround using beginBackgroundTask(withName:expirationHandler:)
to ask the system: "Hold off on suspending — I just need a bit more time to finish."
Clean, Reusable Swift Code Using DRY Principle
“Don’t Repeat Yourself” (DRY) is one of the most cited coding principles — and one of the most commonly violated. In this post, Saif uses practical Swift examples to show how functions, extensions, computed properties, generics, and protocol extensions can help you write cleaner, more reusable, and more maintainable code.
DRY improves quality, but don't overapply it — sometimes repetition is clearer when logic appears similar but serves different goals.
Tools
DataScout for SwiftData
DataScout by Oleksii Oliinyk is a macOS debugging tool for SwiftData and Core Data. Compared to traditional database viewers, it stands out with:
Schema display that mirrors your SwiftData models
Built-in
#Predicate
-style filtering, no SQL knowledge required
In this post, Oleksii shares the vision and technical background behind the tool. He also offers an open-source companion, DataScoutCompanion, for inspecting data directly during app development.
AppRouter – Lightweight Navigation for SwiftUI
Created by Thomas Ricouard, AppRouter
is a minimal navigation tool designed specifically for SwiftUI. By defining just three types — Destination
, Sheet
, and Tab
— and conforming to simple protocols, developers can implement elegant navigation, modal presentation, and path management with ease.
For apps with relatively simple navigation and a strong focus on native SwiftUI components, AppRouter offers a clean and intuitive routing solution worth trying out.
Swift 新设计、新案例、新体验
在 WWDC 2025 开幕前夕,Swift 官网迎来了全新改版。新设计致力于提升亲和力,突出 Swift 的技术优势,让初学者更容易上手。作为一门与苹果生态紧密关联的编程语言,新网站的视觉风格也自然融入了浓郁的苹果元素。
我将新版 Swift.org 与其他主流编程语言的网站进行对比后发现,新首页的外观确实更加现代化,有效减少了以往过于技术化的冰冷印象,为初学者营造出友好的第一观感。作为一名热爱 Swift 的开发者,我非常欣赏社区此次所传递的信息,并期望 Swift 能持续保持其流畅优雅且富有创造力的特质。
除了网站的改版,Swift 社区还带来了其他振奋人心的消息。Apple 和 Swift 社区的工程师分享了一则重量级的实战案例:苹果将每天处理数十亿请求的 Password Monitoring 服务后端从 Java 完全迁移至 Swift(基于 Vapor 框架)。迁移后的系统性能提升了约 40%,内存占用从数十 GB 降至数百 MB,同时释放了约一半的服务器资源,在并发处理、代码可维护性和资源效率等方面实现了质的飞跃。
尽管 Vapor 一直是 Swift 生态中最重要的服务端框架,但由于此前缺乏具备标志性意义的大规模生产案例,其在企业级应用中的推广一直相对缓慢。苹果此次在核心业务中正式采用 Vapor,不仅标志着 Swift 服务端开发的一个重要里程碑,更为希望构建高性能后端系统的团队提供了极具参考价值的实践范例。
此外,一个长期困扰 Swift Macro 开发者与使用者的编译时间过长问题,近日也得到了有效解决。Swift 社区通过采用编译器预构建 Swift-Syntax 库的方式,显著减轻了编译时的性能负担。这一改进无疑将进一步推动 Swift Macro 的普及与应用。
总之,Swift 社区已为即将召开的 WWDC 2025 做好了充分预热。那么,苹果下一步又将为开发者带来哪些惊喜呢?让我们共同期待这场年度盛会的到来。
本期周报提前两天发布,为的是腾出更多时间,专注整理下周的 WWDC 2025 内容。
如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 爱发电,Buy Me a Coffee 支持我的创作。
原创
Notepad.exe:轻巧的 Swift 代码编辑器
如今,Xcode Playground 似乎已经偏离了最初的设计初衷,而 VSCode 的配置对初学者来说又显得颇为复杂。在这样的背景下,如何轻松地搭建一个适合学习和测试 Swift 语言的开发环境?也许本文介绍的 Notepad.exe 能为你提供满意的答案。
近期推荐
WWDC 2025 愿望清单汇总
你希望苹果在今年带来什么新特性,能否为开发生态注入新的活力?Michael Tsai 整理了众多活跃开发者近期在博客、社交平台上的 WWDC 2025 心愿,包括 Xcode 稳定性改进、SwiftUI 性能优化、插件系统开放、AI 能力引入,以及 TestFlight 审核流程简化、iCloud 免费空间提升等。看看这些愿望中,有哪些会在接下来的 WWDC 2025 发布会上成为现实?
在 iOS App 中集成 Godot 游戏不再困难 (Embedding Godot Games in iOS Apps is Easy Now)
在 SwiftUI 中,开发者长期以来可以借助 SpriteView
嵌入 SpriteKit 场景,为 App 增添丰富的互动体验。现在,同样的事情也可以用 Godot 实现了。
在这篇文章中,Christian Selig 详细介绍了如何将 Godot 开发的游戏场景像普通 SwiftUI 视图一样嵌入到 iOS 应用中。更重要的是,这种整合不仅仅是“把游戏塞进 App”,而是让你能够自由选择开发方式——用 Godot 构建复杂、跨平台的游戏逻辑,用 Swift 构建原生 UI、订阅管理、iCloud 同步等系统集成功能,实现两种开发范式的有机融合。
目前该方案需要在真机运行(模拟器不支持),打包 Godot 游戏会使二进制增大约 30MB。
macOS 版本号的前世今生 (A Brief History of Mac OS Version Numbers)
你有没有想过,为什么 Ventura 是 13,而 Sonoma 是 14?历史上 10.16 与 11 又是如何“共存”的?在 WWDC 2025 即将到来之际,不妨跟随 Howard Oakley 的这篇文章,回顾 macOS 从 System 1 到 macOS 15 的版本号演化历程,一窥 Apple 在 UI 展示与系统内核之间如何平衡命名逻辑。
老实说,我始终记不住这些系统版本的别名 🙃
iOS 生命周期中前台切换的处理方式 (iOS Lifecycle: Handling willEnterForeground in AppDelegate and SceneDelegate)
自 iOS 18.4 起,UIKit 对未采用 Scene 生命周期的 App 输出警告日志,并将在未来版本中升级为启动断言,意味着 AppDelegate 生命周期即将被彻底废弃。Ashish Kakkad 在本文中对比了 applicationWillEnterForeground
与 sceneWillEnterForeground
的具体差异,指出它们在冷启动、调用时机与多窗口场景下的行为并不一致,为开发者迁移提供了参考。
SwiftData 中的 0xdead10cc 崩溃排查实录 (Dealing with 0xdead10cc's in SwiftData)
0xdead10cc
是让许多 iOS 开发者头痛的异常,通常源于 App 在挂起前仍持有文件锁,尤其常见于多进程共享 Core Data / SwiftData 数据库文件的场景。在 第 84 期周报 中,我们曾分享过一篇文章,其建议“避免共享 Core Data 数据库”。但 Scott Driggers 并不打算就此妥协。
在这篇文章中,他详细分析了 0xdead10cc
的定位与诊断流程,并分享了基于 beginBackgroundTask(withName:expirationHandler:)
的修复思路 —— 在执行数据库操作前,主动向系统申请额外的时间:“请先别挂起,让我先做完这件事”。
用 DRY 原则写出更简洁易复用的 Swift 代码 (Clean, Reusable Swift Code Using DRY Principle)
“Don't Repeat Yourself”(DRY)是许多开发者耳熟能详的编码原则,却在日常开发中常被忽略。Saif 在这篇文章中通过多个实用的 Swift 示例,演示了如何利用 函数、扩展、计算属性、泛型、协议扩展 等语言特性,让代码更简洁、可读、可维护。
DRY 能有效提升代码质量,但面对“看似相似、实则不同”的逻辑,适当重复往往更清晰。
工具
DataScout for SwiftData
DataScout 是由 Oleksii Oliinyk 开发的 macOS 工具,用于调试 SwiftData 和 Core Data 数据库。相较于其它数据库查看工具,DataScout 具备两个显著特点:
将数据库结构映射为 SwiftData 中的模型定义,方便 SwiftData 开发者;
支持使用
#Predicate
宏方式进行筛选查询,无需掌握 SQL 指令。
Oleksii 在 这篇文章 中详细介绍了该工具的设计理念与背后实现细节。此外,他还提供了开源辅助工具 DataScoutCompanion,便于开发者在调试阶段快速检查 SwiftData/Core Data 存储内容。
AppRouter - 轻巧的 SwiftUI 路由方案
由 Thomas Ricouard 开发的 AppRouter
是一款专为 SwiftUI 打造的轻量级导航路由工具。开发者只需定义 Destination
、Sheet
和 Tab
三种类型并实现对应协议,即可优雅地实现跳转、弹窗、路径控制等导航功能。
对于导航结构不复杂、且主要依赖 SwiftUI 原生组件的应用来说,AppRouter
提供了一个简洁、直观的路由解决方案,值得一试。
诚聘
Flutter 全栈工程师 (客户端方向)
暴裂果实是一家成立于 2024 年的新公司,旗下主打产品为 AI 陪伴 App「独响」。独响拥有健康的商业模式,并已获得外部投资。目前我们正在寻找 Flutter 全栈工程师加入团队。岗位要求如下:
至少 2 年 Flutter 开发经验,熟练掌握 Dart 语言,熟悉 Bloc / Provider 等主流状态管理框架
熟悉 iOS / Android 原生开发生态,具备独立上架应用商店的实际经验
熟练掌握 Node.js / Go / Python 等至少一门后端语言,了解 GraphQL 或 gRPC 协议
有独立开发并上线的个人作品(请附 GitHub 或作品集),具备复杂问题的分析与排查能力
我们同时也在招聘内容运营、后端工程师、设计师、产品经理等多个岗位,查看 完整职位信息。
New design indeed looks modern and more appealing. Some fresh comers after seeing the old one were thinking more about OpenSource format rather then Apple-backed product.
P.S. 2 issues per week - wow