<!--
{
  "availability" : [
    "iOS: 17.4.0 -",
    "iPadOS: 17.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "BrowserEngineKit",
  "identifier" : "/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "BrowserEngineKit"
    ],
    "preciseIdentifier" : "c:objc(cs)BELayerHierarchyHostingTransactionCoordinator"
  },
  "title" : "LayerHierarchyHostingTransactionCoordinator"
}
-->

# LayerHierarchyHostingTransactionCoordinator

A class that synchronizes updates to views and layers in different processes.

```
class LayerHierarchyHostingTransactionCoordinator
```

## Overview

Updates to your app’s UI occur through Core Animation’s underlying transaction mechanism. This class works with Core Animation to synchronize transactions that occur across processes in your browser app. To do that:

- Add views and layer hierarchies to an instance of this class.
- Share the instance between processes using [`createXPCRepresentation()`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/createXPCRepresentation()) and [`init(xpcRepresentation:)`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/init(xpcRepresentation:)), or [`encode(_:)`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/encode(_:)) and [`init(port:data:)`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/init(port:data:)).
- Perform the necessary Core Animation transactions.
- Call [`commit()`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/commit()) on the instance, and discard it.

For more information, see [Hosting browser view layers in the rendering extension](/documentation/BrowserEngineKit/hosting-browser-view-layers-in-the-rendering-extension).

## Topics

### Creating a transaction coordinator

[`init() throws`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/init())

Creates a transaction coordinator.

[`init?(coder: NSCoder)`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/init(coder:))

Creates a transaction coordinator from an encoded representation.

### Sharing a transaction coordinator using XPC

[`func createXPCRepresentation() -> xpc_object_t`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/createXPCRepresentation())

Creates a representation of the transaction coordinator that you send to another process.

[`init(xpcRepresentation: xpc_object_t?) throws`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/init(xpcRepresentation:))

Creates a transaction coordinator from an XPC object.

### Sharing a transaction coordinator using Mach

[`func encode((mach_port_t, Data) -> Void)`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/encode(_:))

Serializes the transaction coordinator into a Mach port reference and accompanying data.

[`init(port: mach_port_t, data: Data) throws`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/init(port:data:))

Creates a transaction coordinator using a Mach port reference and serialized data.

### Synchronizing transactions

[`func add(LayerHierarchyHostingView)`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/add(_:)-7day0)

Notifies the transaction coordinator to start coordinating transactions for the given view.

[`func add(LayerHierarchy)`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/add(_:)-i66q)

Notifies the transaction coordinator to start coordinating transactions for the given layer hierarchy.

[`func commit()`](/documentation/BrowserEngineKit/LayerHierarchyHostingTransactionCoordinator/commit())

Notifies the render server to coordinate transactions for the added views and layer hierarchies.

## Relationships

### Conforms To

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

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

[`NSCoding`](/documentation/Foundation/NSCoding)

[`NSSecureCoding`](/documentation/Foundation/NSSecureCoding)

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

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

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

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

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

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

### 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)