ARTICLE AD BOX
I'm using NSPersistentCloudKitContainer and I have added an entity (to the private database) to the core data model. Now I have realised that I don't need that entity anymore and I want to get rid of it from my code.
But it doesn't seem to be as simple as deleting it from the core data model and all referencing code. According to this video from WWDC 2022 (https://developer.apple.com/videos/play/wwdc2022/10120/) you can only add new entities and new attributes to entities. No other operations are allowed.
How do people generally deal with this case when using NSPersistentCloudKitContainer ? I tried deleting the entity from core data model and I got some warnings in the log saying that it couldn't find the entity anymore (understandable) and that persistent history tracking dropped for those transactions. Next time I ran the app again I got no warnings. So to me it seemed fine but I asked ChatGPT and did not recommend me to delete it:
Concrete scenarios
Scenario 1: Another device (even months later)
User installs app on a new device
CloudKit sends all record types it knows
Including Entity
Core Data can’t map them
Sync errors, dropped records, or stalled mirroring
Scenario 2: Old app version comes back
User opens an older build from TestFlight / App Store cache
That version still creates Entity
Uploads records to CloudKit
New version can’t decode them
Scenario 3: Background sync edge cases
CloudKit delivers changes out-of-order
Deletes arrive after inserts
Core Data sees a record type it no longer understands
Mirroring delegate errors appear later, not immediately
These failures often show up:
Days or weeks later
On a different device
Only for some users
As “random CloudKit issues”
Which is why Apple is so strict in WWDC.
