<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -",
    "macCatalyst: -",
    "macOS: 14.0.0 -",
    "visionOS: 26.0.0 -",
    "watchOS: 10.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "WidgetKit",
  "identifier" : "/documentation/WidgetKit/AppIntentRecommendation",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "WidgetKit"
    ],
    "preciseIdentifier" : "s:9WidgetKit23AppIntentRecommendationV"
  },
  "title" : "AppIntentRecommendation"
}
-->

# AppIntentRecommendation

An object that describes a recommended intent configuration for a
user-customizable widget.

```
struct AppIntentRecommendation<Intent> where Intent : WidgetConfigurationIntent
```

## Overview

By adding a custom App Intent to your project and using an
[`AppIntentTimelineProvider`](/documentation/WidgetKit/AppIntentTimelineProvider), you allow users to configure widgets to show
data that’s most relevant to them. Some platforms don’t have a dedicated
user interface to configure all of your intent parameters. For example,
watchOS doesn’t offer a dedicated user interface to configure data that
appears on a complication. Use intent recommendations in watchOS to offer
preconfigured complications that show data that’s most relevant to the
user.

> Note: On platforms that offer a dedicated user interface for configuring
> widgets — for example, iOS or macOS — `AppIntentRecommendation` is
> inactive.

For example, say you develop a game app that allows users to view their in-game character.
With intent recommendations, you can recommend an intent configuration for
a watch complication that displays character information.

The following example shows a function to create a list of recommended configurations for a game
widget that shows current energy levels for a game character.

```
public func recommendations() -> [AppIntentRecommendation<DynamicCharacterConfiguration>] {
    CharacterDetail.availableCharacters.map { character in
        let intent = DynamicCharacterConfiguration()
        intent.hero = Hero(identifier: character.name, display: character.name)
        return AppIntentRecommendation(intent: intent, description: Text(character.name))
    }
}
```

## Topics

### Creating a recommended widget configuration

[`init(intent:description:)`](/documentation/WidgetKit/AppIntentRecommendation/init(intent:description:)-2p4dh)

Creates a recommended configuration for a widget on platforms that
don’t offer a dedicated user interface to customize widgets with a localized description.

[`init(intent:description:)`](/documentation/WidgetKit/AppIntentRecommendation/init(intent:description:)-65igj)

Creates a recommended configuration for a widget on platforms that
don’t offer a dedicated user interface to customize widgets.

[`init(intent:description:)`](/documentation/WidgetKit/AppIntentRecommendation/init(intent:description:)-7zn32)

Creates a recommended configuration for a widget on platforms that
don’t offer a dedicated user interface to customize widgets.



---

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)