WWDC 22 Digital Design Lounge — Design App Shortcuts

Design App Shortcuts - WWDC22 - Videos - Apple Developer
Learn how you can surface great features from your app directly in Siri, Spotlight, and the Shortcuts app. We’ll introduce you to App...


Do you have any personal favorites among the new capabilities for Shortcuts?

I’m really excited about the ability to start Live Activities using App Shortcuts!

I’m really excited about dynamic parameters in the invocation phrase. I think it’s going to open up a whole new world of flexible, powerful, shortcuts.

Yeah, Live Activities will be super fun. Lots of opportunities around those.

I’m also really excited about the new Siri Suggestions integration in Spotlight.


Is there documentation about all the option types for open ended requests?  I was curious about `Person` in particular.

Here’s the documentation on IntentPerson: https://developer.apple.com/documentation/appintents/intentperson.

Siri has built in, baseline NLU for many of these types. For example, for an integer, the user might say “one dozen”. Siri will parse this as 12 for you automatically.

Similarly, for IntentPerson, Siri has some baseline understanding of what is a first name, what is a last name, etc. Siri will attempt to construct an IntentPerson for you if you do an open ended value prompt for an IntentPerson type.

Is it still possible to have user inputs in initial Siri request for media requests?

Yes, you can do an open-ended request, disambiguation, or parameter confirmation before completing your intent.


I'm wondering what the maximum (sensible) number of values is for a parameter. In my app, users attach notes to people. It'd be great to have a shortcut for "New note for <Person Name>"... but an active user could easily have 1,000 or more people in the app that the note could be attached to... which it sounds like isn't the kind of "fixed list" you have in mind?

So... the 20 top favorite people, or similar?

Right, for lists of this size and for a list of contacts, you would want to use an open-ended request, which would also allow you to use a person entity.

It wouldn’t be suitable for a dynamic parameter, because those contact names would become an array of strings, which limits the flexibility people can use to ask for them.

Reading in the other thread about IntentPerson parameters. For an app that has access to CNContacts, is there a way (other than matching on name) to link an IntentPerson to the CNContact that presumably underlies the source of that information?

Right now you’ll need to match on name. Please file a feedback request! We’d like to hear about your use case and look into this more.

You mentioned that you’re excited for dynamic parameters. Are there specific use cases that you can imagine being enabled here?

I’m excited about starting a Roomba in a specific room in my house!

Yeah, that’s a fun one. Oh yeah, that’s nice as a Siri Suggestion too.

Since keeping shortcuts straightforward is such a high priority, I love that dynamic parameters allow us to skip a step. For example, clean my <room name>, reorder <favorite coffee>, and of course, start <meditation type> 🙏🏻

(Instead of needing to prompt for that information as a second step)

Yeah, I could see my favorite surf app using this to allow me to view conditions from a list of my favorite beaches.


Could I create an iOS app that once downloaded from the App Store is never really meant to be opened by the user?  Instead it would include App Intents, and primarily be accessed via Siri with just dialogs & custom snippets?

It’s an interesting question… It’s a paradigm we’ve seen on Apple Watch with watch apps. Some watch apps are really just ways to deliver complications to the watch face, and rich notifications on the watch itself.

However, those watch apps also display the information that is delivered in the complication and notification.

So anyway, the app matters 💪

But technically yes, you can build an app that’s focused on providing App Shortcuts, but when someone taps on your app icon you’ll still have to have a viable experience that explains what it does.Also, if you support dynamic parameters, your app will need to be be opened for you to update the order.

So I could make an app that’s intended primarily as a container for Siri first App Intent interactions, and the app itself could just provide some context that explains the Siri functionality?

You can build that, but if you want to manage your dynamic parameter and people are never opening your app (because it doesn’t have functionality in itself), you won’t be able to re-order or update your parameter values.

System Defaults

How to create a timer shortcut with shorter phrase for our app if the system already have one, for example, Set a timer for 5 mins, how can we tell the system to use our app to setup the timer instead of the system clock app.

Notably, App Shortcuts will need to include your app name, so that will help distinguish your phrases from standard Siri phrases. (i.e. “start a <app name> timer.“)

With a particularly strong brand, you may even be able to skip the word timer. (i.e. “Start a Super Special Countdown”, assuming “Super Special Countdown is the app name).

A note though! You wouldn’t want to use “for <time value>” in your invocation phrase, because there are infinite possible replies. That’s better as an open-ended request, for a Duration.

I want to check I understand this. Is the distinction here that “open-ended requests” are always by definition follow-up requests after the invocation phrase? I wasn’t clear on this till now.

There are a few different types of follow-up requests after the invocation phrase, and open-ended requests are one of them. Others are parameter confirmation, intent confirmation, and disambiguation.

But these are distinct from the dynamic parameter that you provide as part of your initial invocation.

Show Comments