I've got an application built on top of SwiftData (+ CloudKit) which is published to App Store.
I've got a problem where on each app update, the data saved in the database is duplicated to the end user. Obviously this isn't wanted behaviour, and I'm really looking forward to fixing it. However, given the restrictions of SwiftData, I haven't found a single fix for this.
The data duplication happens automatically on the first initial sync after the update. My guess is that it's because it doesn't detect the data already in the device, so it pulls all data from iCloud and appends it to the database where data in reality exists.
SwiftData + CloudKit is currently based on NSPersistentCloudKitContainer
. Duplicate data can be generated if you have multiple app instances uploading a same piece of data, as discussed in Remove duplicate data.
NSPersistentCloudKitContainer
doesn't support unique constraints as of today, and so you will need to remove duplicate data with your own algorithm and code.
Best,
——
Ziqiao Chen
Worldwide Developer Relations.