SiriKit Extension still needed with AppIntents?

I have followed the SoupChef example in migrating Custom Intents from SiriKit to AppIntents. However, we only require one iOS release back, so we can require iOS 17. Thus, I eliminated everything that was strictly for backwards compatibility, most notably the SiriKit Extension that required enormous amounts of code to try to coordinate with the real app which worked poorly anyway.

I tested for example that an NFC tag Automation created in Shortcuts works to execute an AppIntent while the app is backgrounded.

I am now receiving a beta report that indicates someone trying to execute one of our migrated AppIntents from their HomePod is not working, and they say it used to work sometimes (not all the time). I'm sure most such cases used to require the SiriKit Extension in the old SiriKit world. I am terrified that I may need to rebuild that monster once again when the new (to me) AppIntent API seemed so beautiful without it and seemed to work without it. The AppIntent API documentation seems to indicate that SiriKit Extensions are no longer related or required. What is the truth here? Do I need to re-implement everything twice in the SiriKit Extension like a barbarian, or can we live in the new world with AppIntents? Thank you.

Answered by DTS Engineer in 796210022

There are two independent items here that you're mixing together — SiriKit vs. App Intents, and using extensions or not. Let's separate them.

Both SiriKit and App Intents have the ability to use extension points, but they are different extension points entirely. A good thing to check here is to add a new target to an Xcode project, and look for each. Since App Intents is the recommended upgrade path to the SiriKit framework, if you need to keep an extension point, you would create a new extension point for App Intents, rather than reusing your prior extension point from SiriKit.

Both App Intents and SiriKit allow you to make a choice of whether to use an app extension to deliver the functionality to your customers, or letting the main app launch in either the background or foreground. (In the early days of SiriKit, an app extension was required, and then the framework relaxed that requirement as it evolved over the years, in case you don't have the history of why your app used an extension.)

There are good reasons for both using an extension, and not using an extension, and it comes down to what you're trying to do with your intent. We have a nice summary of the benefits to each approach in a WWDC22 session that you can review.

— Ed Ford,  DTS Engineer

Accepted Answer

There are two independent items here that you're mixing together — SiriKit vs. App Intents, and using extensions or not. Let's separate them.

Both SiriKit and App Intents have the ability to use extension points, but they are different extension points entirely. A good thing to check here is to add a new target to an Xcode project, and look for each. Since App Intents is the recommended upgrade path to the SiriKit framework, if you need to keep an extension point, you would create a new extension point for App Intents, rather than reusing your prior extension point from SiriKit.

Both App Intents and SiriKit allow you to make a choice of whether to use an app extension to deliver the functionality to your customers, or letting the main app launch in either the background or foreground. (In the early days of SiriKit, an app extension was required, and then the framework relaxed that requirement as it evolved over the years, in case you don't have the history of why your app used an extension.)

There are good reasons for both using an extension, and not using an extension, and it comes down to what you're trying to do with your intent. We have a nice summary of the benefits to each approach in a WWDC22 session that you can review.

— Ed Ford,  DTS Engineer

SiriKit Extension still needed with AppIntents?
 
 
Q