Comparison with other libraries
⚖️ Comparison
| this | kuatsu/ cloud-storage | icloud-kit | expo-cloudkit | okwasniewski/ icloud-storage | cloudkit- storage | |
|---|---|---|---|---|---|---|
| iCloud key-value store | ✅ | ✅ | ✅ | - | ✅ | - |
| CloudKit records | ✅ | - | ✅ | ✅ | - | ✅ |
| Google Drive | ✅ | ✅ | - | - | - | - |
| iOS | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Android | ✅ | ✅ | - | ❌ [1] | - | - |
| Web | ✅ | partial [2] | - | - | - | - |
| CloudKit on Android/web | ✅ | - | - | ❌ [1] | - | - |
| New Architecture | ✅ | ✅ | ✅ | ✅ | ✅ | - |
| Legacy Architecture | ✅ | ❌ | ✅ [3] | ✅ [3] | ✅ [3] | ✅ |
| Typed error codes | ✅ | - | partial | ✅ | - | - |
| 5-value account status | ✅ | boolean | boolean | ✅ | - | - |
| Identity-change event | ✅ | ⚠️ [4] | - | ✅ | - | - |
| Remote-change event | ✅ | ✅ | - | n/a | ❌ [5] | ✅ |
| Offline write queue | ✅ | - | - | ✅ | - | - |
| Size tiering | ✅ | - | - | - | - | - |
| Binary / assets | ✅ [9] | ✅ | ❌ [6] | ✅ | - | - |
| User-visible iCloud Drive files | ✅ | - | - | - | ✅ | - |
| Native end-to-end encryption | ✅ | - | - | - | - | - |
| Batch operations | ✅ | - | - | - | - | - |
| React hooks | ✅ | ✅ | - | - | - | - |
| Encryption seam | ✅ | - | - | - | - | - |
| Exported test harness | ✅ | - | - | ⚠️ [7] | - | - |
| Mac Catalyst | ✅ | - | - | ⚠️ | - | - |
| Actively maintained | ✅ | ✅ | ✅ | ❌ [8] | ❌ [5] | ❌ |
[1] expo-cloudkit's README: Android throws CloudKitNotSupportedError on every call.
[2] Google Drive support is text-based only.
[3] Via the Expo Modules API; pulls in expo-modules-core.
[4] Fires before JS binds the emitter, crashing with std::bad_function_call (SIGABRT); hit three times.
[5] One version ever shipped; the change-listener PR has sat open since February.
[6] Field type is string | number | null, so it can't hold binary data.
[7] A mock factory exists, but isn't exported or documented.
[8] No commits since April; the last four releases shipped with Swift that didn't compile.
[9] CKAsset on Apple platforms; CloudKit Web Services' upload-token protocol on Android/web, capped at 15 MB by CloudKit. Use googleDriveFiles for anything bigger; it chunks and resumes the same way.