---
title: AppIntentControlConfiguration
framework: widgetkit
role: symbol
role_heading: Structure
path: widgetkit/appintentcontrolconfiguration
---

# AppIntentControlConfiguration

The description of a control that uses a custom app intent to provide user-configurable options.

## Declaration

```swift
@MainActor @preconcurrency struct AppIntentControlConfiguration<Configuration, Content> where Configuration : ControlConfigurationIntent, Content : ControlWidgetTemplate
```

## Overview

Overview The following example shows the configuration for a door opener control able to open a door specified by the user. struct DoorOpener: ControlWidget {     var body: some ControlWidgetConfiguration {         AppIntentControlConfiguration(             kind: "com.yourcompany.GarageDoorOpener",             provider: DoorValueProvider()         ) { door in             ControlWidgetToggle(                 door.name,                 isOn: door.isOpen,                 action: ToggleDoor(door)             ) {                 Label(                     $0 ? "Open" : "Closed",                     systemImage: $0 ? "door.open" : "door.closed"                 )             }         }     } } Every control has a unique kind, a string that you choose. You use this string to identify your control when reloading its template with ControlCenter. The value provider is an object that determines a value to use to render your template. This provider receives an intent containing user-editable parameters. The content closure defines the template that WidgetKit needs to render the control. If you create the configuration using a value provider, when WidgetKit invokes the content closure, it passes a value created by the provider’s AppIntentControlValueProvider/previewValue property or AppIntentControlValueProvider/currentValue() function.

## Topics

### Initializers

- [init(kind:intent:content:)](widgetkit/appintentcontrolconfiguration/init(kind:intent:content:).md)
- [init(kind:provider:content:)](widgetkit/appintentcontrolconfiguration/init(kind:provider:content:).md)

## Relationships

### Conforms To

- [ControlWidgetConfiguration](swiftui/controlwidgetconfiguration.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Setup and configuration

- [Creating controls to perform actions across the system](widgetkit/creating-controls-to-perform-actions-across-the-system.md)
- [Adding refinements and configuration to controls](widgetkit/adding-refinements-and-configuration-to-controls.md)
- [StaticControlConfiguration](widgetkit/staticcontrolconfiguration.md)
- [ControlCenter](widgetkit/controlcenter.md)
- [ControlInfo](widgetkit/controlinfo.md)
- [ControlWidgetButton](widgetkit/controlwidgetbutton.md)
- [ControlWidgetToggle](widgetkit/controlwidgettoggle.md)
