<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -",
    "macCatalyst: 17.0.0 -",
    "macOS: 14.0.0 -",
    "tvOS: 17.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 10.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CloudKit",
  "identifier" : "/documentation/CloudKit/CKSyncEngineEvent",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "CloudKit"
    ],
    "preciseIdentifier" : "c:objc(cs)CKSyncEngineEvent"
  },
  "title" : "CKSyncEngineEvent"
}
-->

# CKSyncEngineEvent

An event that occurs during a sync operation.

```
@interface CKSyncEngineEvent : NSObject
```

## Overview

All sync operation events descend from this base class, and as such you don’t create instances of it directly. Instead, the sync engine dispatches them to your app’s delegate, periodically, throughout a sync operation.

See the documentation for each event class for more details about when and why an event is posted.

Use the [`type`](/documentation/CloudKit/CKSyncEngineEvent/type) property to determine the event’s proper type, and then use the corresponding convenience property to retrieve a reference to the event that’s downcast to the appropriate subclass. For example, when CloudKit vends an event with [`type`](/documentation/CloudKit/CKSyncEngineEvent/type) set to [`CKSyncEngineEventType.stateUpdate`](/documentation/CloudKit/CKSyncEngineEventType/stateUpdate), use the [`stateUpdateEvent`](/documentation/CloudKit/CKSyncEngineEvent/stateUpdateEvent) property to get the downcast reference.

> Important: It is a fatal error to access a non-corresponding convenience property.

## Topics

### Determining the type

[`type`](/documentation/CloudKit/CKSyncEngineEvent/type)

The type of event.

[`CKSyncEngineEventType`](/documentation/CloudKit/CKSyncEngineEventType)

Describes an event that occurs during a sync operation.

### Accessing account changes

[`accountChangeEvent`](/documentation/CloudKit/CKSyncEngineEvent/accountChangeEvent)

The event downcast to the subclass that represents a change to the device’s iCloud account.

[`CKSyncEngineAccountChangeEvent`](/documentation/CloudKit/CKSyncEngineAccountChangeEvent)

The user signed in or out of their account.

### Accessing fetch events

[`willFetchChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/willFetchChangesEvent)

The event downcast to the subclass that represents an imminent database fetch.

[`CKSyncEngineWillFetchChangesEvent`](/documentation/CloudKit/CKSyncEngineWillFetchChangesEvent)

The sync engine is about to fetch changes from the server.

[`willFetchRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/willFetchRecordZoneChangesEvent)

The event downcast to the subclass that represents an imminent fetch of record zone changes.

[`CKSyncEngineWillFetchRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineWillFetchRecordZoneChangesEvent)

The sync engine finished fetching record zone changes from the server for a specific zone.

[`fetchedDatabaseChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/fetchedDatabaseChangesEvent)

The event downcast to the subclass that represents a set of fetched database changes to process.

[`CKSyncEngineFetchedDatabaseChangesEvent`](/documentation/CloudKit/CKSyncEngineFetchedDatabaseChangesEvent)

An object that provides information about fetched database changes.

[`fetchedRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/fetchedRecordZoneChangesEvent)

The event downcast to the subclass that represents a set of fetched record zone changes to process.

[`CKSyncEngineFetchedRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineFetchedRecordZoneChangesEvent)

An object that provides information about fetched record zone changes.

[`didFetchRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/didFetchRecordZoneChangesEvent)

The event downcast to the subclass that represents a completed record zone fetch.

[`CKSyncEngineDidFetchRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineDidFetchRecordZoneChangesEvent)

An object that provides information about a finished record zone fetch.

[`didFetchChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/didFetchChangesEvent)

The event downcast to the subclass that represents a completed database fetch.

[`CKSyncEngineDidFetchChangesEvent`](/documentation/CloudKit/CKSyncEngineDidFetchChangesEvent)

The sync engine finished fetching changes from the server.

### Accessing send events

[`willSendChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/willSendChangesEvent)

The event downcast to the subclass that represents an imminent send operation.

[`CKSyncEngineWillSendChangesEvent`](/documentation/CloudKit/CKSyncEngineWillSendChangesEvent)

An object that provides information about an imminent send of local changes.

[`sentDatabaseChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/sentDatabaseChangesEvent)

The event downcast to the subclass that represents a sent batch of database changes.

[`CKSyncEngineSentDatabaseChangesEvent`](/documentation/CloudKit/CKSyncEngineSentDatabaseChangesEvent)

An object that provides information about a sent batch of database changes.

[`sentRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/sentRecordZoneChangesEvent)

The event downcast to the subclass that represents a sent batch of record zone changes.

[`CKSyncEngineSentRecordZoneChangesEvent`](/documentation/CloudKit/CKSyncEngineSentRecordZoneChangesEvent)

The sync engine finished sending a batch of record zone changes to the server.

[`didSendChangesEvent`](/documentation/CloudKit/CKSyncEngineEvent/didSendChangesEvent)

The event downcast to the subclass that represents a completed send operation.

[`CKSyncEngineDidSendChangesEvent`](/documentation/CloudKit/CKSyncEngineDidSendChangesEvent)

An object that provides information about a finished send operation.

### Accessing state updates

[`stateUpdateEvent`](/documentation/CloudKit/CKSyncEngineEvent/stateUpdateEvent)

The event downcast to the subclass that represents an update to the sync engine’s state.

[`CKSyncEngineStateUpdateEvent`](/documentation/CloudKit/CKSyncEngineStateUpdateEvent)

The sync engine state was updated, and you should persist it locally.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)