<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.10.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -",
    "watchOS: 3.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CloudKit",
  "identifier" : "/documentation/CloudKit/CKModifyRecordsOperation/perRecordProgressBlock",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "CloudKit"
    ],
    "preciseIdentifier" : "c:objc(cs)CKModifyRecordsOperation(py)perRecordProgressBlock"
  },
  "title" : "perRecordProgressBlock"
}
-->

# perRecordProgressBlock

The closure to execute with progress information for individual records.

```
var perRecordProgressBlock: ((CKRecord, Double) -> Void)? { get set }
```

## Discussion

This property is a closure that returns no value and has the following parameters:

- The record that CloudKit saves.
- The amount of data, as a percentage, that CloudKit saves for the record. The range is `0.0` to `1.0`, where `0.0` indicates that CloudKit hasn’t saved any data, and `1.0` means that CloudKit has saved the entire record.

The modify records operation executes this closure one or more times for each record in the [`recordsToSave`](/documentation/CloudKit/CKModifyRecordsOperation/recordsToSave) property. Each time the closure executes, it executes serially with respect to the other progress closures of the operation. You can use this closure to track the ongoing progress of the operation.

If you intend to use this closure to process results, set it before you execute the operation or add the operation to a queue.

---

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)