Learn how to integrate your app with iCloud for effective data storage.

Documentation

Posts under iCloud subtopic

Post

Replies

Boosts

Views

Activity

App Privacy Report says app connecting to Google for CKDatabase
I have a CloudKit container that I share across several apps. when I look at the App Privacy Report for these apps, it reflects the app connecting to Google storage APIs. While Apple might host with Google, the perception for users is iCloud and Apple. Can something be done about this? FB16410232 (CloudKit: CloudKit requests contacting google upload servers unexpectedly in app privacy report)
1
0
768
Jun ’26
CloudKit client usage should be attributed to app for MetricKit network metrics
In the past I ran into issues where the CloudKit client SDK was not attributing network usage in MetricKit. Since MetricKit got a major update this year I’d like to make sure usage goes here agains the app. I would expect transfer metrics to also count for CKSyncEngine, or the CloudKit config for core/swift data too. Is this assumption correct? FB12673917 (CloudKit / MetricKit: CloudKit queries are not counting towards network transfer metrics in MetricKit - WWDC23 lab, possible missing URLSession 'attributedBundleIdentifier' not being set)
1
0
717
Jun ’26
Recommended way to display user-friendly iCloud Drive paths?
I’m building a macOS app that stores file URLs/bookmarks and displays file locations in the UI. For files in iCloud Drive, I want to show a user-friendly path such as: iCloud Drive / My Folder / File.jpg rather than an internal filesystem path. What is the recommended way to display iCloud Drive paths in a way that matches what users see in Finder? Thanks!
1
0
719
Jun ’26
Add Analytics Reports for CloudKit usage
I don’t have a feedback for this yet, but I’d like to see some analytics reports for CloudKit performance. Things to capture stats, performance, failures, etc. lots of the data in the console, but exposed through analytics reports. Related but different, if I had something like a generated OpenAPI client, I’d add instrumentation via client middleware. I could do most of what I’d want to instrument that way, status codes, timeouts, durations, payload sizes, etc. Alternatively, if the CloudKit client API exposed URLSession, or a hook to the delegate / metrics, a lot of what I am interested in could be achieved via session task metrics too. FB13628463 (CloudKit: Expose URLSessionTaskMetrics from CloudKit client)
1
0
704
Jun ’26
CloudKit security roles
I’d like the ability to detect a users security role. This makes sense for detecting the roles assigned to named users for enabling workflows within an app. For example, user generated content and “moderators”. Instead of building an unlisted app, I’d prefer to just check permissions against the user. As a workaround, one could create record types with the same “security role” as the moderator actions, but to attempt to fetch a dummy record seems fragile and inefficient. FB9638492 (CloudKit: API to detect provided security role on current user)
1
0
636
Jun ’26
CloudKit container may need indexing
My queries are failing in an unusual way. I can query 4 out of 5 Record Types. The 5th fails from the app (CKQueryOperation) and, surprisingly, also from the CloudKit Dashboard. It returns only 100-300 records when it should return over 4000. Tapping "Query Records" returns an additional 100-300 records. Apple Developer Technical Support has suggested that the issue involves the index of the container and wrote that only the CloudKit Team can fix it. So my question is - How do I get the CloudKit Team to fix it????
3
0
729
Jun ’26
NSPersistentCloudKitContainer doesn't report "Quota Exceeded" through notification
When subscribing to NSPersistentCloudKitContainer.eventChangedNotification events, quota exceeded events aren't delivered to the app at runtime. I get CKError.partialFailure, but without any additional information in any of the properties. https://developer.apple.com/documentation/cloudkit/ckerror/code/partialfailure states information should be available, but it isn't. When a debugger is attached, the information is logged by another process, but my app cannot access that at runtime to provide users with additional information. Is there any workaround to get this to work? References: Older post: https://forums.developer.apple.com/forums/thread/696523 FB13773922
4
1
640
Jun ’26
Question on PCS Zone corruption recovery
Hi all - figured I would kick off with a CloudKit question. Recently in development of a multi-device app I got into a state where all iOS devices could not write to the (production) CloudKit container - however macOS could still write (multi-device SwiftUI code). After ruling out a lot of other things it seemed like there had been some corruption in the production zone's PCS key chain. The only fix was deleting the zone from the CloudKit Console (safe for my pre-release beta data, but destructive). Is there a safer or developer-accessible recovery path for PCS chain corruption? Is this situation detectable earlier, or is there guidance on avoiding it during pre-release testing? The error in the logs in this scenario had "overallStatus":"USER_ERROR", "error":"BAD_REQUEST", "returnedRecordTypes":"_pcs_data".
1
0
578
Jun ’26
CKSyncEngine for records with references
Is there any guidance for syncing records that have references to others regarding batching with the sync engine? For example, if I have hundreds of records to sync with many different types and references, do I need to keep track of how many records would be added because of reference properties? The sample and video doesn’t go into details about syncing records that have references to others so looking for lesser known rough edges.
1
0
490
Jun ’26
CloudKit with Swift on Server or Mac dev tools
What recommendation would you have for teams wanting to build a CloudKit integration in the cloud? For example, the backend writes data to the public database, users read it, controlled via security roles. CloudKit Web Services documentation has been archived for some time but the services still exist. Generating a client using Swift OpenAPI generator would be real slick. The same could be used in local tooling that has the server API key.
1
1
527
Jun ’26
iCloud LiveSharing link to colaborate
Hi there!, I have been developing an app where you can create a collection and I want to add a new feature where you can share an iCloud link from that collection and collaborate with your family or friends who you share the link to complete that collection. Like Apple does with the notes app or some other apps. The problem I have encountered is programming in swift does not allow you to do that and I need to do it I Core Data... Do you think with all the new stuff announced during the WWDC26 It could be done in Swift or I have to change coding?? Thanks community for any help
1
0
1k
Jun ’26
CloudKit queries failing, need reindexing
See FB22358865. I have a formerly working app. From within the app, Queries to 4 'Record Types' work fine. Queries to one Record Type return only some records. When I 'Query Records' from the CloudKit dashboard I get 100-300 records downloaded for this Record Type. If I repeat 'Query Records' I get an additional 100-300 records. There are more than 4000 records. Apple Developer Technical Support has stated 'the index in your CloudKit container gets in a bad state." How can I fix this?
0
0
607
Jun ’26
CloudKit schema messed up!
I don't remember if i deployed the changes in my cloudkit schema to production when I uploaded the version 2 of my existing app. since then i had accidentally reseted the environment while trying to do the same for another app. This was in haste, without checking the group identifier in the console. How do I know if everything is fine on the user's end?
1
0
492
Jun ’26
iCloud Database Errors and Limits
We are currently implementing a custom iCloud sync for our macOS and iOS apps using CloudKit. Syncing works fine as long as the number of record sends is relatively small. But when we test with a large number of changes ( 80,000+ CKRecords ) we start running into problems. Our sending strategy is very conservative to avoid rate limits: We send records sequentially in batches of 250 records With about 2 seconds pause between operations Records are small and contain no assets (assets are uploaded separately) At some point we start receiving: “Database commit size exceeds limit” After that, CloudKit begins returning rate-limit errors with retryAfter-Information in the error. We wait for the retry time and try again, but from this moment on, nothing progresses anymore. Every subsequent attempt fails. We could not find anything in the official documentation regarding such a “commit size” limit or what triggers this failure state. So my questions are: Are there undocumented limits on the total number of records that can exist in an iCloud database (private or shared)? Is there a maximum volume of record modifications a container can accept within a certain timeframe, even if operations are split into small batches with pauses? Is it possible that sending large numbers of records in a row can temporarily or permanently “stall” a CloudKit container? Any insights or experiences would be greatly appreciated. Thank you!
1
1
857
Jun ’26
Can a developer sponsor app-specific privateCloudDatabase storage for users?
Hi, We are developing an iOS/watchOS app that uses CloudKit private database and CKShare to let athletes share training data with their coaches. Current architecture: Each athlete owns their data in their privateCloudDatabase. The athlete can share selected records with a coach using CKShare. The coach accesses the shared data through the sharedCloudDatabase. This works very well for privacy, ownership, and permission management. The issue: Many athletes do not have enough available personal iCloud storage. When their iCloud storage is full, our app cannot save/sync/share new records in their privateCloudDatabase. This breaks the coach-athlete sharing flow, even if the coach is paying for a subscription in our app. Question: Is there any Apple-supported way for an app developer, or a coach/team organization using our app, to sponsor, allocate, or purchase additional iCloud storage specifically for a user’s app-specific CloudKit private database data? What we would like to preserve: Records stay in the athlete’s privateCloudDatabase. The athlete remains the owner of the data. CKShare continues to manage sharing permissions and consent. The app or coach organization covers the storage cost, instead of requiring every athlete to upgrade their personal iCloud+ plan. I understand that: privateCloudDatabase data counts against the user’s personal iCloud storage quota. publicCloudDatabase data counts against the app/container quota. CloudKit Database app can be used to manage the app’s CloudKit containers. However, moving this data to publicCloudDatabase would require us to rebuild part of the permission and sharing model ourselves, and it would not be equivalent to user-owned private records shared via CKShare. So I would like to confirm: Is there any way to sponsor or allocate app-specific privateCloudDatabase storage for selected users? Is there any Apple Business, Managed Apple Account, enterprise, or developer program option that supports this for sports teams or organizations? If this is not supported, are the only Apple-native alternatives: asking users to upgrade iCloud+, moving shared/team data to publicCloudDatabase, or using a third-party/app-managed backend? Use case: Our app is used in strength training. A coach may manage many athletes. The coach is willing to pay for the subscription and storage, but athletes often do not want to pay for additional iCloud storage individually. Thanks.
2
0
822
Jun ’26
App Privacy Report says app connecting to Google for CKDatabase
I have a CloudKit container that I share across several apps. when I look at the App Privacy Report for these apps, it reflects the app connecting to Google storage APIs. While Apple might host with Google, the perception for users is iCloud and Apple. Can something be done about this? FB16410232 (CloudKit: CloudKit requests contacting google upload servers unexpectedly in app privacy report)
Replies
1
Boosts
0
Views
768
Activity
Jun ’26
CloudKit client usage should be attributed to app for MetricKit network metrics
In the past I ran into issues where the CloudKit client SDK was not attributing network usage in MetricKit. Since MetricKit got a major update this year I’d like to make sure usage goes here agains the app. I would expect transfer metrics to also count for CKSyncEngine, or the CloudKit config for core/swift data too. Is this assumption correct? FB12673917 (CloudKit / MetricKit: CloudKit queries are not counting towards network transfer metrics in MetricKit - WWDC23 lab, possible missing URLSession 'attributedBundleIdentifier' not being set)
Replies
1
Boosts
0
Views
717
Activity
Jun ’26
Recommended way to display user-friendly iCloud Drive paths?
I’m building a macOS app that stores file URLs/bookmarks and displays file locations in the UI. For files in iCloud Drive, I want to show a user-friendly path such as: iCloud Drive / My Folder / File.jpg rather than an internal filesystem path. What is the recommended way to display iCloud Drive paths in a way that matches what users see in Finder? Thanks!
Replies
1
Boosts
0
Views
719
Activity
Jun ’26
Add Analytics Reports for CloudKit usage
I don’t have a feedback for this yet, but I’d like to see some analytics reports for CloudKit performance. Things to capture stats, performance, failures, etc. lots of the data in the console, but exposed through analytics reports. Related but different, if I had something like a generated OpenAPI client, I’d add instrumentation via client middleware. I could do most of what I’d want to instrument that way, status codes, timeouts, durations, payload sizes, etc. Alternatively, if the CloudKit client API exposed URLSession, or a hook to the delegate / metrics, a lot of what I am interested in could be achieved via session task metrics too. FB13628463 (CloudKit: Expose URLSessionTaskMetrics from CloudKit client)
Replies
1
Boosts
0
Views
704
Activity
Jun ’26
Control Logging of CloudKit in Xcode
I often struggle to see my own log data with the heavy stream of CloudKit updates. Is there an easy way to filter that our or turn it on/off?
Replies
3
Boosts
0
Views
1.1k
Activity
Jun ’26
CloudKit security roles
I’d like the ability to detect a users security role. This makes sense for detecting the roles assigned to named users for enabling workflows within an app. For example, user generated content and “moderators”. Instead of building an unlisted app, I’d prefer to just check permissions against the user. As a workaround, one could create record types with the same “security role” as the moderator actions, but to attempt to fetch a dummy record seems fragile and inefficient. FB9638492 (CloudKit: API to detect provided security role on current user)
Replies
1
Boosts
0
Views
636
Activity
Jun ’26
CloudKit container may need indexing
My queries are failing in an unusual way. I can query 4 out of 5 Record Types. The 5th fails from the app (CKQueryOperation) and, surprisingly, also from the CloudKit Dashboard. It returns only 100-300 records when it should return over 4000. Tapping "Query Records" returns an additional 100-300 records. Apple Developer Technical Support has suggested that the issue involves the index of the container and wrote that only the CloudKit Team can fix it. So my question is - How do I get the CloudKit Team to fix it????
Replies
3
Boosts
0
Views
729
Activity
Jun ’26
Notification when iCloud Drive state changes
Is there any way to get notified in macOS when the iCloud Drive becomes online/offline so that I can update the UI in my app to reflect that state? Thanks!
Replies
1
Boosts
0
Views
645
Activity
Jun ’26
Cloudkit sharing available in swift instead Core Kit
Hi there, as far as I know CloudKit sharing is only available when using Core Kit coding instead swift. Are you okaying to open that posibility in further versions of swift?
Replies
6
Boosts
0
Views
711
Activity
Jun ’26
NSPersistentCloudKitContainer doesn't report "Quota Exceeded" through notification
When subscribing to NSPersistentCloudKitContainer.eventChangedNotification events, quota exceeded events aren't delivered to the app at runtime. I get CKError.partialFailure, but without any additional information in any of the properties. https://developer.apple.com/documentation/cloudkit/ckerror/code/partialfailure states information should be available, but it isn't. When a debugger is attached, the information is logged by another process, but my app cannot access that at runtime to provide users with additional information. Is there any workaround to get this to work? References: Older post: https://forums.developer.apple.com/forums/thread/696523 FB13773922
Replies
4
Boosts
1
Views
640
Activity
Jun ’26
Question on PCS Zone corruption recovery
Hi all - figured I would kick off with a CloudKit question. Recently in development of a multi-device app I got into a state where all iOS devices could not write to the (production) CloudKit container - however macOS could still write (multi-device SwiftUI code). After ruling out a lot of other things it seemed like there had been some corruption in the production zone's PCS key chain. The only fix was deleting the zone from the CloudKit Console (safe for my pre-release beta data, but destructive). Is there a safer or developer-accessible recovery path for PCS chain corruption? Is this situation detectable earlier, or is there guidance on avoiding it during pre-release testing? The error in the logs in this scenario had "overallStatus":"USER_ERROR", "error":"BAD_REQUEST", "returnedRecordTypes":"_pcs_data".
Replies
1
Boosts
0
Views
578
Activity
Jun ’26
CKSyncEngine for records with references
Is there any guidance for syncing records that have references to others regarding batching with the sync engine? For example, if I have hundreds of records to sync with many different types and references, do I need to keep track of how many records would be added because of reference properties? The sample and video doesn’t go into details about syncing records that have references to others so looking for lesser known rough edges.
Replies
1
Boosts
0
Views
490
Activity
Jun ’26
CloudKit with Swift on Server or Mac dev tools
What recommendation would you have for teams wanting to build a CloudKit integration in the cloud? For example, the backend writes data to the public database, users read it, controlled via security roles. CloudKit Web Services documentation has been archived for some time but the services still exist. Generating a client using Swift OpenAPI generator would be real slick. The same could be used in local tooling that has the server API key.
Replies
1
Boosts
1
Views
527
Activity
Jun ’26
Strategy for Limiting CloudKit Activity / Refreshing
Are there good ways to guide an app to pause iCloud syncing if the app is busy with an intensive activity? Also, is there a way to suggest that it check iCloud for updates?
Replies
1
Boosts
0
Views
735
Activity
Jun ’26
iCloud LiveSharing link to colaborate
Hi there!, I have been developing an app where you can create a collection and I want to add a new feature where you can share an iCloud link from that collection and collaborate with your family or friends who you share the link to complete that collection. Like Apple does with the notes app or some other apps. The problem I have encountered is programming in swift does not allow you to do that and I need to do it I Core Data... Do you think with all the new stuff announced during the WWDC26 It could be done in Swift or I have to change coding?? Thanks community for any help
Replies
1
Boosts
0
Views
1k
Activity
Jun ’26
CloudKit queries failing, need reindexing
See FB22358865. I have a formerly working app. From within the app, Queries to 4 'Record Types' work fine. Queries to one Record Type return only some records. When I 'Query Records' from the CloudKit dashboard I get 100-300 records downloaded for this Record Type. If I repeat 'Query Records' I get an additional 100-300 records. There are more than 4000 records. Apple Developer Technical Support has stated 'the index in your CloudKit container gets in a bad state." How can I fix this?
Replies
0
Boosts
0
Views
607
Activity
Jun ’26
CloudKit schema messed up!
I don't remember if i deployed the changes in my cloudkit schema to production when I uploaded the version 2 of my existing app. since then i had accidentally reseted the environment while trying to do the same for another app. This was in haste, without checking the group identifier in the console. How do I know if everything is fine on the user's end?
Replies
1
Boosts
0
Views
492
Activity
Jun ’26
iCloud Database Errors and Limits
We are currently implementing a custom iCloud sync for our macOS and iOS apps using CloudKit. Syncing works fine as long as the number of record sends is relatively small. But when we test with a large number of changes ( 80,000+ CKRecords ) we start running into problems. Our sending strategy is very conservative to avoid rate limits: We send records sequentially in batches of 250 records With about 2 seconds pause between operations Records are small and contain no assets (assets are uploaded separately) At some point we start receiving: “Database commit size exceeds limit” After that, CloudKit begins returning rate-limit errors with retryAfter-Information in the error. We wait for the retry time and try again, but from this moment on, nothing progresses anymore. Every subsequent attempt fails. We could not find anything in the official documentation regarding such a “commit size” limit or what triggers this failure state. So my questions are: Are there undocumented limits on the total number of records that can exist in an iCloud database (private or shared)? Is there a maximum volume of record modifications a container can accept within a certain timeframe, even if operations are split into small batches with pauses? Is it possible that sending large numbers of records in a row can temporarily or permanently “stall” a CloudKit container? Any insights or experiences would be greatly appreciated. Thank you!
Replies
1
Boosts
1
Views
857
Activity
Jun ’26
Advanced Data Protection and CloudKit Console.
I enabled Advanced Data Protection for my developer account, and this (understandably) broke access to my private records in CloudKit Console. I disabled Advanced Data Protection but CloudKit Console still cannot connect. In the database popup the "Click here to retry..." option always fails silently. Does anyone know a workaround?
Replies
5
Boosts
1
Views
2.1k
Activity
Jun ’26
Can a developer sponsor app-specific privateCloudDatabase storage for users?
Hi, We are developing an iOS/watchOS app that uses CloudKit private database and CKShare to let athletes share training data with their coaches. Current architecture: Each athlete owns their data in their privateCloudDatabase. The athlete can share selected records with a coach using CKShare. The coach accesses the shared data through the sharedCloudDatabase. This works very well for privacy, ownership, and permission management. The issue: Many athletes do not have enough available personal iCloud storage. When their iCloud storage is full, our app cannot save/sync/share new records in their privateCloudDatabase. This breaks the coach-athlete sharing flow, even if the coach is paying for a subscription in our app. Question: Is there any Apple-supported way for an app developer, or a coach/team organization using our app, to sponsor, allocate, or purchase additional iCloud storage specifically for a user’s app-specific CloudKit private database data? What we would like to preserve: Records stay in the athlete’s privateCloudDatabase. The athlete remains the owner of the data. CKShare continues to manage sharing permissions and consent. The app or coach organization covers the storage cost, instead of requiring every athlete to upgrade their personal iCloud+ plan. I understand that: privateCloudDatabase data counts against the user’s personal iCloud storage quota. publicCloudDatabase data counts against the app/container quota. CloudKit Database app can be used to manage the app’s CloudKit containers. However, moving this data to publicCloudDatabase would require us to rebuild part of the permission and sharing model ourselves, and it would not be equivalent to user-owned private records shared via CKShare. So I would like to confirm: Is there any way to sponsor or allocate app-specific privateCloudDatabase storage for selected users? Is there any Apple Business, Managed Apple Account, enterprise, or developer program option that supports this for sports teams or organizations? If this is not supported, are the only Apple-native alternatives: asking users to upgrade iCloud+, moving shared/team data to publicCloudDatabase, or using a third-party/app-managed backend? Use case: Our app is used in strength training. A coach may manage many athletes. The coach is willing to pay for the subscription and storage, but athletes often do not want to pay for additional iCloud storage individually. Thanks.
Replies
2
Boosts
0
Views
822
Activity
Jun ’26