Yakov Manshin 发了一期长达 40 分钟的 YouTube 视频,标题是"SwiftUI 七年后:一个平庸的故事"。视频核心观点很简单:SwiftUI 发布七年了,仍然像一个永久公测版。

Manshin 从数据流、布局系统、API 稳定性、性能、跨平台五个维度逐一批判了 SwiftUI。最让人印象深刻的一个论据是:苹果官方的 SwiftUI 教程项目 Landmarks,用最新 Xcode 在最新 macOS 上构建运行,出来的效果是坏的——侧边栏按钮大小不一,界面错位。他说这个问题"两年前就发现了,至今没变"。
数据流方面,Manshin 指出 SwiftUI 的属性包装器演进史就是一个不断修补的历史:从 @State、@Binding、ObservedObject,到 Observation 框架和 @Observable 宏,每次迭代都在试图解决上一个方案带来的性能灾难。他的原话是:"SwiftUI 的响应式是一个黑盒,你永远没法确定一个视图会更新多少次,以及它为什么会更新。"
布局系统则被形容为"建筑在尺寸协商理念上,听起来在 keynote 里很合理,但当你试图做一个浮动视图或自定义侧边栏时,就像噩梦"。最终你不得不把所有东西包进 GeometryReader——"这是终极的认输,一旦用了它,声明式的优势就全部消失了,你得手动计算坐标,比 Auto Layout 还要啰嗦"。
性能对比更是直接。他用自己的 playground app 做了 UIKit vs SwiftUI 的图片网格滚动对比测试,在旧款 iPhone 上运行,SwiftUI 版本"明显不够流畅"。他的结论也很尖锐:"如果你需要一个 M5 Pro Max 超级芯片才能在 SwiftUI 里流畅显示几张 JPEG,那整个架构就有严重问题。"
Hacker News 上的讨论分为几派。支持 Manshin 的人补充了更多例证:有人指出 Apple Music 的队列编辑 bug 存在多年,Settings 应用在 iPad 上显示崩溃报告半年未修复,Logic Pro 甚至出现本地化缺失。一位开发者评论说:"SwiftUI 让简单的事情更简单,让难的事情更难。它是个新手陷阱。"
争议最激烈的是对苹果整体软件质量的判断。有人将问题追溯到组织层面:"苹果把 NeXT 的人都赶走了,Tim Cook 捅了 Scott Forstall 一刀。" 另一个开发者反驳:"SwiftUI 在 iOS 26 之后已经非常好了,性能差距基本消失。我反复看到的是 UIKit 开发者试图用 UIKit 的方式在 SwiftUI 里做事,而不愿意花时间学习真正的 SwiftUI 惯用写法。"
关于跨平台,更多人开始讨论替代方案。Flutter 被频繁提及——有人盛赞其开发体验,也有人指出 Liquid Glass 更新后 Flutter 应用的"非原生感"更加明显。Qt 意外地成了讨论中的一个选项,有人正在用它做移动端应用的迁移。Kotlin Multiplatform 和 Compose Multiplatform 也被认为是值得关注的路线。
一位开发者的评论获得了不少共鸣:"用 AI 写代码之后,SwiftUI 失去了它的优势。SwiftUI 的承诺是让程序员写 UI 更简单,像 React Native 那样。但有了 AI 编程,你完全可以直接用 UIKit——它最稳定、功能最完整。"
还有一位 GNOME 联合创始人 Miguel de Icaza 也出现在评论区,在回复别人的调侃时,讨论意外转向了 GIMP 和 GTK 最初的作者们后来去了哪里。
Manshin 在视频结尾说了一段话:"SwiftUI 不是真正的烂,它是平庸。而在我看来,这比烂还要糟糕得多。"
参考来源: