finds.dev← search

// the find

caiyue1993/IceCream

★ 2,010 · Swift · MIT · updated Jun 2025

Sync Realm Database with CloudKit

IceCream bridges Realm and CloudKit, handling the sync plumbing that would otherwise eat a few weeks of your life. It's for iOS/macOS indie developers who want offline-first local storage with iCloud sync without rolling their own CKSubscription/CKModifyRecordsOperation stack.

Protocol-based design means you add conformances to existing Realm objects rather than subclassing or restructuring your models. CreamAsset handles the CloudKit 1MB field limit vs Realm's 16MB data limit automatically, routing binary data through CKAsset. Soft-delete pattern is built into the protocol contract rather than left as an exercise, which avoids a classic CloudKit footgun where hard deletes don't propagate. Relationship sync (one-to-many via List) is supported, which most alternatives quietly skip.

CloudKit Shared Database support is explicitly listed as missing and has been sitting on the to-do list for years — if you need family sharing or collaborative documents, you're on your own. Documentation is marked incomplete in the README's own feature checklist, so debugging non-obvious sync failures means reading source and cross-referencing CloudKit WWDC sessions. The library hasn't tracked Realm's own evolution toward Swift concurrency; it still uses Realm's notification-based observation pattern, which creates friction in async/await codebases. Conflict resolution is CloudKit's last-write-wins by default with no hook to override it — fine for personal data, a real problem if you have any collaborative use case.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →