<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -",
    "tvOS: 18.0.0 -",
    "visionOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIUpdateActionPhase",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UIUpdateActionPhase"
  },
  "title" : "UIUpdateActionPhase"
}
-->

# UIUpdateActionPhase

An object that defines specific phases of the UI update process.

```
@MainActor class UIUpdateActionPhase
```

## Overview

Each UI update consists of several phases that run in a consistent order, and the [`UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase) object defines constants that represent these phases. When using a [`UIUpdateLink`](/documentation/UIKit/UIUpdateLink), you can use these constants to decide which phase of the UI update process you want its actions to run in.

There are two *phase groups*: standard and low-latency. The standard phase group runs for each UI update. This phase group includes these phases, which run in the following order:

1. [`beforeEventDispatch`](/documentation/UIKit/UIUpdateActionPhase/beforeEventDispatch)
2. [`afterEventDispatch`](/documentation/UIKit/UIUpdateActionPhase/afterEventDispatch)
3. [`beforeCADisplayLinkDispatch`](/documentation/UIKit/UIUpdateActionPhase/beforeCADisplayLinkDispatch)
4. [`afterCADisplayLinkDispatch`](/documentation/UIKit/UIUpdateActionPhase/afterCADisplayLinkDispatch)
5. [`beforeCATransactionCommit`](/documentation/UIKit/UIUpdateActionPhase/beforeCATransactionCommit)
6. [`afterCATransactionCommit`](/documentation/UIKit/UIUpdateActionPhase/afterCATransactionCommit)

The low-latency phase group is optional, and it’s off by default. It runs only if you explicitly request low-latency event dispatch using [`wantsLowLatencyEventDispatch`](/documentation/UIKit/UIUpdateLink/wantsLowLatencyEventDispatch). The low-latency phase group includes these phases, which run in the following order (after the standard phases):

1. [`beforeLowLatencyEventDispatch`](/documentation/UIKit/UIUpdateActionPhase/beforeLowLatencyEventDispatch)
2. [`afterLowLatencyEventDispatch`](/documentation/UIKit/UIUpdateActionPhase/afterLowLatencyEventDispatch)
3. [`beforeLowLatencyCATransactionCommit`](/documentation/UIKit/UIUpdateActionPhase/beforeLowLatencyCATransactionCommit)
4. [`afterLowLatencyCATransactionCommit`](/documentation/UIKit/UIUpdateActionPhase/afterLowLatencyCATransactionCommit)

When a phase group runs, all phases inside the group run. Phases run one after another in the specified order without exiting back into the run loop.

## Topics

### Phases

[`class var afterUpdateScheduled: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/afterUpdateScheduled)

A phase that runs after the scheduling of a UI update.

[`class var beforeEventDispatch: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/beforeEventDispatch)

A phase that runs before standard event handlers.

[`class var afterEventDispatch: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/afterEventDispatch)

A phase that runs after standard event handlers.

[`class var beforeCADisplayLinkDispatch: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/beforeCADisplayLinkDispatch)

A phase that runs before Core Animation display link callbacks.

[`class var afterCADisplayLinkDispatch: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/afterCADisplayLinkDispatch)

A phase that runs after Core Animation display link callbacks.

[`class var beforeCATransactionCommit: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/beforeCATransactionCommit)

A phase that runs before a Core Animation transaction commit.

[`class var afterCATransactionCommit: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/afterCATransactionCommit)

A phase that runs after a Core Animation transaction commit.

[`class var beforeLowLatencyEventDispatch: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/beforeLowLatencyEventDispatch)

A phase that runs before low-latency event handlers.

[`class var afterLowLatencyEventDispatch: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/afterLowLatencyEventDispatch)

A phase that runs after low-latency event handlers.

[`class var beforeLowLatencyCATransactionCommit: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/beforeLowLatencyCATransactionCommit)

A phase that runs before a Core Animation transaction commit for a low-latency event.

[`class var afterLowLatencyCATransactionCommit: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/afterLowLatencyCATransactionCommit)

A phase that runs after a Core Animation transaction commit for a low-latency event.

[`class var afterUpdateComplete: UIUpdateActionPhase`](/documentation/UIKit/UIUpdateActionPhase/afterUpdateComplete)

A phase that runs at the end of a UI update.

## Relationships

### Conforms To

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Sendable`](/documentation/Swift/Sendable)

[`CVarArg`](/documentation/Swift/CVarArg)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`Hashable`](/documentation/Swift/Hashable)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)