跪拜 Guibai
← Back to the summary

Apple Intelligence Clears China's Regulatory Hurdle with Alibaba's Qwen and Baidu Onboard

issue148.webp

Apple Intelligence Has Passed Review and Will Soon Be Available in China

At WWDC 26, Apple announced a new Apple Intelligence architecture that not only introduces Gemini in the cloud but also confirms that the third-generation Apple Foundation Models are built in collaboration with Google. For a moment, I thought this would further increase the difficulty of Apple Intelligence entering the Chinese market.

But things developed faster than expected. In July, Apple Intelligence appeared in the latest batch of generative AI service filings published by the Cyberspace Administration of China (CAC). And just two days ago, Apple confirmed that Alibaba's Qwen will participate in the Chinese version of Apple Intelligence, briefly appearing in Apple's official documentation. Although the document was temporarily withdrawn the day after its brief online appearance on August 8, the detailed operational instructions and privacy explanations within it have already revealed a fairly complete integration method to the outside world. This means that the official launch of Apple Intelligence services in China has entered its countdown.

In addition to Alibaba's Qwen, the filing information also disclosed that Baidu will participate deeply as a partner in the AI search and visual search components of the Chinese version of Apple Intelligence. This means that Apple can not only adjust the underlying models and service providers based on region, but such partnerships are not limited to a single vendor.

As regulations on privacy, data, and AI services tighten across different countries and regions, regional differentiation has become almost inevitable. Apple is pioneering a new approach in China: maintaining a relatively unified overall product experience and development interface for Apple Intelligence while selecting different underlying models based on regional regulations and ecosystems. In the future, this model is likely to appear in more markets and become a significant part of Apple Intelligence's globalization process.

For developers using the Apple Intelligence API, this is also good news. If Apple can continue to maintain consistency at the API layer, developers theoretically won't need to maintain completely different implementations for different markets. This also means that applications featuring Apple Intelligence capabilities as a key highlight will have the opportunity to reach a wider user base.

Gemini and Qwen may not be the two most dazzling names in my daily Agent usage scenarios, but they perform quite well in world knowledge, language understanding, and other aspects. Considering that Apple Intelligence currently leans more towards system-level assistance capabilities, and these partners possess mature model infrastructure and cloud service experience, Apple's choice is actually quite reasonable.

Apple Intelligence has become one of Apple's most important entry points in the AI era. Its current capabilities still fall somewhat short of my personal expectations, but at least starting from 2026, it is truly covering more users globally. Rather than how many tasks it can complete today, I am more looking forward to WWDC 2027, to see how Apple will further deeply integrate AI into its hardware, systems, and service ecosystem.

This Issue | Previous Issue | Full Newsletter List

Original

Controlling Orphans in SwiftUI Text: Unearthing the Undocumented avoidsOrphans

SwiftUI's Text has a default behavior: when the last line of a paragraph ends with a single orphan word or character, it actively pushes the complete phrase from the previous line to the last line to avoid "stranding." This consideration is mostly correct, but the cost is that the previous line may leave a large blank space—in narrow containers or mixed Chinese-English typesetting scenarios, it actually disrupts the paragraph's balance. The trouble is, UIKit allows developers to turn off this strategy through NSParagraphStyle, but SwiftUI provides no public interface for it. This article will unearth an API that has long existed in SwiftUI but has never been public—avoidsOrphans—allowing developers to regain this control.

Recent Recommendations

An Even Closer Look at Protocols and Global Actors

As Swift's concurrency model continues to evolve, some engineering trade-offs that were once taken for granted are beginning to change due to enhanced language capabilities. In this article, Matt Massicotte does not stop at discussing "whether @MainActor should be placed on the protocol or on the method," but uses this to further explore API design thinking in the Swift concurrency era. Rather than offering a so-called "best practice," Matt emphasizes a design philosophy: isolation is a constraint that should originate from real requirements, not inherited habits.


Weekly Tuist News #1

As AI Agents become increasingly embedded in the development process, the importance of project management tools like Tuist is also continuously rising, and this holds true for indie developers as well.

As a developer long active in the Tuist community, Lee YoungJun has launched a new series, Weekly Tuist News, dedicated to tracking the Tuist ecosystem. Unlike a simple aggregation of release notes, this series also incorporates community dynamics and the author's own experience using it in real projects. In the inaugural issue, he introduces SwifterPM becoming the default dependency restoration method, new control capabilities for Target cache invalidation conditions, and Tuist's auth.md support for Coding Agents, sharing his own verification process and observations based on practical use.


Easily Preview Multiple States of SwiftUI Views with #Preview(arguments:)

Most SwiftUI components have more than one state: empty data, loading, error, permission restricted, etc. During development, we usually maintain a set of repetitive #Preview blocks or put all states into a single VStack for unified display. The new #Preview(arguments:) in Xcode 27 is designed precisely for this scenario; it can automatically generate multiple independent Previews based on a set of state data and supports viewing each state individually in the Canvas.

