Repository navigation
4.0.0
SwiftStore synchronization now uses CloudKit exclusively, with CKSyncEngine on iOS 17+ and CloudKit Operations on iOS 16.
Breaking changes
- Removed the HTTP sync product, custom
SyncTransportAPI, and independent sync state stores and queues. - Configure synchronization through
SyncOptions(cloudKit: CloudKitSyncConfiguration(...)). - Existing CloudKit installations must provide
LegacySyncMigrationwith their original changelog and journal paths. Migration creates backups, preserves pending work, and retains the original files.
Synchronization changes
- Business data, append-only change events, upload progress, and download checkpoints share one SQLite database and writer transaction.
- Uploads coalesce only within each fixed batch. Progress advances through the continuous confirmed prefix; retries preserve original event IDs, payloads, and timestamps.
- Downloads apply newer business timestamps, retain newer local data, and use the committed CloudKit version for equal-time conflicts without upload echoes.
- Added monotonic local versions, versioned tombstones, account-change protection, token-expiration recovery, and safe Operations-to-CKSyncEngine checkpoint migration.
The implementation was checked with the full test suite, crash-recovery and account-switch tests, and an iOS 16 deployment-target build before release. Real iCloud, APNs, and CKSyncEngine system scheduling still require signed-device verification.