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

# IntentConfiguration

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

```
@MainActor @preconcurrency struct IntentConfiguration<Intent, Content> where Intent : INIntent, Content : View
```

## 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 {
        IntentConfiguration(
            kind: "com.mygame.character-detail",
            intent: SelectCharacterIntent.self,
            provider: CharacterDetailProvider(),
        ) { entry in
            CharacterDetailView(entry: entry)
        }
        .configurationDisplayName("Character Details")
        .description("Displays a character's health and other details")
        .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`](/documentation/WidgetKit/WidgetCenter).

The `intent` is a custom SiriKit intent definition 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
[`getSnapshot(for:in:completion:)`](/documentation/WidgetKit/IntentTimelineProvider/getSnapshot(for:in:completion:)) or
[`getTimeline(for:in:completion:)`](/documentation/WidgetKit/IntentTimelineProvider/getTimeline(for:in:completion:))
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:)`](/documentation/WidgetKit/IntentConfiguration/init(kind:intent:provider:content:))

Creates a configuration for a widget by using a custom intent
definition to provide user-configurable options.

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/body-swift.property>

### Setting the display name

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/configurationDisplayName(_:)-2c3zv>

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/configurationDisplayName(_:)-3sbn4>

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/configurationDisplayName(_:)-4v9q>

### Setting the description

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/description(_:)-1bvuj>

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/description(_:)-2bfr>

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/description(_:)-4q9pa>

### Setting the supported families

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/supportedFamilies(_:)>

### Handling background network requests

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/backgroundTask(_:action:)>

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/onBackgroundURLSessionEvents(matching:_:)-2e152>

  <doc://com.apple.documentation/documentation/SwiftUI/WidgetConfiguration/onBackgroundURLSessionEvents(matching:_:)-fw6x>



---

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)