Recovering Customer's Data After iCloud Migration

I have encountered an issue with a customer’s data access after they migrated to a different iCloud account, and I’m looking for guidance.

The Situation:

  • The customer was logged into their account on my app, which was associated with a specific iCloud account (iCloud A).
  • They had all their app data available while using iCloud A.
  • The customer then switched to a new iCloud account (iCloud B) on the same device, while still using the same app account.
  • After switching iCloud accounts, their data is no longer visible in the app or my CloudKit dashboard.

My Investigation:

  • I accessed the customer’s CloudKit data via the CloudKit Console, acting as their iCloud account.
  • I couldn’t find the private database zone or any of their records when accessing iCloud A through the console.
  • I don’t believe the data was deleted since actions performed under iCloud B shouldn’t affect data stored in iCloud A.

My Hypothesis:

  • I suspect that the customer’s old iCloud account (iCloud A) may have downgraded or stopped paying for iCloud storage.
  • If the iCloud subscription is inactive or expired, could that prevent me from accessing their CloudKit data?
  • Would renewing the iCloud subscription for iCloud A restore access to the missing data?

Questions:

  1. Does an unpaid or expired iCloud account restrict access to CloudKit records, even if they weren’t deleted?
  2. Would paying for iCloud storage again restore the data previously stored in CloudKit?
  3. Is there any way to recover the customer’s CloudKit data if they are unable to access their old iCloud account?

If anyone has a simpler approach to recovering the customer’s iCloud-stored app data or has experience dealing with iCloud migrations like this, I’d appreciate your insights. Thank you in advance for any advice!

What iCloud API are you using, and do you do anything when a user switches their iCloud account? If you can share more details about your implementation, I'd see if I can comment.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

@DTS Engineer

We are not currently using any APIs specifically for iCloud account switches. Our app’s data is managed entirely through Core Data, backed by NSPersistentCloudKitContainer for synchronization with iCloud. When my colleague checked the CloudKit Console after logging into their iCloud account, they did not see the custom zone we use to store Core Data records. This absence has us concerned about whether the data is still recoverable.

If the iCloud account is still active, should Core Data records managed via NSPersistentCloudKitContainer automatically sync back? Or does switching iCloud accounts result in the permanent deletion of associated Core Data records?

Our plan is to recommend that the user logs back into their original iCloud account, ensures that iCloud is enabled for our app, and opens the app to allow time for the data to sync back. Is this the correct approach for recovering the data, or are there additional steps we should take? Any guidance would be greatly appreciated.

Best regards, Edward

Recovering Customer's Data After iCloud Migration
 
 
Q