<!--
{
  "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/PredictableIntent",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "App Intents"
    ],
    "preciseIdentifier" : "s:10AppIntents17PredictableIntentP"
  },
  "title" : "PredictableIntent"
}
-->

# PredictableIntent

An interface that indicates the system can suggest the intent as a potential action to run.

```
protocol PredictableIntent : AppIntent
```

## Overview

Add support for the `PredictableIntent` protocol to an app intent to improve the descriptions
that the system displays for your app intent. When making proactive suggestions in interfaces
like the Siri Suggestions widget, the system displays the descriptions you provide using this
protocol. Create descriptions that explain your action clearly and concisely using only the
parameters you find relevant. For example, you might build a description that incorporates only
one of several of the app intent’s parameters, if doing so leads to a more concise phrase.

In your implementation of this protocol, provide one or more [`IntentPrediction`](/documentation/AppIntents/IntentPrediction) types in the
[`predictionConfiguration`](/documentation/AppIntents/PredictableIntent/predictionConfiguration) property. In each intent prediction, convey the purpose
of your app intent using zero or more parameters. The following example shows an app intent
offers a description using only the `name` parameter of the app intent.

```
struct CreateBook: AppIntent, PredictableIntent {
    @Parameter(title: "Book Name")
    var name: String?

    @Parameter(title: "Author", query: AuthorQuery.self)
    var author: AuthorEntity?

    static var predictionConfiguration: some IntentPredictionConfiguration {
        IntentPrediction(parameters: (\Self.$name)) { name in
            DisplayRepresentation(
                title: "Create a book named \(name)"
            )
        }
    }

    @MainActor
    func perform() async throws -> IntentResult<BookEntity> {
        ...
    }
}
```

## Topics

### Specifying the prediction data

[`static var predictionConfiguration: Self.Prediction`](/documentation/AppIntents/PredictableIntent/predictionConfiguration)

A collection of predictions the system can use when it suggests the app intent.

### Getting the supporting types

[`struct IntentPrediction`](/documentation/AppIntents/IntentPrediction)

A prediction for an app intent that the system might display to someone when it’s relevant.

[`associatedtype Prediction : IntentPredictionConfiguration`](/documentation/AppIntents/PredictableIntent/Prediction)

[`protocol IntentPredictionConfiguration`](/documentation/AppIntents/IntentPredictionConfiguration)

An interface that provides the configuration for a single prediction.

[`enum IntentPredictionsBuilder`](/documentation/AppIntents/IntentPredictionsBuilder)

A result builder that allows you to declaratively describe the predictions for an app intent.

## Relationships

### Inherits From

[`AppIntent`](/documentation/AppIntents/AppIntent)

[`PersistentlyIdentifiable`](/documentation/AppIntents/PersistentlyIdentifiable)

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

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

---

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)