Teach Siri how to interact with your Flutter app

Part 1: The basics

Teach Siri how to interact with your Flutter app – Part 1: The basics

Your Flutter app may be well-designed, but how do your users learn about its capabilities? It's not common for users to dedicate time and effort to discovering an app's less obvious features. However, there's a solution to this challenge. This article will show you a method for unveiling your app's functionality with just a single button click, regardless of its complexity.

This is Part 1 of an article series that will guide you on making your Flutter app discoverable by Siri, allowing you to leverage the free advertising space throughout iOS components and, in the near future, via Apple Intelligence. This guide will cover the basics of teaching Siri to interact with your Flutter apps and provide Siri suggestions. Whether you're working with a Flutter company or exploring Flutter app development independently, this tutorial will get you started. Stay tuned for more!

Before you get started

Before diving into Siri integration with Flutter, you should set up your development environment for Flutter iOS integration. To ensure your app is accessible to Siri's suggestions, it is essential to begin by outlining the features and content you wish to make available from the app's cold start. This can involve directing users to a specific content detail page or initiating a particular app action, such as sending a predefined message to a specific contact. However, this requires careful consideration of your app's architecture. Here are the key points to keep in mind:

Ensure stateless navigation

It is necessary to make sure that the app can easily navigate to the intended screen right from the beginning.  The app should be able to navigate to a specific screen without any prior assumptions about the previous state of the app.. This means that the app should not presume e.g. that the user has already opened a content list screen before trying to access the details screen.

If your app requires authentication to display content selected from Siri's suggestion, it is best to handle the sign-in and sign-up processes in a way that the app automatically remembers and navigates the user to the original location of the action once completed. This will help prevent the user from feeling lost or confused.

These behaviors are also necessary to support deeplinking, making this guide  a good starting point.

Find crucial actions

Although there are no restrictions on the number of actions, remember to prioritize those that provide the most value to the user when exposing them to Siri's suggestions. Avoid overwhelming the user with Siri’s suggestions on trivial actions, such as opening your app's settings, as this may cause them to miss out on your app’s best features and content. It’s best to stick to actions that are unique to your app.

Step-by-Step Guide to Flutter iOS Integration

To make sure your app's features and content are accessible to Siri's suggestions, we will start with the most straightforward approach: adding items to the Spotlight search index. In subsequent parts of this article series, we will explore further integrations with iOS, Siri, Shortcuts, and Apple Intelligence.

The flutter_core_spotlight plugin, our focus for today, will make it easy to enable Siri to interact with your app.

Set up dependencies

To enable your app’s actions to be indexed by Spotlight search, you need to add the flutter pub and flutter_core_spotlight packages to your Flutter project. It will give you access to the FlutterCoreSpotlight.instance

Pick and donate app’s actions

Once the dependencies are set up, you can modify the Spotlight index on the fly to add app actions. For example, when a user reads through a specific article in your app, you may add a suggestion (“You may also like”) that links to another article with similar content.

To add items to the Spotlight index, you’ll create FlutterSpotlightItem instances with:

  • An app-wide unique identifier

  • An app-specific domain identifier matching your bundle id

  • An attribute title

  • And attribute description

Once created, the items can be added to the Spotlight index via:

await FlutterCoreSpotlight.instance.indexSearchableItems([
  FlutterSpotlightItem(
    //...
  ),
  //...
]);

Once the Spotlight index is updated, and the user picks the action provided, Siri will also suggest them to the user in the future:

siri action suggestions on iphone screen Teach Siri how to interact with your Flutter app

Siri’s suggestions are based on factors such as time of day, user behavior, position, location, and many more. This will make your app more familiar and useful to the user.

By default, tapping on the Spotlight index item will open your app. However, you can customize the specific action by using FlutterCoreSpotlight.instance.configure and provide the action to take based on the user's activity. In order to do so, use:

FlutterCoreSpotlight.instance.configure(
    onSearchableItemSelected: (userActivity) {
  switch (userActivity?.uniqueIdentifier) {
    case 'article/123': // navigate to the article
  }
});

By integrating Siri with your Flutter app, you can significantly enhance user discoverability and engagement by surfacing your app's features within iOS. By strategically selecting and indexing key actions, you ensure that users are exposed to the most valuable and unique aspects of your app. 

Siri Integration with Flutter for Enhanced User Experience

Siri integration with Flutter opens up a new world of possibilities for iOS apps. Whether you’re looking to boost user engagement or create a smoother user experience, Flutter Siri Shortcuts and Flutter app Siri suggestions are essential tools. In the upcoming parts of this series, we will explore more advanced integrations with Siri, Shortcuts, and Apple Intelligence. Stay tuned for the next article, where we will help you maximize the potential of your Flutter app within the iOS ecosystem.

Marcin Wróblewski  avatar
Marcin Wróblewski
Senior Mobile Developer
Senior Mobile Developer at Monterail – open-source enthusiast, focusing on Dart and Flutter due to their technical excellence