App Intents

RSS for tag

Explore the App Intents framework, including how to expose your app's actions and content to Siri, Shortcuts, Spotlight, and other system experiences.

Documentation

Posts under App Intents subtopic

Post

Replies

Boosts

Views

Activity

AppSchema in App Extension best practices
It’s often desirable to implement AppIntents in an app extension, but under AppSchema this is more challenging because “on screen awareness” binds views to app entities. This creates a need to synchronize AppEntity data across the boundary between the main app and the app extension. What are the best practices for managing the required bidirectional data exchange? Are there good sample applications that illustrate how to do this cleanly?
1
0
162
Jun ’26
Async AppEntity creation
For an AppIntent that creates an AppEntity via a long-running async task, does it make sense for the intent’s “perform” method to return a placeholder AppEntity and update it later via a donation, or is it best to make “perform” async and return only once the entity is completely resolved?
1
0
158
Jun ’26
IndexedEntity vs CoreSpotlight
In my app, I use CoreSpotlight to create CSSearchableItems (for Spotlight integration), and I also have a list of AppEntities for Shortcuts support. Are there any big benefits in migrating this setup to using IndexedEntity, with regards to Siri and Apple Intelligence? I also would need to support iOS17 for now. Note that the AppEntities don't map onto any existing AppSchema domains.
2
1
276
Jun ’26
Siri Questions
We have existing Siri functionalities in our app, for customer retrieve their bank or credit cards information. How can we leverage new Siri AI features to our existing function? what is correct approach we can go?
1
0
106
Jun ’26
2nd deprecation of shortcuts action
My app has had shortcuts support since the Siri Intent days, so I have app intents with CustomIntentMigratedAppIntent to make sure old shortcuts continue working. Now I need to make further changes to one such shortcuts actions so I need to make a 2nd app intent to take the place of my older app intent that itself took the place of a siri intent. I need the old app intent to still exist for the sake of old shortcuts but I find that having isDiscoverable = false doesn't hide the 1st app intent so long as it has CustomIntentMigratedAppIntent. Is there any solution or do I have to either break old shortcuts or accept duplicate shortcuts actions to move my app intents forward?
1
0
146
Jun ’26
How to best parse [street] numbers with Siri Shortcut phrases
Hi all, This is a contrived example for an App Intent where I need my phrases to recognize three "regions" and a specific set of numbers associated with those regions. I am having trouble defining the AppEntity and associated AppShortcut phrases that works well with Siri, which is having trouble extracting numbers for some reason... Now the example: Imagine my app provides information surrounding Starbucks establishments on three major thoroughfares in NYC, such as: Broadway & 26, 40, 43, 54, 63, 75, 86, 95 Madison & 44, 50, 84, 96 Lexington & 43, 48, 55, 63, 67, 77, 85, 96 I need AppEntities, AppShortcuts, and friends that best work with Siri when launched with phrases such as: "Show 'example' for Madison and 50th in \(.applicationName)", "Show 'example' on 43rd and Broadway in \(.applicationName)", Long story short, Siri is picking up my phrases well, but then asking me to answer whether the value is 44, 50, 84, or 96, instead of just hearing that I said: "Madison and 50th" I've defined streets like this: public let nycStreetDisplayRepresentations: [DisplayRepresentation] = [ DisplayRepresentation(title: "26", synonyms: ["twenty six", "twenty sixth"]), DisplayRepresentation(title: "40", synonyms: ["forty", "fortieth"]), DisplayRepresentation(title: "43", synonyms: ["forty three", "forty third"]), DisplayRepresentation(title: "48", synonyms: ["forty eight", "forty eighth"]), DisplayRepresentation(title: "50", synonyms: ["fifty", "fiftieth"]), DisplayRepresentation(title: "54", synonyms: ["fifty four", "fifty fourth"]), DisplayRepresentation(title: "55", synonyms: ["fifty five", "fifty fifth", "five five"]), DisplayRepresentation(title: "63", synonyms: ["sixty three", "sixty third"]), DisplayRepresentation(title: "67", synonyms: ["sixty seven", "sixty seventh"]), DisplayRepresentation(title: "75", synonyms: ["seventy five", "seventy fifth"]), DisplayRepresentation(title: "77", synonyms: ["seventy seven", "seventy seventh", "seven seven"]), DisplayRepresentation(title: "84", synonyms: ["eighty four", "eighty fourth"]), DisplayRepresentation(title: "85", synonyms: ["eighty five", "eighty fifth"]), DisplayRepresentation(title: "86", synonyms: ["eighty six", "eighty sixth"]), DisplayRepresentation(title: "95", synonyms: ["ninety five", "ninety fifth"]), DisplayRepresentation(title: "96", synonyms: ["ninety six", "ninety sixth"]) ] And an entity like this: public struct MadisonThings: AppEntity, Identifiable { public let id: Int public var displayRepresentation: DisplayRepresentation { nycStreetDisplayRepresentations[id-1] } public static var typeDisplayRepresentation = TypeDisplayRepresentation( name: "Madison" , synonyms: ["Madison Ave"] ) public static var defaultQuery = MadisonTHingsQuery() } An EntityQuery: public struct MadisonThingsQuery: EntityQuery, EntityStringQuery { ...attempts to find synonyms in the phrase } Intent: public struct ShowMadisonThingsIntent: AppIntent { { @Parameter( title: "Street Number", description: "The street number (e.g., 5, 12, 44)" ) var streetNumber: MadisonThings // I have also tried just plain 'int' to no avail } And finally the shortcuts: static var appShortcuts: [AppShortcut] { return [ AppShortcut( intent: ShowMadisonThingsIntent(), phrases: [ "Show example for Madison and \(\.$streetNumber) in \(.applicationName)", "Show example on \(\.$streetNumber) in \(.applicationName)", ... This should be very simple, I think, and I've tried multiple ways of extracting numbers from my speech, but for some reason this is not working well at all. Thanks for your help!
0
0
76
Jun ’26
AppSchema in App Extension best practices
It’s often desirable to implement AppIntents in an app extension, but under AppSchema this is more challenging because “on screen awareness” binds views to app entities. This creates a need to synchronize AppEntity data across the boundary between the main app and the app extension. What are the best practices for managing the required bidirectional data exchange? Are there good sample applications that illustrate how to do this cleanly?
Replies
1
Boosts
0
Views
162
Activity
Jun ’26
Any debugging tools beyond AppIntentsTesting?
Are there any tools this year to debug why siri can't see a schema-based intent or chooses not to invoke it? Is it possible to see what inputs siri has within the context of the conversation that could cascade into intents of other applications? I've had difficulties with knowing if something should work, or of it's just not possible.
Replies
0
Boosts
0
Views
201
Activity
Jun ’26
Async AppEntity creation
For an AppIntent that creates an AppEntity via a long-running async task, does it make sense for the intent’s “perform” method to return a placeholder AppEntity and update it later via a donation, or is it best to make “perform” async and return only once the entity is completely resolved?
Replies
1
Boosts
0
Views
158
Activity
Jun ’26
IndexedEntity vs CoreSpotlight
In my app, I use CoreSpotlight to create CSSearchableItems (for Spotlight integration), and I also have a list of AppEntities for Shortcuts support. Are there any big benefits in migrating this setup to using IndexedEntity, with regards to Siri and Apple Intelligence? I also would need to support iOS17 for now. Note that the AppEntities don't map onto any existing AppSchema domains.
Replies
2
Boosts
1
Views
276
Activity
Jun ’26
Siri Questions
We have existing Siri functionalities in our app, for customer retrieve their bank or credit cards information. How can we leverage new Siri AI features to our existing function? what is correct approach we can go?
Replies
1
Boosts
0
Views
106
Activity
Jun ’26
2nd deprecation of shortcuts action
My app has had shortcuts support since the Siri Intent days, so I have app intents with CustomIntentMigratedAppIntent to make sure old shortcuts continue working. Now I need to make further changes to one such shortcuts actions so I need to make a 2nd app intent to take the place of my older app intent that itself took the place of a siri intent. I need the old app intent to still exist for the sake of old shortcuts but I find that having isDiscoverable = false doesn't hide the 1st app intent so long as it has CustomIntentMigratedAppIntent. Is there any solution or do I have to either break old shortcuts or accept duplicate shortcuts actions to move my app intents forward?
Replies
1
Boosts
0
Views
146
Activity
Jun ’26
How to best parse [street] numbers with Siri Shortcut phrases
Hi all, This is a contrived example for an App Intent where I need my phrases to recognize three "regions" and a specific set of numbers associated with those regions. I am having trouble defining the AppEntity and associated AppShortcut phrases that works well with Siri, which is having trouble extracting numbers for some reason... Now the example: Imagine my app provides information surrounding Starbucks establishments on three major thoroughfares in NYC, such as: Broadway & 26, 40, 43, 54, 63, 75, 86, 95 Madison & 44, 50, 84, 96 Lexington & 43, 48, 55, 63, 67, 77, 85, 96 I need AppEntities, AppShortcuts, and friends that best work with Siri when launched with phrases such as: "Show 'example' for Madison and 50th in \(.applicationName)", "Show 'example' on 43rd and Broadway in \(.applicationName)", Long story short, Siri is picking up my phrases well, but then asking me to answer whether the value is 44, 50, 84, or 96, instead of just hearing that I said: "Madison and 50th" I've defined streets like this: public let nycStreetDisplayRepresentations: [DisplayRepresentation] = [ DisplayRepresentation(title: "26", synonyms: ["twenty six", "twenty sixth"]), DisplayRepresentation(title: "40", synonyms: ["forty", "fortieth"]), DisplayRepresentation(title: "43", synonyms: ["forty three", "forty third"]), DisplayRepresentation(title: "48", synonyms: ["forty eight", "forty eighth"]), DisplayRepresentation(title: "50", synonyms: ["fifty", "fiftieth"]), DisplayRepresentation(title: "54", synonyms: ["fifty four", "fifty fourth"]), DisplayRepresentation(title: "55", synonyms: ["fifty five", "fifty fifth", "five five"]), DisplayRepresentation(title: "63", synonyms: ["sixty three", "sixty third"]), DisplayRepresentation(title: "67", synonyms: ["sixty seven", "sixty seventh"]), DisplayRepresentation(title: "75", synonyms: ["seventy five", "seventy fifth"]), DisplayRepresentation(title: "77", synonyms: ["seventy seven", "seventy seventh", "seven seven"]), DisplayRepresentation(title: "84", synonyms: ["eighty four", "eighty fourth"]), DisplayRepresentation(title: "85", synonyms: ["eighty five", "eighty fifth"]), DisplayRepresentation(title: "86", synonyms: ["eighty six", "eighty sixth"]), DisplayRepresentation(title: "95", synonyms: ["ninety five", "ninety fifth"]), DisplayRepresentation(title: "96", synonyms: ["ninety six", "ninety sixth"]) ] And an entity like this: public struct MadisonThings: AppEntity, Identifiable { public let id: Int public var displayRepresentation: DisplayRepresentation { nycStreetDisplayRepresentations[id-1] } public static var typeDisplayRepresentation = TypeDisplayRepresentation( name: "Madison" , synonyms: ["Madison Ave"] ) public static var defaultQuery = MadisonTHingsQuery() } An EntityQuery: public struct MadisonThingsQuery: EntityQuery, EntityStringQuery { ...attempts to find synonyms in the phrase } Intent: public struct ShowMadisonThingsIntent: AppIntent { { @Parameter( title: "Street Number", description: "The street number (e.g., 5, 12, 44)" ) var streetNumber: MadisonThings // I have also tried just plain 'int' to no avail } And finally the shortcuts: static var appShortcuts: [AppShortcut] { return [ AppShortcut( intent: ShowMadisonThingsIntent(), phrases: [ "Show example for Madison and \(\.$streetNumber) in \(.applicationName)", "Show example on \(\.$streetNumber) in \(.applicationName)", ... This should be very simple, I think, and I've tried multiple ways of extracting numbers from my speech, but for some reason this is not working well at all. Thanks for your help!
Replies
0
Boosts
0
Views
76
Activity
Jun ’26