Use when implementing App Shortcuts for instant Siri/Spotlight availability, configuring AppShortcutsProvider, adding suggested phrases, or debugging shortcuts not appearing - covers complete App Shortcuts API for iOS 16+
Comprehensive guide to App Shortcuts framework for making your app's actions instantly available in Siri, Spotlight, Action Button, Control Center, and other system experiences. App Shortcuts are pre-configured App Intents that work immediately after app install—no user setup required.
Key distinction App Intents are the actions; App Shortcuts are the pre-configured "surface" that makes those actions instantly discoverable system-wide.
Use this skill when:
Do NOT use this skill for:
| Aspect | App Intent | App Shortcut |
|---|---|---|
| Discovery | Must be found in Shortcuts app | Instantly available after install |
| Configuration | User configures in Shortcuts | Pre-configured by developer |
| Siri activation | Requires custom phrase setup | Works immediately with provided phrases |
| Spotlight | Requires donation or IndexedEntity | Appears automatically |
| Action button | Not directly accessible | Can be assigned immediately |
| Setup time | Minutes per user | Zero |
When to use App Shortcuts Every app should provide App Shortcuts for core functionality. They dramatically improve discoverability with zero user effort.
Required conformance Your app must have exactly one type conforming to AppShortcutsProvider.
struct MyAppShortcuts: AppShortcutsProvider {
// Required: Define your shortcuts
@AppShortcutsBuilder
static var appShortcuts: [AppShortcut] { get }
// Optional: Branding color
static var shortcutTileColor: ShortcutTileColor { get }
// Optional: Dynamic updates
static func updateAppShortcutParameters()
// Optional: Negative phrases (iOS 17+)
static var negativePhrases: [NegativeAppShortcutPhrase] { get }
}
Platform support iOS 16+, iPadOS 16+, macOS 13+, tvOS 16+, watchOS 9+
Associates an AppIntent with spoken phrases and metadata.
AppShortcut(
intent: StartMeditationIntent(),
phrases: [
"Start meditation in \(.applicationName)",
"Begin mindfulness with \(.applicationName)"
],
shortTitle: "Meditate",
systemImageName: "figure.mind.and.body"
)
Components:
intent — The App Intent to executephrases — Spoken/typed phrases for Siri/SpotlightshortTitle — Short label for Shortcuts app tilessystemImageName — SF Symbol for visual representationString interpolation Phrases use \(.applicationName) to dynamically include your app's name.