Skip to content

Design App Intents for system experiences

App Intents power system experiences in controls, Spotlight, Siri, and more. Find out how to identify the functionality that’s best for App Intents, and how to use parameters to make these intents flexible. Learn how to use App Intents to allow people to take action outside your app, and see examples of when to navigate into your app to show contextual information.

Key Takeaways

  • 🕵️ Create app intents to expose your app to spotlight, widgets, controls, Siri, Shortcuts and the action button

  • 🎛️ Use parameters for flexibility

  • ✍️ Strive for readability

  • 🔦 Offer toggles

  • 👀 Open the app where appropriate

Linking a shortcut to the action button
Examples of system app intents
Screenshot of a slide reading \"App Intents contain all the tasks your app can do.\"
Screenshot of a slide showing best practices for naming app intents

What should be an app intent?

Important

Where previously Apple recommended creating an app intent for each “habitual action” of an app, this guideline has broadened in iOS 18 to recommend that “anything your app does should be an app intent.”

When designing app intents, use these verbs as a starting point:

  • Get

  • Edit

  • Create

  • Delete

  • Open

Avoid creating multiple app intents that do similar things. Combine similar functionality into a single, flexible app intent and use a parameter to differentiate behaviour.

Avoid app intents that simply perform a UI action e.g. “Swipe down” or “Cancel”. Instead, perform the underlying action e.g. “Delete draft”.

Create app intents for audio playback, recording and live activities so that these tasks can be triggered from the background without further interaction.

Structuring app intents

Parameter types

Keep app intent parameter summaries readable by carefully choosing a verb and naming parameter options to fit with their verb as a sentence.

Parameters can be built-in parameters (numbers, text, dates, …), custom static parameters aka app enums (e.g. tabs of the app) or dynamic parameter aka app entities that update over time (e.g. notes folders).

Optional/required parameters

Prefer optional parameters over required parameters. Optional parameters allow the app intent to perform a useful, default behaviour even if the user doesn’t provide the parameter.

If your parameter is required, write a concise, clear follow-up question for the user to provide it.

Toggles

If your app intent allows switching between two states (e.g. Flashlight can either be “on” or “off”), always provide “Toggle” as the default parameter so that the user can easily switch between states without using a parameter.

A toggle app intent for the Flashlight app

Open Intents

Important

In iOS 18, Apple no longer discourages bringing an app to the foreground as part of an app intent. Apple now recommends foregrounding an app to show the effect of an app intent (e.g. “Create new Freeform board”) or to navigate to a view in your app (e.g. “Open Stopwatch”).

The toggle “Open When Run” of an action allows users to opt-out of this behaviour, if they want to perform multiple actions per shortcut.

Tip

For more information on how to create App Intents check out the session: doc:WWDC22-10032-Dive-into-App-Intents.

Missing anything? Corrections? Contributions are welcome!

Written By

lorin-vr
lorin-vr
2 notes contributed
alexkaessner
alexkaessner
9 notes contributed