Skip to content

4.0.0

Choose a tag to compare

@gfreezy gfreezy released this 11 Sep 02:10
· 15 commits to main since this release

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 SyncTransport API, and independent sync state stores and queues.
  • Configure synchronization through SyncOptions(cloudKit: CloudKitSyncConfiguration(...)).
  • Existing CloudKit installations must provide LegacySyncMigration with 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.

Setup and migration guide · Architecture · Full changelog