---
title: AppIntentConfiguration
framework: widgetkit
role: symbol
role_heading: Structure
path: widgetkit/appintentconfiguration
---

# AppIntentConfiguration

An object describing the content of a widget that uses a custom intent to provide user-configurable options.

## Declaration

```swift
@MainActor @preconcurrency struct AppIntentConfiguration<Intent, Content> where Intent : WidgetConfigurationIntent, Content : View
```

## Mentioned in

Creating a widget extension

## Overview

Overview The following example shows the configuration for a game widget that displays details about a chosen character. struct CharacterDetailWidget: Widget {     var body: some WidgetConfiguration {         AppIntentConfiguration(             kind: "com.mygame.character-detail",             intent: SelectCharacterIntent.self,             provider: CharacterDetailProvider(),         ) { entry in             CharacterDetailView(entry: entry)         }         .supportedFamilies([.systemSmall, .systemMedium, .systemLarge])     } } Every widget has a unique kind, a string that you choose. You use this string to identify your widget when reloading its timeline with WidgetCenter. The intent is a custom App Intent containing user-editable parameters. The timeline provider is an object that determines the timeline for refreshing your widget. Providing future dates for updating your widget allows the system to optimize the refresh process. The content closure contains the SwiftUI views that WidgetKit needs to render the widget. When WidgetKit invokes the content closure, it passes a timeline entry created by the widget provider’s snapshot(for:in:) or timeline(for:in:) method. Modifiers let you specify the families your widget supports, and the details shown when users add or edit their widgets.

## Topics

### Creating a widget configuration

- [init(kind:intent:provider:content:)](widgetkit/appintentconfiguration/init(kind:intent:provider:content:).md)
- [body](swiftui/widgetconfiguration/body-swift.property.md)

### Setting the display name

- [configurationDisplayName(_:)](swiftui/widgetconfiguration/configurationdisplayname(_:)-2c3zv.md)
- [configurationDisplayName(_:)](swiftui/widgetconfiguration/configurationdisplayname(_:)-3sbn4.md)
- [configurationDisplayName(_:)](swiftui/widgetconfiguration/configurationdisplayname(_:)-4v9q.md)

### Setting the description

- [description(_:)](swiftui/widgetconfiguration/description(_:)-1bvuj.md)
- [description(_:)](swiftui/widgetconfiguration/description(_:)-2bfr.md)
- [description(_:)](swiftui/widgetconfiguration/description(_:)-4q9pa.md)

### Setting the supported families

- [supportedFamilies(_:)](swiftui/widgetconfiguration/supportedfamilies(_:).md)

### Handling background network requests

- [backgroundTask(_:action:)](swiftui/widgetconfiguration/backgroundtask(_:action:).md)
- [onBackgroundURLSessionEvents(matching:_:)](swiftui/widgetconfiguration/onbackgroundurlsessionevents(matching:_:)-2e152.md)
- [onBackgroundURLSessionEvents(matching:_:)](swiftui/widgetconfiguration/onbackgroundurlsessionevents(matching:_:)-fw6x.md)

## Relationships

### Conforms To

- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [WidgetConfiguration](swiftui/widgetconfiguration.md)

## See Also

### Configurable widgets

- [Making a configurable widget](widgetkit/making-a-configurable-widget.md)
- [Migrating widgets from SiriKit Intents to App Intents](widgetkit/migrating-from-sirikit-intents-to-app-intents.md)
- [WidgetInfo](widgetkit/widgetinfo.md)
