Those replays are a total waste of time but it's just how it works. It could take *hours* to restore the relatively small number of actually current records as CloudKit replays dead records the new install never had in the first place. Thousands and thousands of them.
I had to rearchitect *everything* to redesign it around this one unchangeable behavior.
RE: https://mastodon.social/@marcoarment/116308706419748361
Yes it broke the handshaking of my app for inviting friends (CKShare participants)… You need to force close the app on both side during the handshaking….
Can’t wait the WWDC session about testing….
A new update is ready on the App Store. The Yearly Progression Charts have been improved…
I enjoy going for walks...
It was probably the most complex thing I've ever built.
I removed CKSyncEngine and did it all myself solving the problems we needed solved. Maintaining a synced database of items with unique IDs supporting cascade deletes and automatically handling conflicts without much participation from the server which knows nothing of our needs.
Do you know how hard that is? No, most people don't and never will.
Do you know how many ways it can go wrong? So many ways. Have I found them all? I don't know.
It's not just a replacement for CKSyncEngine - it's much more. One of the key problems we had was how CloudKit replays deletion tombstones going way back. Tapestry would download feed items, make a CKRecord, and put it in iCloud to sync to other devices. Then later when the item gets old, we delete them. Over time, with busy feeds, you're looking at hundreds of expiring items per day for some people.
If you reinstall the app, it'd replay those deletions as CloudKit "catches you up" on new sync.
Hey “Apple Friends”, speaking of CloudKit, I desperately filed a Feedback under FB22338675, a feature request.
I don’t know who I am for daring to file such a Feedback.