Fatbobman's Swift Weekly #128
Is My App Stuck in Review?Last Thursday, a user in my Discord community complained that their app had been submitted to App Store Connect for four or five days but still hadn’t entered the review process. While I was enthusiastically analyzing the possible reasons with everyone, my heart suddenly skipped a beat: it seemed that the app I submitted on Monday hadn’t received any review updates either. Someone suggested I apply for an “Expedited Review”. However, when I clicked into the page, the system prompted that I had “no eligible apps”. Upon closer inspection, I realized I was just a bit rusty from not updating my apps for so long—although my app had completed all the prerequisite steps, I simply hadn’t clicked the “Submit for Review” button at all. Just a few hours after I finally clicked the button, the app was successfully approved and published. While my situation was a mere false alarm, discussions in the community about Apple’s app review process slowing down have indeed been increasing recently. Many speculate that this might be related to the recent rise of Vibe Coding. Although there is no official confirmation, Vibe Coding has undeniably lowered the barrier to entry for development. In doing so, it has simultaneously amplified the volume of app submissions and the frequency of iterations in a short period, thereby passing the pressure down to the review team. In fact, Apple has recently been holding up the review process for apps like Replit, which allow everyday consumers to engage in Vibe Coding. Even when allowing them to remain on the store, Apple has demanded compromises on core features. In Michael Tsai’s blog post covering this news, I came across a very sharp comment:
AI is not only reshaping the way we develop software but also posing new challenges to the app review and distribution systems. One might ask: if we fight magic with magic and let AI fully take over the review process, wouldn’t it be more efficient? Apple’s review mechanism has never been entirely transparent. Sometimes, whether an app passes smoothly or not even depends on whether you “happen to” encounter a sympathetic reviewer. But looking at it from another angle, at least “humans” remain the most crucial part of this defense line. Human judgment can be flawed and biased, but it still retains a certain degree of flexibility when dealing with rigid rules. I truly hope that the software ecosystem of the future does not devolve into a closed loop of “AI Development -> AI Review”. Previous Issue|Newsletter Archive 📢 Sponsor Fatbobman’s Swift WeeklyPromote your product to Swift & iOS developers across: - Blog: 50,000+ monthly visitors Perfect for developer tools, courses, and services. Enjoyed this issue? Buy me a coffee ☕️ OriginalCDE: An Attempt to Make Core Data Feel More Like Modern SwiftIn last week’s article, I discussed the current reality of Core Data in modern projects: it hasn’t disappeared and still holds unique value, but the sense of misalignment between it and modern Swift development is becoming increasingly apparent. In this article, I continue along that line of thought and introduce an experimental project of mine: Core Data Evolution (CDE). It is not a new framework intended to replace Core Data, nor is it an attempt to pull developers back to older technologies. More accurately, it is my own response to this misalignment: if I still recognize the value of Core Data’s object graph model, migration system, and mature runtime, can it continue to exist in modern Swift projects in a more natural way? Recent RecommendationsExpanding Animations in SwiftUI ListsDevelopers often encounter a frustrating animation issue: when dynamically changing the height of a row inside a
SwiftUI iPad Adaptive Layout: Five Layers for Apps That Don’t Break in Split ViewWhile Apple’s push toward multi-window capabilities in iPadOS is well-intentioned, it significantly increases the complexity of layout adaptation. Apps may appear in various forms, such as iPhone-like layouts, traditional full-screen iPad views, or Stage Manager windows. Wesley Matlock points out that relying solely on Pitfalls and workarounds when dealing with RGB HDR Gain Map using ImageIOThe introduction of RGB HDR Gain Map based on the ISO 21496-1 standard in iOS 18 enables richer HDR image processing, but also introduces new pitfalls. Although the relevant APIs can return auxiliary data dictionaries, in the RGB Gain Map scenario the actual bitmap data ( A Vision for Networking in SwiftThe Swift Ecosystem Steering Group recently published a vision document on networking, discussing the current fragmentation in Swift’s networking ecosystem and its potential future direction. The document highlights a clear divide: The proposed direction is a unified, layered networking architecture: shared I/O primitives and buffer types at the bottom, reusable protocol implementations (TLS, HTTP/1.1/2/3, QUIC, WebSocket) in the middle, and async/await-based client and server APIs at the top. The
Preparing Your iOS Codebase for AI AgentsAs AI agents (such as Codex and Claude Code) become increasingly involved in real-world development workflows, the focus is shifting from “how to use AI to write code” to “how to make codebases suitable for AI collaboration”. Hesham Salman explores this transition from an engineering perspective. He argues that AI relies more on explicit contracts than on prompts. By structuring project conventions and behavioral rules through layered
iOS Conf SG 2026 VideosiOS Conf SG 2026 was held from January 21 to 23 in Singapore, featuring dozens of developers and content creators from around the world sharing their insights and experiences in the Apple ecosystem. Last week, the full set of talks was released. I also had the opportunity to participate as a speaker, and you can explore the sessions as you’re interested. ToolsTaskGate: Managing Actor ReentrancyWhile actors largely eliminate data races, their reentrant nature means that logic which appears sequential can lose its execution order after an TaskGate, created by Matt Massicotte, addresses this scenario by introducing
pico-bare-swiftWhen Apple created Swift, the goal was clearly broader than just app development—it was meant to evolve into a general-purpose language across domains and abstraction levels. However, for a long time, Swift has struggled to gain traction in areas traditionally dominated by C/C++ or Rust. Through this example project, kishikawa katsumi demonstrates another possibility: with Embedded Swift, the language is beginning to enter the domain of embedded systems.
Thanks for reading Fatbobman’s Swift Weekly! This post is public so feel free to share it. 我的 App 审核被卡了?上周四,我 Discord 社区里的一位网友抱怨,说他的应用在 App Store Connect 上提交了四五天,却迟迟没有进入审核状态。就在我还津津有味地跟大伙儿分析原因时,突然心里一紧:我周一提交的应用,好像也一直没收到审核动态? 有网友建议我去申请一下“加急审核”。可当我点进页面时,系统却提示我“没有可加急的应用”。仔细一查才发现,原来是太久没更新 App,业务都生疏了——我的应用虽然完成了所有前置步骤,但我压根儿就没点那个“提交以供审核”的按钮。 补点按钮没过几个小时,应用就顺利上架了。 尽管我这纯属虚惊一场,但最近社区里关于“苹果审核变慢”的讨论确实多了起来。很多人猜测,这或许与近期 Vibe Coding 的盛行有关。虽然没有官方证实,但 Vibe Coding 确实在降低开发门槛的同时,也在短时间内放大了应用提交的数量与迭代频率,从而把压力传导到了审核环节。 事实上,苹果最近也确实对 Replit 这类允许普通用户进行 Vibe Coding 的应用在审核上进行了卡关。即便允许其上架,也要求在核心功能上做出妥协。在 Michael Tsai 关于此事的博客介绍中,我看到了一条非常敏锐的留言:
AI 不仅在重塑开发方式,也正在对应用审核与发行体系提出新的挑战。有人或许会问:如果用魔法打败魔法,让 AI 也全面接管审核流程,会不会更高效? 苹果的审核机制向来不够透明,有时候应用能否顺利过审,甚至取决于是否“碰巧”遇到一位气味相投的审核员。但换个角度看,至少“人”仍然是这道防线中最重要的一环。人的判断会出错,也会带有偏差,但在面对规则时仍保有一定的弹性。 我不希望,未来的软件生态,走向“AI 开发 -> AI 审核”的闭环。 如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 爱发电,Buy Me a Coffee 支持我的创作。 原创CDE:一次让 Core Data 更像现代 Swift 的尝试在 上周的文章 中,我聊了聊 Core Data 在当下项目中的一些现实处境:它并没有消失,也仍然有其独特价值,但它和现代 Swift 项目之间的错位感却越来越明显。在本文中,我想继续顺着这个问题往下走,介绍我的一个实验性项目:Core Data Evolution(CDE)。 它不是一个取代 Core Data 的新框架,也不是要把开发者重新拉回旧技术。更准确地说,它是我面对这些错位时,给自己的一种回答:如果我仍然认可 Core Data 的对象图模型、迁移体系和成熟运行时能力,那么能不能让它在现代 Swift 项目中以一种更自然的方式继续存在下去? 近期推荐实现平滑的 SwiftUI List 展开动画 (Expanding Animations in SwiftUI Lists)开发者经常会遇到一个动画窘境:在动态调整
如何更好的适配 iPadOS 的布局 (SwiftUI iPad Adaptive Layout: Five Layers for Apps That Don’t Break in Split View)尽管苹果强化 iPadOS 多窗口能力的初衷是好的,但这也显著提升了开发者在布局适配上的复杂度。应用可能以类 iPhone、传统 iPad 全屏、Stage Manager 窗口等多种模式呈现。Wesley Matlock 指出,仅依赖 RGB HDR Gain Map + ImageIO 中的使用陷阱 (Pitfalls and workarounds when dealing with RGB HDR Gain Map using ImageIO)iOS 18 中引入的基于 ISO 21496-1 标准的 RGB HDR Gain Map,让开发者在处理 HDR 图像时获得了更高的表现力,但在实际应用中也更容易踩坑:尽管相关接口能够返回辅助数据字典,但在 RGB Gain Map 场景下却缺失了实际的位图数据( Swift 社区的网络愿景 (A Vision for Networking in Swift)Swift Ecosystem Steering Group 上周发布了一份关于网络编程的愿景文档,讨论了 Swift 网络生态当前的困境以及未来可能的发展方向。 文档指出,Swift 在网络领域存在明显的分裂: 文档提出的方向是构建一套分层统一的网络架构:底层共享 I/O 原语与缓冲类型,中间层复用 TLS、HTTP/1.1/2/3、QUIC、WebSocket 等协议实现,顶层提供以 async/await 和结构化并发为基础的客户端与服务端 API。已有的
让你的 iOS 项目更适合 AI 协作 (Preparing Your iOS Codebase for AI Agents)随着 AI agent(如 Codex、Claude Code 等)逐渐参与到实际开发流程中,问题开始从“如何使用 AI 写代码”转向“如何让代码库本身适合 AI 协作”。Hesham Salman 从工程实践的角度,系统性地探讨了这一转变。 Hesham 指出,相较于提示词,AI 更依赖显式契约。通过分层的
iOS Conf SG 2026 视频2026 年 iOS Conf SG 于 1 月 21 日至 23 日在新加坡举行,来自全球的数十位开发者与内容创作者分享了各自在苹果生态开发中的经验与思考。上周,官方放出了本届的全部演讲视频。我也有幸参与了其中的一场分享,感兴趣的读者可以按需挑选观看。 工具TaskGate:解决 Actor 重入的工具尽管 actor 在很大程度上避免了数据竞争,但其可重入(reentrancy)特性也意味着,一些看似串行的逻辑在 Matt Massicotte 编写的 TaskGate 正是为这类场景准备的。它提供了
pico-bare-swift苹果当年创建 Swift 时,对它的期待显然不只是用于开发 App,而是希望它最终成长为一门适用于不同领域、不同层次的通用语言。不过,在相当长一段时间里,Swift 在那些传统上由 C/C++ 或 Rust 主导的领域中,始终没有展现出足够的存在感。kishikawa katsumi 通过这个示例项目展示了另一种可能:借助 Embedded Swift,Swift 已经开始具备进入嵌入式开发场景的能力。
Welcome to my blog Fatbobman's Swift Blog( 肘子的Swift记事本 ) |
