---
title: CKSyncEngine.SendChangesContext
framework: cloudkit
role: symbol
role_heading: Structure
path: cloudkit/cksyncengine-5sie5/sendchangescontext
---

# CKSyncEngine.SendChangesContext

The context of an attempt to send changes to the server.

## Declaration

```swift
struct SendChangesContext
```

## Overview

Overview A sync engine has two ways to send changes to iCloud — periodically, in cooperation with the system scheduler, and manually, whenever your app invokes the sendChanges(_:) method. This type provides information about a single attempt to send changes that includes both the reason for the attempt and any additional options in use by the attempt.

## Topics

### Accessing specific attributes

- [reason](cloudkit/cksyncengine-5sie5/sendchangescontext/reason.md)
- [CKSyncEngine.SyncReason](cloudkit/cksyncengine-5sie5/syncreason.md)
- [CKSyncEngineSyncReason](cloudkit/cksyncenginesyncreason.md)
- [options](cloudkit/cksyncengine-5sie5/sendchangescontext/options.md)
- [CKSyncEngine.SendChangesOptions](cloudkit/cksyncengine-5sie5/sendchangesoptions.md)

### Debugging the context

- [description](cloudkit/cksyncengine-5sie5/sendchangescontext/description.md)

### Default Implementations

- [CustomStringConvertible Implementations](cloudkit/cksyncengine-5sie5/sendchangescontext/customstringconvertible-implementations.md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Escapable](swift/escapable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Sending changes

- [nextRecordZoneChangeBatch(_:syncEngine:)](cloudkit/cksyncenginedelegate-1q7g8/nextrecordzonechangebatch(_:syncengine:).md)
- [CKSyncEngine.RecordZoneChangeBatch](cloudkit/cksyncengine-5sie5/recordzonechangebatch.md)
