Home

114
Unearthing "Silent Experts"
Dec 8, 2025 Issue #114

Unearthing "Silent Experts"

Regular readers of my blog may have noticed that I haven’t published many personal pieces lately. Instead, over the past...
Explore Full Issue

Recent Weekly Issues

Guest Post by Haozes

From YaoYao to Tooboo: watchOS Development Pitfalls and Practical Tips

Haozes, the developer behind YaoYao and Tooboo, shares practical insights from years of watchOS development. This article covers real-world issues like version mismatches between iOS and watchOS, WCSession communication, workout session recovery, memory leaks caused by nested TabView, and advanced battery optimization using TimelineSchedule. A must-read for anyone building high-performance Apple Watch apps.

Guest Post by LiYanan

A Deep Dive into SwiftUI Rich Text Layout: Beyond AttributedString — Inside MarkdownView and RichText

As the creator of MarkdownView and RichText, LiYanan has not only resolved numerous pain points regarding SwiftUI Markdown rendering and mixed text layout, but his solutions have also been adopted by heavyweight products like X (Grok). In this post, I invited him to unreservedly share his technical evolution—from initial experiments based on the Layout Protocol and the pitfalls of TextRenderer, to ultimately achieving a flawless interactive experience through the underlying TextKit.

Guest Post by Shudao Wang

From iOS to Android: A Candid Look at My Real-World Journey into Dual-Platform Development

An indie developer shares a detailed, real-world journey from iOS to Android: how to align features, handle platform differences, manage UI and gesture gaps, work with Google Play vs App Store, choose pricing models, integrate payments, and navigate the fragmented Android market in mainland China. A practical look at cross-platform development, monetization, and ecosystem challenges.

Guest Post by LingJueYa

Deep Dive into iMessage: Behind the Making of an Agent

iMessage is deeply integrated into the Apple ecosystem, yet has never provided an official API. This article features LingJueYa, author of imessage-kit, sharing how to break through this limitation and bring AI Agents into iMessage. The article details the complete technical solution from parsing SQLite databases, handling Core Data timestamps, bypassing macOS sandbox restrictions, to implementing message sending with AppleScript, along with the pitfalls encountered and solutions discovered during development.

by Fatbobman

Using MainActor.assumeIsolated to Solve Legacy API Compatibility Issues with Swift 6

While Swift has offered strict concurrency checking for some time, many of Apple's official APIs have yet to be fully adapted, and this situation may persist for quite a while. As Swift 6 gradually gains adoption, this problem becomes increasingly prominent: developers want to benefit from the concurrency safety guarantees provided by the Swift compiler, while struggling with how to make their code meet compilation requirements. This article will demonstrate the clever use of MainActor.assumeIsolated in specific scenarios through an implementation case with NSTextAttachmentViewProvider.

by Fatbobman

Swift 6: Sendable, @unchecked Sendable, @Sendable, sending and nonsending

Swift's concurrency model introduces numerous keywords, some of which are similar in naming and purpose, often causing confusion among developers. This article examines several keywords related to cross-isolation domain passing in Swift concurrency: Sendable, @unchecked Sendable, @Sendable, sending, and nonsending, helping you understand their respective roles and use cases.

by Fatbobman

Default Actor Isolation: New Problems from Good Intentions

While Swift's strict concurrency checking has good intentions, it significantly increases the burden on developers in many single-threaded scenarios. Developers are forced to add unnecessary Sendable, @MainActor, and other declarations to their code just to satisfy the compiler's requirements. Swift 6.2's new Default Actor Isolation feature will greatly improve this situation and reduce unnecessary boilerplate code. This article will introduce the Default Actor Isolation feature and point out some situations to be aware of when using it.