<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: -",
    "macOS: 13.0.0 -",
    "tvOS: 16.0.0 -",
    "visionOS: -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppIntents",
  "identifier" : "/documentation/AppIntents/OpensIntent",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "App Intents"
    ],
    "preciseIdentifier" : "s:10AppIntents11OpensIntentP"
  },
  "title" : "OpensIntent"
}
-->

# OpensIntent

A result type that indicates your app intent returns another app intent.

```
protocol OpensIntent : IntentResult
```

## Overview

Add this protocol as a return type for an app intent’s [`perform()`](/documentation/AppIntents/AppIntent/perform()) method when the method returns
another app intent to run. When returning the result, you can return any type of app intent that makes sense for the
current action. For example, an app intent to create a photo album might return an app intent to open that album in
the app’s interface. After you return an app intent as a result, the system runs it to perform its action.

The following code shows how to add this protocol to your [`perform()`](/documentation/AppIntents/AppIntent/perform()) method. When returning an
app intent, specify any type that adopts the [`AppIntent`](/documentation/AppIntents/AppIntent) protocol.

```swift
func perform() async throws -> some ReturnsValue<Int> & OpensIntent {
    .result(value: 1, opensIntent: MyCustomAppIntent())
}
```

---

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)