App Intents
Expose app actions and entities to Siri, Shortcuts, Spotlight search, interactive widgets, Control Center, and Apple Intelligence using the AppIntents framework. Targets Swift 6.3 / iOS 26+.
Contents
Triage Workflow
- Select core actions: Expose 1–3 high-value user tasks that make sense outside the app.
- Define AppEntity models: Create identifiable shadow models (
AppEntity) for domain data referenced by the intent.
- Implement AppIntent: Define parameters with
@Parameter, implement perform() async throws -> some IntentResult.
- Register voice phrases: Provide natural voice invocations with
AppShortcutsProvider.
- Verify system surface: Test discovery in Shortcuts, Spotlight search, and widget configuration.
System Surface Integration Matrix
| System Surface |
Protocol / Attribute |
Purpose |
| Siri & Shortcuts |
AppIntent |
Direct voice and shortcut automation |
| Configurable Widgets |
WidgetConfigurationIntent |
Supplies parameters to widget timelines |
| Control Center |
ControlConfigurationIntent |
Powers Control Center buttons and toggles |
| Spotlight Search |
IndexedEntity |
Indexes domain items into on-device Spotlight |
| Apple Intelligence |
@AppIntent(schema:) |
Assistant semantic reasoning and tooling |
| Interactive Snippets |
SnippetIntent |
In-line system confirmation views (iOS 26+) |
AppEntity and EntityQuery
Expose domain data to intents using AppEntity:
struct OrderEntity: AppEntity {
static var defaultQuery = OrderQuery()
static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Order")
var id: UUID
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(orderNumber)")
}
}
Implement EntityQuery to resolve identifiers (entities(for:)) and provide suggested choices (suggestedEntities()).
AppShortcuts and Voice Phrases
Expose voice triggers without requiring user setup via AppShortcutsProvider:
- Register app shortcut phrases using
\(.applicationName) token.
- Provide clean fallback phrases for Siri matching.
Route by Task
- For
@Parameter types, AppEntity declarations, and EntityQuery variants, read Parameters and Entity Queries.
- For widget controls, interactive snippets, and Lock Screen integrations, read System Surfaces.
- For Siri voice matching, confirmation dialogs, and authentication policies, read Assistant Focus and Intent Behavior.
- For Spotlight search indexing, deep link routing, and
IndexedEntity, read URL and Spotlight Integration.
Common Mistakes
- Performing UI navigation or view presentation directly inside
perform() without returning an OpenURLIntent or navigation result.
- Forgetting to provide an
EntityQuery for custom @Parameter entity types, breaking Shortcuts parameter selection.
- Hardcoding the app name in
AppShortcut phrases instead of using \(.applicationName).
- Running long network calls in
perform() without checking Task.isCancelled or providing progress dialogs.
- Omitting
typeDisplayRepresentation on AppEntity conformances.
Review Checklist
References
- Parameters and entity query implementations
- System surfaces: widgets, controls, and snippets
- Assistant focus, voice dialogs, and intent behavior
- URL and Spotlight search indexing
- App Intents documentation
- AppIntent
1---2name: app-intents3description: Implement App Intents for Siri, Shortcuts, Spotlight, widgets, Control Center, and Apple Intelligence on iOS. Covers AppIntent actions, AppEntity and EntityQuery models, AppShortcutsProvider phrases, IndexedEntity Spotlight indexing, WidgetConfigurationIntent, SnippetIntent, and assistant schemas. Use when exposing app actions or entities to system surfaces.4---56# App Intents78Expose app actions and entities to Siri, Shortcuts, Spotlight search, interactive widgets, Control Center, and Apple Intelligence using the `AppIntents` framework. Targets Swift 6.3 / iOS 26+.910## Contents1112- [Triage Workflow](#triage-workflow)13- [System Surface Integration Matrix](#system-surface-integration-matrix)14- [AppEntity and EntityQuery](#appentity-and-entityquery)15- [AppShortcuts and Voice Phrases](#appshortcuts-and-voice-phrases)16- [Route by Task](#route-by-task)17- [Common Mistakes](#common-mistakes)18- [Review Checklist](#review-checklist)19- [References](#references)2021## Triage Workflow22231. **Select core actions**: Expose 1–3 high-value user tasks that make sense outside the app.242. **Define AppEntity models**: Create identifiable shadow models (`AppEntity`) for domain data referenced by the intent.253. **Implement AppIntent**: Define parameters with `@Parameter`, implement `perform() async throws -> some IntentResult`.264. **Register voice phrases**: Provide natural voice invocations with `AppShortcutsProvider`.275. **Verify system surface**: Test discovery in Shortcuts, Spotlight search, and widget configuration.2829## System Surface Integration Matrix3031| System Surface | Protocol / Attribute | Purpose |32|---|---|---|33| Siri & Shortcuts | `AppIntent` | Direct voice and shortcut automation |34| Configurable Widgets | `WidgetConfigurationIntent` | Supplies parameters to widget timelines |35| Control Center | `ControlConfigurationIntent` | Powers Control Center buttons and toggles |36| Spotlight Search | `IndexedEntity` | Indexes domain items into on-device Spotlight |37| Apple Intelligence | `@AppIntent(schema:)` | Assistant semantic reasoning and tooling |38| Interactive Snippets | `SnippetIntent` | In-line system confirmation views (iOS 26+) |3940## AppEntity and EntityQuery4142Expose domain data to intents using `AppEntity`:43```swift44struct OrderEntity: AppEntity {45 static var defaultQuery = OrderQuery()46 static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Order")4748 var id: UUID49 var displayRepresentation: DisplayRepresentation {50 DisplayRepresentation(title: "\(orderNumber)")51 }52}53```5455Implement `EntityQuery` to resolve identifiers (`entities(for:)`) and provide suggested choices (`suggestedEntities()`).5657## AppShortcuts and Voice Phrases5859Expose voice triggers without requiring user setup via `AppShortcutsProvider`:60- Register app shortcut phrases using `\(.applicationName)` token.61- Provide clean fallback phrases for Siri matching.6263## Route by Task6465- For `@Parameter` types, `AppEntity` declarations, and `EntityQuery` variants, read [Parameters and Entity Queries](references/parameters-and-entity-queries.md).66- For widget controls, interactive snippets, and Lock Screen integrations, read [System Surfaces](references/system-surfaces.md).67- For Siri voice matching, confirmation dialogs, and authentication policies, read [Assistant Focus and Intent Behavior](references/assistant-focus-and-intent-behavior.md).68- For Spotlight search indexing, deep link routing, and `IndexedEntity`, read [URL and Spotlight Integration](references/url-and-spotlight-integration.md).6970## Common Mistakes7172- Performing UI navigation or view presentation directly inside `perform()` without returning an `OpenURLIntent` or navigation result.73- Forgetting to provide an `EntityQuery` for custom `@Parameter` entity types, breaking Shortcuts parameter selection.74- Hardcoding the app name in `AppShortcut` phrases instead of using `\(.applicationName)`.75- Running long network calls in `perform()` without checking `Task.isCancelled` or providing progress dialogs.76- Omitting `typeDisplayRepresentation` on `AppEntity` conformances.7778## Review Checklist7980- [ ] Intent conforms to `AppIntent` or specialized surface protocol81- [ ] Parameters have clear titles and valid default/suggested values82- [ ] Entities implement `EntityQuery` with `entities(for:)` and `suggestedEntities()`83- [ ] `perform()` returns an appropriate `IntentResult` (e.g. `.result()`, `.result(dialog:)`)84- [ ] Shortcuts phrases use `\(.applicationName)` macro85- [ ] Destructive actions declare `requestConfirmation()` before executing86- [ ] Sensitive actions require device authentication where appropriate8788## References8990- [Parameters and entity query implementations](references/parameters-and-entity-queries.md)91- [System surfaces: widgets, controls, and snippets](references/system-surfaces.md)92- [Assistant focus, voice dialogs, and intent behavior](references/assistant-focus-and-intent-behavior.md)93- [URL and Spotlight search indexing](references/url-and-spotlight-integration.md)94- [App Intents documentation](https://sosumi.ai/documentation/appintents)95- [AppIntent](https://sosumi.ai/documentation/appintents/appintent)