How App Intents Replaces SiriKit in iOS 16

Introduced in iOS 16, Apple's App Intents framework modernizes how applications expose functionality to Siri and the Shortcuts app by replacing SiriKit custom intents. This transition shifts intent configuration from rigid property lists and separate extension processes to a Swift-native, declarative approach. By providing programmatic type safety, running directly in the main app process, and eliminating manual user donations, App Intents dramatically simplifies development and improves performance across system surfaces.

From Code Generation to Declarative Swift

Prior to iOS 16, developers defined custom actions using .intentdefinition files in Xcode. This approach required Xcode to generate Objective-C or Swift code in the background, frequently causing synchronization errors, build delays, and rigid data modeling.

App Intents replaces this workflow entirely with declarative Swift protocols:

  • AppIntent: Replaces the custom intent definition by defining the action and its execution logic directly in code through the perform() method.
  • AppEntity: Replaces custom intent types, representing structured data (such as an item, account, or document) that Siri and Shortcuts can query.
  • EntityQuery: Replaces SiriKit's dynamic option generation, providing the system with a unified interface to search, resolve, and display entities dynamically.

Unified Process Architecture

SiriKit custom intents required dedicated app extensions—specifically an Intents Extension and an optional Intents UI Extension. When an intent ran, iOS launched this separate extension process, incurring memory overhead, inter-process communication delays, and complex data-sharing requirements via App Groups.

App Intents executes directly within the main application process. This direct execution gives actions immediate access to the app's in-memory state, shared databases, and existing architecture without spinning up an auxiliary process.

Automated Discoverability via App Shortcuts

Under SiriKit, custom intents were not immediately available in the Shortcuts app until the user performed the action within the app and the developer programmatically "donated" the intent to the system.

The App Intents framework removes the donation requirement through AppShortcutsProvider. Developers can declare ready-to-use Shortcuts and Siri voice triggers directly in code. As soon as the app is installed, these actions appear in the Shortcuts app, Spotlight, and Siri voice queries automatically, without requiring prior user interaction.

Modern Concurrency and Dialog Handling

App Intents was built specifically for modern Swift, leveraging async/await throughout its lifecycle:

  • Intent execution logic in the perform() method runs natively with Swift concurrency.
  • Clarification requests, parameter confirmations, and system dialogs are handled programmatically using requestConfirmation() and requestValue() within the same execution block, replacing the complex multi-step resolution phases (resolve, confirm, handle) used by SiriKit.
  • Responses can return native SwiftUI views directly to the system UI, eliminating the need to maintain an entire Intents UI extension.

Deprecation and Migration

While SiriKit remains in place for system-defined domains—such as VoIP calling, messaging, and media playback—custom intents modeled via .intentdefinition files are deprecated in favor of App Intents. Migrating requires mapping old parameter models to AppEntity types and transferring execution logic from SiriKit handler classes to the perform() methods of AppIntent structs.