惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
I
InfoQ
Jina AI
Jina AI
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
量子位
月光博客
月光博客
罗磊的独立博客
雷峰网
雷峰网
The Cloudflare Blog
V
V2EX
小众软件
小众软件
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题

Comments for Michael Tsai

Michael Tsai - Blog - What to Do With a Hot Mac Michael Tsai - Blog - macOS California Adventure Michael Tsai - Blog - Shutting Down Notion Mail Michael Tsai - Blog - Export Control for Fable and Mythos Michael Tsai - Blog - Mac App Store Search Not Showing Mac Apps Michael Tsai - Blog - Boom Mobile Restructuring Michael Tsai - Blog - “If You Can’t Stand By a Feature, You Shouldn’t Launch It.” Michael Tsai - Blog - Apple Hardware Price Hikes Michael Tsai - Blog - Tony Krueger, RIP Michael Tsai - Blog - WebKit Always Enables the Copy Menu Item in Every App Michael Tsai - Blog - Xcode 27’s Device Hub Michael Tsai - Blog - Swift 6.4 Michael Tsai - Blog - RCS in iOS 27 Michael Tsai - Blog - SwiftData in appleOS 27 Michael Tsai - Blog - Bar None 1.0 Michael Tsai - Blog - CrashReportExtension Michael Tsai - Blog - SwiftUI in appleOS 27 Michael Tsai - Blog - Apple Clearing App Store Clutter Michael Tsai - Blog - Mandatory Apple Intelligence Michael Tsai - Blog - macOS Touch Michael Tsai - Blog - UIKit in iOS 27 Michael Tsai - Blog - Runaway Spotlight With Pages Document on iCloud Drive Michael Tsai - Blog - macOS 27 to Drop Support for AirPort and Time Capsule Backups Michael Tsai - Blog - WWDC 2026 Links Michael Tsai - Blog - SpaceX Acquires xAI, Goes Public, Acquires Cursor Michael Tsai - Blog - Apple Intelligence in appleOS 27 Michael Tsai - Blog - Apple Foundation Models in appleOS 27 Michael Tsai - Blog - Agentic Password Updates Michael Tsai - Blog - Photos AI in appleOS 27 Michael Tsai - Blog - AI-Generated Shortcuts
Michael Tsai - Blog - Leaving CloudKit
Michael J. Tsai · 2026-05-22 · via Comments for Michael Tsai

César Pinto Castillo:

CloudKit is one of the best-kept secrets in the Apple platform stack. For years it has quietly powered sync, storage, and sharing for our apps — for free, with zero servers to run, and with end-to-end encryption we didn’t have to design ourselves. And yet, we’re moving off it.

[…]

When a user’s data won’t sync, we have no view into what happened on Apple’s side. We’ve spent years bolting telemetry onto NSPersistentCloudKitContainer.eventChangedNotification just to find out why a save failed — and even with that, we’re guessing from client-side error codes. There are no server logs we can pull, no admin view into the user’s zone.

[…]

CloudKit is supposed to “just work” across Apple platforms. In practice every target has been its own debugging project: macOS only synced on app restart for a while, Apple Watch silently stopped syncing because a user hadn’t accepted a new iCloud ToS — a failure mode we couldn’t even surface to them — and one of our entitlement bugs was reported to us by Apple. AppleTV sync is still flaky in user reports today.

[…]

iCloud signed-out, iCloud full, family-sharing edge cases — CloudKit hands all of this to the client. We’ve built distinct account-state UI for iOS, macOS, watchOS, tvOS, and visionOS, with localizations for each. “Warn the user when their iCloud is full” has been an open ticket of ours since 2025 because we can’t reliably detect it.

Via Fatbobman:

[For] small teams, CloudKit offers an almost unbelievable combination of features[…] But as their product evolved, CloudKit’s limitations became increasingly apparent[…] and most importantly, the inability to truly expand toward the Web and cross-platform ecosystems. Eventually, César’s team migrated to a Supabase/Postgres-based synchronization architecture.

Previously:

Update (2026-06-04): Fatbobman:

Many developers, after integrating CloudKit synchronization with Core Data or SwiftData, encounter a confusing phenomenon: The app synchronizes perfectly across multiple devices, yet when querying Records in the Apple Developer CloudKit Console, it shows “No Records Found” or a completely blank list.

[…]

To resolve this, you need to manually add indexes in the CloudKit Dashboard.

Patrick McConnell:

Sometimes you will mess up the magic. Perhaps you add a record or field to a Model class then remove it. The Schema may become confused and your app may have errors or crash. You can go into the CloudKit console and reset the environment at any point and the current Production Schema will be copied into the Development environment. If you are seeing odd issues with your app revolving around SwiftData or CloudKit feel free to nuke that environment and start over. The next time you run the app in Xcode/Simulator the Schema will be updated to match your actual code. Tip number one is nuke the Development environment and nuke often. Don’t spend hours trying to figure out some strange CloudKit error only to find out at the end that you got your Schema all mixed up.

[…]

In my case what appears to happen is the migration goes fine, the app launches and works as expected with all my new features and shiny new model updates. Until you fully close the app and relaunch. Then SwiftData acts like it’s never seen this data before and is very offended. Boom. FatalError.

Update (2026-06-11): Greg Pierce:

Drafts sync still has workarounds for issues that probably haven’t been in CloudKit since iOS 8, but I’m scared to rip them out. Those early days were rough.

But, I don’t have servers and user data to worry about, so I don’t complain too much.

4 Comments