<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "Vision",
  "identifier" : "/documentation/Vision/VNRequestProgressHandler",
  "metadataVersion" : "0.1.0",
  "role" : "Type Alias",
  "symbol" : {
    "kind" : "Type Alias",
    "modules" : [
      "Vision"
    ],
    "preciseIdentifier" : "c:@T@VNRequestProgressHandler"
  },
  "title" : "VNRequestProgressHandler"
}
-->

# VNRequestProgressHandler

A block executed at intervals during the processing of a Vision request.

```
typealias VNRequestProgressHandler = (VNRequest, Double, (any Error)?) -> Void
```

## Parameters

`request`

The completed Vision request. The results of the request, if no error occurred, reside in the [`results`](/documentation/Vision/VNRequest/results) array of the request.

`fractionCompleted`

The fraction of the request that is completed, reported between `0.0` and `1.0`. If the [`indeterminate`](/documentation/Vision/VNRequestProgressProviding/indeterminate) property is set, this value is undefined.

`error`

The error that caused the request to fail, or <doc://com.apple.documentation/documentation/ObjectiveC/nil-227m0> if the request completed successfully.

## Discussion

Vision may populate the [`results`](/documentation/Vision/VNRequest/results) array in the request with partial data, before all results are ready.

> Note:
> The Vision framework may call the progress handler on a different dispatch queue from the thread on which you initiated the original request, so ensure that your handler can execute asynchronously, in a thread-safe manner.

---

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)