<!--
{
  "availability" : [
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/WKInterfaceObjectRepresentable",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI30WKInterfaceObjectRepresentableP"
  },
  "title" : "WKInterfaceObjectRepresentable"
}
-->

# WKInterfaceObjectRepresentable

A view that represents a WatchKit interface object.

```
@MainActor @preconcurrency protocol WKInterfaceObjectRepresentable : View where Self.Body == Never
```

## Overview

Use a `WKInterfaceObjectRepresentable` instance to create and manage a
<doc://com.apple.documentation/documentation/WatchKit/WKInterfaceObject> in your SwiftUI
interface. Adopt this protocol in one of your app’s custom instances, and
use its methods to create, update, and tear down your interface object. The
creation and update processes parallel the behavior of SwiftUI views, and
you use them to configure your interface object with your app’s current
state information. Use the teardown process to remove your interface object
cleanly from your SwiftUI. For example, you might use the teardown process
to notify other parts of your app that the interface object is disappearing.

To add your interface object into your SwiftUI interface, create your
`WKInterfaceObjectRepresentable` instance and add it to your SwiftUI
interface. The system calls the methods of your representable instance
at appropriate times to create and update the interface object.

The system doesn’t automatically communicate changes occurring within your
interface object to other parts of your SwiftUI interface. When you want
your interface object to coordinate with other SwiftUI views, you must
provide a [`Coordinator`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/Coordinator) instance to
facilitate those interactions. For example, you use a coordinator to forward
target-action and delegate messages from your interface object to any
SwiftUI views.

## Topics

### Creating and updating the interface object

[`makeWKInterfaceObject(context:)`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/makeWKInterfaceObject(context:))

Creates a WatchKit interface object and configures its initial state.

[`updateWKInterfaceObject(_:context:)`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/updateWKInterfaceObject(_:context:))

Updates the presented WatchKit interface object (and its coordinator) to
the latest configuration.

[`WKInterfaceObjectRepresentable.Context`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/Context)

### Cleaning up the interface object

[`dismantleWKInterfaceObject(_:coordinator:)`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/dismantleWKInterfaceObject(_:coordinator:))

Cleans up the presented WatchKit interface object (and its coordinator)
in anticipation of their removal.

### Providing a custom coordinator object

[`makeCoordinator()`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/makeCoordinator())

Creates the custom instance that you use to communicate changes from
your interface object to other parts of your SwiftUI interface.

[`Coordinator`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/Coordinator)

A type to coordinate with the WatchKit interface object.

[`WKInterfaceObjectType`](/documentation/SwiftUI/WKInterfaceObjectRepresentable/WKInterfaceObjectType)

The type of WatchKit interface object to be presented.



---

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)