App Linking

Navigating between applications

Open Applications views while linking between apps

The core framework supports navigation between applications through the Open Applications view. While applications can easily provide links and functionality that open a second application, they rely on the Open Applications view to help users switch quickly between any recently used applications.

Backstack belongs to one application

When a user opens a second application, the original application transitions to the Open Applications view. Its backstack is made unavailable to the second application. In other words, any Back button in the second application lets the user navigate within the history of that application and never links back to the original application.

Applications are accessible in the Open Applications view

If a user Swipes to exit to Home and navigates (if necessary) to the Open Applications view, he will see both the original application and the second application. He can then access either application with a tap and use Swipe to return to the Applications view to facilitate any subsequent switching between applications.

Deep linking

Deep linking flow
Deep linking flow

In most cases, when an application is linked from another application or accessed from a notification, it will be a deep link. In other words, the user will open a view that is likely to be found a few levels down in the application.

Provide Navigation to the Top

Because the user will not have a history to navigate via a Back button when the view is deep linked, it is important for applications to provide a means of navigating away from the current view. In such cases, replace the Back button with an Up button that will take the user to the top-level view of the application.

Common use cases include opening an email or chat thread from a notification, or linking to a map from a Calendar event.

Single Application Instance

If a deep linked application is already available in the Open Applications view, the deep linked view overwrites the existing state/snapshot of the application. In general, there should only be a single instance of an application available at any given time. Deep links do not spawn multiple application instances.

However, an exception applies to Messaging and the composer in Email, both of which are permitted to open multiple instances through deep linking.