<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: -",
    "macOS: 13.0.0 -",
    "visionOS: 26.0.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "WidgetKit",
  "identifier" : "/documentation/WidgetKit/IntentRecommendation",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "WidgetKit"
    ],
    "preciseIdentifier" : "s:9WidgetKit20IntentRecommendationV"
  },
  "title" : "IntentRecommendation"
}
-->

# IntentRecommendation

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

```
struct IntentRecommendation<T> where T : INIntent
```

## Overview

By adding a custom SiriKit intent definition to your project and using an
[`IntentTimelineProvider`](/documentation/WidgetKit/IntentTimelineProvider), 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 — `IntentRecommendation` 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() -> [IntentRecommendation<DynamicCharacterSelectionIntent>] {
    return CharacterDetail.availableCharacters.
        map { character in
            let hero = Hero(identifier: character.name, display: character.name)
            let intent = DynamicCharacterSelectionIntent()
            intent.hero = hero

            return IntentRecommendation(intent: intent, description: Text(character.name))
        }
    }
```

## Topics

### Creating a Recommended Widget Configuration

[`init(intent:description:)`](/documentation/WidgetKit/IntentRecommendation/init(intent:description:)-1zh33)

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/IntentRecommendation/init(intent:description:)-4epo2)

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/IntentRecommendation/init(intent:description:)-6v7dj)

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)