Apple's cloud backend service that enables apps to store and sync data across devices using iCloud. CloudKit provides a scalable backend without managing servers.
of iOS users worldwide can use CloudKit (iOS 8+ required)
| iOS Version | Market Share | Status |
|---|---|---|
| iOS 18.7 | 30.3% | Supported |
| iOS 18.6 | 29.8% | Supported |
| iOS 26.1 | 10.7% | Supported |
| iOS 18.5 | 6.0% | Supported |
| iOS 16.7 | 2.3% | Supported |
| iOS 26.2 | 2.0% | Supported |
| iOS 18.3 | 1.8% | Supported |
| iOS 15.8 | 1.8% | Supported |
| iOS 11.0 | 1.7% | Supported |
| iOS 17.6 | 1.7% | Supported |
Store structured data in public and private databases
Automatic sync across user devices via iCloud
Built-in user authentication with iCloud accounts
Asset storage for files and media
Subscriptions for real-time push notifications
Free tier with generous limits for indie developers
Create and save a record to CloudKit
import CloudKit
let container = CKContainer.default()
let privateDatabase = container.privateCloudDatabase
let record = CKRecord(recordType: "Note")
record["title"] = "My First Note" as CKRecordValue
record["content"] = "Hello CloudKit!" as CKRecordValue
privateDatabase.save(record) { savedRecord, error in
if let error = error {
print("Error saving: \(error)")
} else {
print("Record saved successfully")
}
}Query records from CloudKit
import CloudKit
let container = CKContainer.default()
let privateDatabase = container.privateCloudDatabase
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Note", predicate: predicate)
privateDatabase.perform(query, inZoneWith: nil) { records, error in
if let records = records {
for record in records {
print(record["title"] ?? "No title")
}
}
}Set up a subscription for push notifications
import CloudKit
let container = CKContainer.default()
let privateDatabase = container.privateCloudDatabase
let predicate = NSPredicate(value: true)
let subscription = CKQuerySubscription(
recordType: "Note",
predicate: predicate,
options: [.firesOnRecordCreation, .firesOnRecordUpdate]
)
let notification = CKSubscription.NotificationInfo()
notification.alertBody = "A note was updated"
subscription.notificationInfo = notification
privateDatabase.save(subscription) { _, error in
if let error = error {
print("Error creating subscription: \(error)")
}
}Apple's cloud backend service that enables apps to store and sync data across devices using iCloud. CloudKit provides a scalable backend without managing servers.
CloudKit is available on iOS 8 and later. Currently, 99.7% of iOS users worldwide can use this framework.
Related frameworks include Swiftdata, Coredata. Each has different capabilities and iOS version requirements.