<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "macOS: 26.0.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 1.1.0 -",
    "watchOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ExtensionFoundation",
  "identifier" : "/documentation/ExtensionFoundation/AppExtensionPoint/Monitor",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ExtensionFoundation"
    ],
    "preciseIdentifier" : "s:19ExtensionFoundation03AppA5PointV7MonitorC"
  },
  "title" : "AppExtensionPoint.Monitor"
}
-->

# AppExtensionPoint.Monitor

A type you use to discover the app extensions available for your host app to use.

```
final class Monitor
```

## Overview

A host app uses this type to discover the app extensions that are ready for it to use.
This type provides both a static list of current extensions and a way for you to monitor
changes in app extension availability. You can use items from this list to instantiate an
[`AppExtensionProcess`](/documentation/ExtensionFoundation/AppExtensionProcess) type when you’re ready to run the app extension’s code.

Create a `Monitor` in your code and configure it with the extension points you want to
track. When you add an extension point to the monitor, the type adds the associated app
extensions to its [`identities`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/identities) property. The property contains
only the app extensions that are available for your app to use, and doesn’t include
disabled or unapproved app extensions. The following example shows how to use the currently
available app extensions for one of the app’s defined extension points.

```
let someExtensionPoint = AppExtensionPoint.myExampleExtensionPoint

// Get a snapshot of available extensions.
let identitiesSnapshot = try await AppExtensionPoint.Monitor(someExtensionPoint).identities
```

The system manages the list of installed app extensions and updates that list when someone
installs or removes an app. The device owner must also approve any newly installed extensions
before apps can use them. While your app runs, you can observe the [`identities`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/identities)
property and respond to these changes asynchronously. The following code creates a task to
wait on changes to the list of identities:

```
let monitor = AppExtensionPoint.Monitor(appExtensionPoint:someExtensionPoint)

let identitiesUpdates = Observations { monitor.identities }
Task {
  for await update in identitiesUpdates {
    // Handle update.
  }
}
```

To present a UI with the list of enabled and disabled app extensions, use the
<doc://com.apple.documentation/documentation/ExtensionKit/EXAppExtensionBrowserViewController> type.

## Topics

### Creating a monitor

[`init()`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/init())

Creates a new monitor without any extension points.

[`convenience init(appExtensionPoint: AppExtensionPoint) async throws`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/init(appExtensionPoint:))

Creates a new monitor and configures it with the specified extension point.

### Adding and removing extension points

[`func addAppExtensionPoint(AppExtensionPoint) async throws`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/addAppExtensionPoint(_:))

Begins the tracking of app extensions that support the specified extension point.

[`func removeAppExtensionPoint(AppExtensionPoint) async throws`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/removeAppExtensionPoint(_:))

Removes the specified extension point and stops tracking the associated app extensions.

### Getting the available app extensions

[`var identities: [AppExtensionIdentity]`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/identities)

The app extensions currently available to use with the monitored extension points.

### Getting the monitor state

[`var state: AppExtensionPoint.Monitor.State`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/state-swift.property)

The current details about the available, disabled, and unapproved extensions.

[`struct State`](/documentation/ExtensionFoundation/AppExtensionPoint/Monitor/State-swift.struct)

A type that contains a snapshot of a monitor’s state information.

## Relationships

### Conforms To

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

[`Observable`](/documentation/Observation/Observable)

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

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

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

---

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)