CloudKit CKShare: storage ownership, quota accounting and shared-zone failures

I am evaluating the storage architecture for a native iOS family-organising application using CloudKit. The design is preliminary, and I am seeking clarification before native testing and production deployment.

Proposed test scenario

  • Apple Account A owns a custom record zone in its private CloudKit database.
  • Account A creates a root CKRecord and CKShare.
  • Independent Apple Account B accepts the share with read/write permissions.
  • Account B accesses and updates shared records through sharedCloudDatabase.
  • Both accounts initially have separate iCloud storage allocations.

1. Storage ownership and quota accounting

Apple's documentation appears to describe shared CloudKit storage using different terminology.

The native sharedCloudDatabase documentation references the application's iCloud storage quota, while CKError.Code.quotaExceeded describes a shared-zone write failing when the zone owner's iCloud storage is full.

For records, shares, metadata and CKAssets created or modified by Account B in Account A's shared zone:

  • Whose iCloud storage allocation is consumed?
  • Is any additional storage counted against Account B?
  • Does any usage count against a developer-level CloudKit quota or generate operator charges?

2. Storage exhaustion and error behaviour

If Account A reaches its iCloud storage limit while Account B has available storage, should B's writes to A's shared zone fail with quotaExceeded?

Conversely, if B's storage is full but A has capacity, should B still be able to modify A's shared records?

How should the application distinguish quota failures affecting B's private database from failures affecting A's shared zone?

Does behaviour change when both accounts use the same Apple Family iCloud storage pool or when an account downgrades its storage plan?

3. Current CloudKit limits and costs

Could Apple clarify or identify authoritative documentation for:

  • Current native CloudKit storage, request and data-transfer allowances.
  • Whether 400 records/shares per operation and 2 MB per request remain current guidelines.
  • How change fetches, retries and partial failures are accounted for.
  • Any differences between CloudKit development and production environments.
  • Whether private/shared CloudKit usage can result in developer-billed charges.
  • Where developers can verify the applicable allowances for their own containers before production deployment.

I have not yet reproduced a quota-exceeded scenario in a focused Xcode project. I am seeking architectural clarification to design appropriate storage limits, recovery behaviour and native verification tests.

Links to authoritative Apple documentation or clarification from an Apple frameworks engineer would be greatly appreciated.

CloudKit CKShare: storage ownership, quota accounting and shared-zone failures
 
 
Q