Artem Novichkov also shares his approach to organizing Previews in the article: arguments should describe business state, not environment. Even if the API continues to evolve in the future, this design concept of separating business state from the runtime environment still holds long-term reference value.


Concentric Buttons with OS 27's SwiftUI APIs

At WWDC 26, Apple added GeometryProxy.concentricCornerRadii to SwiftUI, allowing developers to obtain the concentric corner radius information of a container. However, ButtonBorderShape remains a closed type, making it impossible to directly implement truly custom button borders. Alexander Weiß uses this new API, combined with onGeometryChange, a custom ViewModifier, and method overloading, to implement a concentric button solution whose usage is almost indistinguishable from the system API.

For new APIs like GeometryProxy.concentricCornerRadii, we often only need a few seconds to know what they do; but when actually applying them to a project, we discover there are still many implementation details and framework limitations to consider. Rather than an API introduction, Alexander shares the considerations for its practical use and application scenarios worth trying.


Swift, AI, and the Future of Software Development

AI has become an indispensable part of many developers' workflows, but while improving efficiency, it is also subtly changing the relationship between developers and code. Tibor Bödecs honestly shares his confusion over the past year in this article: on one hand, enjoying the high efficiency brought by AI; on the other hand, missing the process of writing code by hand and deeply understanding problems; believing that AI will continue to change software development, yet hoping it will always remain a tool to help developers think and create, rather than replacing thinking itself.

Over the past period, the confusion AI has brought me is very similar to Tibor Bödecs'. Although it has caused me to lose some enjoyment and created a sense of detachment from code and products, I have also been tirelessly trying to establish stronger control over AI, making it better serve me, becoming my external brain, rather than letting me become its assistant.

Tools

Gitwyn: A Git Client Designed Around the Xcode Workflow

Although Xcode's Git functionality has improved significantly in recent versions, both the user experience and feature completeness still struggle to meet the needs of some developers in different scenarios. Gitwyn, developed by Karthik K, is a native Git client designed around the Xcode workflow. Press ⌘⇧E in any Xcode project to view changes, organize staged content, generate commit messages, and push code, all without switching to the terminal or another Git tool.

A distinctive feature of Gitwyn is its use of on-device Apple Intelligence to automatically generate commit messages based on staged code. No network connection is required, and source code is not uploaded. Rather than simply saving one input step, it aims to integrate viewing diffs, organizing commits, generating descriptions, and pushing code into a continuous development flow, keeping Git operations as much as possible within Xcode's work context.


VersionedDocC: Adding Version Management to Swift-DocC

In past years, whenever WWDC convened, I would usually open the Apple Developer Documentation first thing, using the "API Changes" feature to compare different Xcode and SDK versions, viewing API additions, modifications, and deprecations. Regrettably, this quite practical feature disappeared after the documentation website's redesign in 2025. The original diff query address is still accessible, but it can no longer present complete API changes.

VersionedDocC, developed by Kyle Ye, precisely fills this capability gap for DocC. It adds a layer of release orchestration on top of the existing Swift toolchain: generating stable addresses for different versions, providing a version selector, displaying public API changes between adjacent versions based on the symbol graph, and using immutable caching to avoid repeatedly building historical documentation. The project also provides a SwiftPM plugin, GitHub Action, and GitHub Pages workflow, and supports multi-platform symbol graphs, external modules, and standalone DocC directories.


Swift Subprocess 1.0

After a year of iteration, the official Swift project swift-subprocess released its 1.0 official version this week. It is a cross-platform subprocess library based on Swift Concurrency, capable of launching commands, providing input, streaming output, and managing process exit and cancellation in a unified way on macOS, Linux, Windows, Android, and BSD systems.

It is particularly suitable for Swift CLI tools, build tools, server programs, developer tools, and macOS automation. Note that 1.0 requires Swift 6.2, is not intended for ordinary iOS Apps, and does not provide higher-level capabilities such as sandboxing, command authorization, or pseudo-terminals (PTY).

swift-subprocess also fills an important piece of the puzzle needed for building local Agents in Swift: reliably executing tools, continuously receiving run results, and properly managing the lifecycle of subprocesses. The model decides "what to do," while Subprocess makes "how to execute" more controllable, more observable, and more aligned with Swift's language paradigm.

Previous Issues

💝 Support and Feedback

If this issue of the newsletter was helpful to you, please:


🚀 Expand Your Swift Horizons

  • 📮 Email Subscription | weekly.fatbobman.com Get exclusive technical insights
  • 👥 Developer Community | Discord Real-time exchange of development experience
  • 📚 Original Tutorials | fatbobman.com Learn Swift/SwiftUI best practices