Fatbobman's Swift Weekly #114
Unearthing "Silent Experts"

Unearthing “Silent Experts”
Regular readers of my blog may have noticed that I haven’t published many personal pieces lately. Instead, over the past few weeks, I’ve shared a series of guest posts from developers across different domains. This is part of a special initiative I recently launched—inviting practitioners who have deep experience and meaningful accomplishments in their respective fields to share their hands-on insights, hard-won lessons, unique perspectives, and personal journeys.
As a blogger, I’ve inadvertently written hundreds of articles over the years. While I still believe my content holds value, I must admit that, like many writers who publish regularly, I have gradually fallen into a kind of “formulaic” rhythm. My articles tend to focus on API usage and internal mechanisms, but they are often constructed with a “demo mindset.” Even when discussing bug fixes or pitfalls, they typically address isolated “points” rather than connected “lines,” let alone full “planes.”
As a newsletter editor, I’ve also noticed another pattern: although the internet produces an endless stream of high-quality technical articles every week, truly deep, domain-specific, and frontline-driven content remains surprisingly rare. Over time, I realized the root cause: developers working on the front lines simply lack the time or energy to write such pieces. So, a few months ago, I began planning this initiative—reaching out to these developers, hoping to unearth these “silent experts” and make their tacit knowledge explicit.
During conversations with these authors, one scenario appears again and again: they don’t know what to write about. Even though they tackle complex engineering problems every day, long-term immersion makes these challenges feel ordinary or unremarkable to them. Many wonder, “Isn’t this just common knowledge? Would anyone really care about this?” At moments like this, I switch to the perspective of both a developer and a reader, and I tell them—yes, these are exactly the stories and insights we want to learn about. These are the “industry secrets” that rarely make it into writing.
In the era of AI, large models may well master vast amounts of API usage and coding patterns. But for humans, genuine emotion, real-world constraints, the friction of working with imperfect systems, and the lessons forged through countless failures—these remain our most precious and irreplaceable assets.
I am deeply grateful to the authors who generously carved out time from their busy schedules to share their knowledge. Many of the insights in their writing could only come from long-term engineering practice and the experience of being repeatedly “battered” by challenges.
This effort to unearth “silent experts” is still ongoing, with more articles already lined up. If the response continues to be positive, I will keep inviting more of these practitioners to share their stories.
We do this for ourselves, for the community, and perhaps to preserve a few distinct voices forged through lived experience in a world increasingly homogenized by AI.
Previous Issue|Newsletter Archive
📢 Sponsor Fatbobman’s Swift Weekly
Promote your product to Swift & iOS developers across:
- Blog: 50,000+ monthly visitors
- Newsletter: 4,000+ subscribers, 53% open rate
Perfect for developer tools, courses, and services.
Enjoyed this issue? Buy me a coffee ☕️
Recent Recommendations
A Deep Dive into SwiftUI Rich Text Layout: Beyond AttributedString — Inside MarkdownView and RichText
Although AttributedString has been around for years, SwiftUI still lacks official support for full Markdown rendering, text–image mixed layout, selectable text, and fine-grained interactions. As the author of both MarkdownView and RichText, LiYanan walks through the technical journey behind solving these challenges—from early attempts with the Layout protocol, to hitting the limits of TextRenderer, and finally building an interactive, high-performance Markdown renderer on top of TextKit. This piece is both a record of persistence and growth, and one of the rare, in-depth resources available today on SwiftUI text rendering.
What Setting Should I Use?
Ten-year-old Swift has never been more powerful—nor more complex. Beyond added language features, developers now face an ever-growing list of compiler settings whose combinations effectively define different eras, philosophies, and semantics of Swift.
In this article, Matt Massicotte provides a grounded, highly practical answer to a real question: Which compiler settings should I actually enable in the Swift 6.2 / Xcode 26 era?
If you’re debating whether to adopt Swift 6 language mode, or can’t decide whether StrictConcurrency should be set to minimal, targeted, or complete, this article serves as a decision-making guide to help you migrate in a more controlled and incremental way.
Swift Enum Hidden Magic Tricks
Enums are one of Swift’s most distinctive language features, far beyond “switch cases with associated values.” For many experienced Swift/iOS developers, enums function as a modeling tool that shapes architectural boundaries, especially when managing complex state. In this article, Bruno Valente Pimentel systematically explains how enums help us make invalid states unrepresentable, illustrating how this principle evolves from a “syntax trick” into a genuine “design methodology” through real project examples.
“Make invalid states unrepresentable” is one of the core principles emphasized in type-driven design. If you’d like to dive deeper into the underlying concepts, the Type-Driven Design with Swift series by Alex Ozun is highly recommended.
Make Your App Visible with Alternative App Names
You may have noticed that some iOS apps can be found via Spotlight using multiple names—an incredibly convenient user experience. Behind this behavior is a SiriKit capability that allows developers to define up to three alternative app names in the app’s Info.plist, making the app easier to discover through different keywords. In this article, Wesley de Groot explains how to implement this feature.
With macOS 26 removing Launchpad, more users are turning to Spotlight to open apps. It wouldn’t be surprising if a similar alternative-names mechanism eventually comes to macOS as well.
Organizing SwiftUI Views with TabContent and @TabContentBuilder
In the last two SwiftUI releases, Apple significantly expanded the capabilities of tab-based navigation—extending it from classic bottom tab bars to more flexible, structured navigation patterns (such as sidebar-like behavior on larger screens). As a result, many real projects now have increasingly bloated TabView declarations: role-based screens, conditional branches, navigation stacks, label configurations, and team conventions often end up intertwined inside a single block.
Artem Mirzabekian suggests a cleaner approach: extracting tab definitions into a dedicated, composable configuration using a custom @TabContentBuilder. This greatly improves readability and scalability, making tab navigation easier to maintain in large SwiftUI projects.
Beyond
@ViewBuilder, SwiftUI provides many domain-specific result builders—such asTableColumnBuilder,CommandsBuilder,SceneBuilder,ToolbarContentBuilder, andChartContentBuilder. Using the right builder not only clarifies structure but can significantly reduce type-inference load in complex layouts (e.g., combining Charts and Table), helping avoid the infamous SwiftUI “type-checking explosion”.
LLDB Power User Guide: Essential Commands & SwiftUI Debugging
Debugging SwiftUI has never been easy. While many developers rely on sprinkling print statements throughout their code, the far more powerful capabilities of LLDB often go overlooked. In this article, Jai Krishna demonstrates—using extensive SwiftUI examples—how to inspect and modify the internal state of @State, @Binding, and @Published at runtime, trace redraw triggers with Self._printChanges(), and use targeted breakpoint strategies to pinpoint layout and interaction issues.
Identifying Hangs in iOS Apps
Many developers encounter UI hangs caused by main-thread blocking, yet identifying the exact source is often difficult. Tiago Henriques walks through a purposefully laggy demo app to show how to use Instruments’ Time Profiler to determine the nature and scope of the issue. Reproduction and identification are only the first steps—Tiago also notes that deeper performance-analysis content may follow if readers show interest.
Tools
SwiftUI Ratings
If you need to build an in-app rating/review interface or guide users more naturally toward leaving an App Store review, SwiftUI-Ratings, developed by James Sedlacek, offers a plug-and-play solution. It provides a highly customizable UI modeled after the App Store’s ratings and reviews page and allows developers to integrate any data source through the AppRatingProviding protocol (with mock and Supabase / App Store Connect examples included). A lightweight, modern, and extensible choice for implementing an in-app rating prompt.
Swift Hugging Face
Hugging Face is the world’s leading open-source AI community and model hub, offering a vast ecosystem of models, datasets, tools, and collaboration spaces—serving as essential infrastructure for building and deploying modern AI applications.
As Hugging Face’s official Swift client, Swift Hugging Face provides two major capabilities:
First, it fully wraps the Hugging Face Hub API, giving Swift developers native access to models, datasets, Spaces, and more. Second, it integrates the Inference API, enabling tasks such as chat completion, embeddings, text-to-image/video generation, and speech-to-text to run directly on iOS, macOS, visionOS, as well as Linux and Windows.
In the article Introducing swift-huggingface: The Complete Swift Client for Hugging Face, Mattt explains the library’s design and usage in depth, opening the door for Swift developers to fully leverage the Hugging Face AI ecosystem.
Thanks for reading Fatbobman’s Swift Weekly! This post is public so feel free to share it.
挖掘“沉默的专家”
关注我博客的读者可能留意到,最近一段时间我较少发表个人的作品,取而代之的是,我陆续发布了多篇来自不同开发者的客座文章。没错,这是我近期发起的一项特别企划——邀请那些在各自领域深耕且卓有建树的开发者,分享他们的实战经历、独家秘籍、独特视角以及心路历程。
作为一名博主,不知不觉间我已经写了几百篇文章。虽然我相信这些内容仍具价值,但不得不承认,和许多定期输出的作者一样,我逐渐陷入了一种“程式化”的写作惯性中。我的文章往往侧重于探讨 API 的用法、剖析内部细节,但更多是基于“Demo”思维来构建的。即便涉及 Bug 修复或避坑指南,往往也只是处理一个个孤立的“点”,而非连贯的“线”或“面”。
作为周报编辑,我也观察到:尽管互联网上每周都有大量优秀技术文章涌现,但针对特定领域、能展开深度讨论且贴近一线实战的内容却显得稀缺。逐渐我意识到,主要原因是那些奋战在一线的开发者往往缺乏时间或精力来撰写这类长文。为此,几个月前我开始策划这项活动,主动向这类开发者约稿,试图挖掘这些“沉默的专家”,将他们脑海中的“隐性知识”显性化。
在与作者们的沟通中,我常遇到这样的场景:对方不知道该写什么。尽管他们每天都在解决棘手的难题,但因长期浸淫其中,往往“身在庐山不知真面目”,逐渐忽略了这些经验的普适价值。许多人认为自己的工作稀松平常——“难道这些不是常识吗?真的会有人想了解这些?”每当此时,我便会切换回开发者和读者的视角,向他们表达我对该领域的好奇,以及我渴望探究的那些“行业秘密”。
在 AI 时代,大模型或许已经掌握了海量的 API 用法和代码范式。但对于人类而言,那些真挚的情感、与物理世界的真实碰撞、以及从无数次失败实践中提炼出的教训,仍是我们最宝贵且独特的财富。
非常感谢这些作者,能在繁忙的工作中抽调时间与精力,无私地分享他们的知识宝藏。文中的许多内容,若非经过长期的工程实践和被困难反复地“折磨”,是绝不可能产生如此深刻的体悟的。
这项挖掘“沉默专家”的计划仍在继续。这不仅是为了丰富博客的内容,更是为了我们自己,为了社区。在这个信息逐渐被 AI 同质化的今天,我希望能为大家保留并呈现更多由鲜活经验铸就的、不一样的声音。
如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 爱发电,Buy Me a Coffee 支持我的创作。
近期推荐
SwiftUI 图文混排深度剖析:超越 AttributedString —— MarkdownView 与 RichText 的实现
虽然 AttributedString 已经推出多年,但 SwiftUI 仍然缺乏「完整 Markdown 渲染 + 图文混排 + 可选中文本 + 精细交互」的官方支持。作为 MarkdownView 和 RichText 的作者,LiYanan 在本文中系统回顾了他为解决这些问题所进行的技术探索——从最初尝试 Layout 协议,到踩过 TextRenderer 的种种限制,再到最终基于 TextKit 打造可交互、高性能的 Markdown 渲染组件。这既是一份关于坚持与成长的技术复盘,也是目前 SwiftUI 文本渲染领域难得的资料。
我该开启哪些 Swift 编译器设置? (What Setting Should I Use?)
十岁的 Swift 从未像今天这样强大,但随之而来的复杂度也显而易见。除了更多的语言特性,你还要面对不断扩张的编译器设置——它们彼此组合,足以构建出“不同年代、不同哲学、不同语义”的 Swift。
在这篇文章中,Matt Massicotte 用非常接地气的方式回答了一个现实问题:**在 Swift 6.2 / Xcode 26 时代,我究竟应该打开哪些编译器设置?如果你正犹豫是否切换到 6 语言模式,或迟迟拿不定主意 StrictConcurrency 应设为 minimal、targeted 或 complete,这篇文章可以视作一份决策辅助清单,帮助你按更可控、渐进的方式完成迁移。
枚举背后的力量 (Swift Enum Hidden Magic Tricks)
枚举是 Swift 中极具辨识度的语言特性,其能力远超“带点关联值的分支语句”。在许多资深 Swift/iOS 开发者眼中,枚举更像是一种用于塑造架构边界的建模工具,尤其在管理复杂状态时格外突出。Bruno Valente Pimentel在本文中系统阐述了枚举如何帮助我们让无效状态不可表示(Make Invalid States Unrepresentable),并通过多个真实项目的演化过程展示这一思想如何从“语法技巧”升级为“设计方法论”。
“让无效状态不可表示”是类型驱动设计推崇的关键思想之一。如果你想进一步理解这一理念的底层思想,非常建议一并阅读 Alex Ozun 的 Type-Driven Design with Swift 系列文章。
为应用设置替代名 (Make Your App Visible with Alternative App Names)
在日常使用中,你可能注意到某些 iOS 应用可以通过多个名称在 Spotlight 中被搜索到,这在实际使用场景中非常便利。其背后正是 SiriKit 提供的能力:开发者可以在应用的 Info.plist 中配置最多 3 个替代名称,使用户能够通过不同的关键词更轻松地找到你的应用。Wesley de Groot 在本文中介绍了这一功能的具体实现方式。
随着 macOS 26 移除了“启动台”(Launchpad),越来越多的用户开始依赖 Spotlight 启动应用。或许未来,类似的替代名称机制也会被引入到 macOS 平台。
用 @TabContentBuilder 组织你的 Tab 声明 (Organizing SwiftUI Views with TabContent and @TabContentBuilder)
在最近的两个版本中,SwiftUI 对 Tab 支持进行了大幅扩展:从传统的底部分页导航,延伸到更灵活的结构化场景,例如在大屏设备上表现类似侧边栏的导航模式。因此,许多项目的 Tab 声明开始变得越来越庞大:角色控制、条件分支、导航栈、标签配置与团队约定往往混杂在同一个 TabView 中。Artem Mirzabekian 在文中建议将与 Tab 相关的配置从主布局中抽离,借助自定义的 @TabContentBuilder 搭建一个专属的、可组合的 tab 定义区域。这种组织方式能够显著提升可读性与可扩展性,让 Tab 导航的维护不再成为 SwiftUI 项目的难点。
除了
@ViewBuilder外,SwiftUI 还提供了大量领域专用的 result builder,如TableColumnBuilder、CommandsBuilder、SceneBuilder、ToolbarContentBuilder、ChartContentBuilder等。更精确地选用这些 builder,不仅能让视图结构更清晰,也能在复杂场景(例如并用 Charts 与 Table)减少类型推断负担,避免触发 SwiftUI 常见的 “type-checking explosion”。
用 LLDB 调试 SwiftUI 应用 (LLDB Power User Guide: Essential Commands & SwiftUI Debugging)
调试 SwiftUI 向来不轻松。相比在代码里不断插入 print,尽管 LLDB 的能力更强大,但却往往被忽略。在这篇文章中,Jai Krishna 通过大量 SwiftUI 示例演示了如何在 LLDB 中实时查看和修改 @State、@Binding、@Published 的内部状态,使用 Self._printChanges() 追踪视图的重绘来源,并借助精细化的断点策略定位布局与交互问题。
如何查找应用的挂起原因 (Identifying Hangs in iOS Apps)
许多开发者都会遇到主线程阻塞导致的 UI 挂起,但具体卡在什么位置、由何引起,并不是每个人都能准确调试。Tiago Henriques 通过一个刻意制造卡顿的示例 App,演示了如何利用 Instruments 的 Time Profiler 来初步判断问题的性质和范围。复现与识别只是解决问题的第一步,作者也表示如果读者感兴趣,未来还会继续推出这一主题的深入内容。
工具
SwiftUI Ratings
如果你正在为 App 构建评分/评论界面,或希望在应用内更自然地引导用户前往 App Store 留下评价,由 James Sedlacek 开发的 SwiftUI-Ratings 提供了一套即插即用的解决方案。它实现了一个高度可定制的评分界面,风格上与 App Store 的评分与评论页相近,允许开发者通过 AppRatingProviding 协议灵活接入任意数据源(项目中提供了 mock 实现与 Supabase / App Store Connect API 示例)。对于需要快速搭建“应用内评分请求”功能的开发者来说,这是一个轻量、现代、且易于扩展的选择。
Swift Hugging Face
Hugging Face 是全球领先的开源 AI 社区与模型平台,提供海量模型、数据集、工具链及协作空间,作为关键的 AI 基础设施,赋能研究者、工程师与企业高效构建并部署 AI 应用。
作为 Hugging Face 官方出品的 Swift 客户端,Swift Hugging Face 提供了两大核心能力:一方面,它完整封装了 Hugging Face Hub API,使开发者能够以原生 Swift 方式管理模型、数据集、Spaces 等资源;另一方面,它无缝集成 Inference API,让文本生成(Chat Completion)、文本向量化、文生图/视频(Text-to-Image/Video)、语音转写等任务能够直接在 iOS、macOS、visionOS 乃至 Linux 与 Windows 上运行。
在文章 Introducing swift-huggingface: The Complete Swift Client for Hugging Face 中,Mattt 详细阐述了该库的设计理念与核心使用方式,为 Swift 开发者打开了接入 Hugging Face AI 生态的完整路径。

