CloudKit CKRecordZone Deletion Issue
Problem: CloudKit record zones deleted via CKDatabase.modifyRecordZones(deleting:) or CKModifyRecordZonesOperation are successfully removed but then reappear. I suspect they are automatically reinstated by CloudKit sync, despite successful deletion confirmation.
Environment:
- SwiftData with CloudKit integration
- Custom CloudKit zones created for legacy zone-based sharing
Observed Behavior:
- Create custom zone (e.g., "TestZone1") via CKDatabase.modifyRecordZones(saving:)
- Copy records to zone for sharing purposes
- Delete zone using any CloudKit deletion API - returns success, no errors
- Immediate verification: Zone is gone from database.allRecordZones()
- After SwiftData/CloudKit sync or app restart: Zone reappears
Reproduction:
- Tested with three different deletion methods - all exhibit same behaviour:
- modifyRecordZones(deleting:) async API
- CKModifyRecordZonesOperation (fire-and-forget)
- CKModifyRecordZonesOperation with result callbacks
- Zone deletion succeeds, change tokens (used to track updates to shared records) cleaned up
- But zones are restored presumably by CloudKit background sync
Expected: Deleted zones should remain deleted Actual: Zones are reinstated, creating orphaned zones