Features
The Features
action set enables you to get a list of features are available in the current app context, and to request features that are not currently available.
You can use the features action in the following ways:
Plain JavaScript
Anchor link to section titled "Plain JavaScript"Using the plain JavaScript approach, there are two ways to work with features.
- Check feature availability with
App.featuresAvailable()
- Dispatch a feature request action for a specific feature
Example code
Anchor link to section titled "Example code"Import the createApp
function from @shopify/app-bridge
and the Features
from @shopify/app-bridge/actions
. Then use the createApp
function to create an app.
Subscribe to feature availability updates
Anchor link to section titled "Subscribe to feature availability updates"
App.featuresAvailable()
Anchor link to section titled "App.featuresAvailable()"Calling app.featuresAvailable()
returns a promise that evaluates to the entire set of available features for the app. An object containing groups, the actions within each group, and the permissions for each action (Dispatch
and Subscribe
), represents the feature set.
It will look like this:
If Dispatch
is equal to true
, then you will be able to send that type of action within your app. Likewise if Subscribe
is equal to true
, then you will be able to subscribe to dispatches of that type of action.
If a group is not present in the state then it can be assumed that all actions contained in that group are also not available.
If you want to limit your resulting state to a subset of groups, then pass in a group parameter.
Multiple group filters are also supported by using ...rest
parameters.
If you experience feature availability errors while trying to access Cart actions on Point of Sale, try wrapping that code in a subscription to Features.Action.UPDATE
.
Features Update action
Anchor link to section titled "Features Update action"Group | Features |
---|---|
Action | UPDATE |
Action Type | APP::FEATURES::UPDATE |
Description | Dispatches when a feature's available state changes. |
Key | Type | Description |
---|---|---|
Main |
Object | The availability state of the features in the main context. |
Modal |
Object | The availability state of the features in the modal context. |
Features Request action
Anchor link to section titled "Features Request action"Group | Features |
---|---|
Action | REQUEST |
Action Type | APP::FEATURES::REQUEST |
Description | Requests for a feature to be enabled. May result in an authorization dialog to appear, depending on the platform it is dispatched on. |
If an action is not available when you call app.featuresAvailable()
, then you can use the APP::FEATURES::REQUEST
action to request either a group of actions or a single action inside a group to be enabled. This is particularly useful when the app is running on a mobile device and requesting a hardware feature, such as the scanner, that needs authorization from the user.
The workflow for enabling a feature includes two parts: subscribing to APP::FEATURES::REQUEST::UPDATE
and dispatching APP::FEATURES::REQUEST
. APP::FEATURES::REQUEST
is the input and APP::FEATURES::REQUEST::UPDATE
is the output.
Requesting Camera Scanner actions:
Key | Type | Description |
---|---|---|
feature |
String | The feature group that you would like to enable. |
action |
String? | An optional action within the group to enable. All actions within the group will be enabled if an action is not specified. |
Features Request Update action
Anchor link to section titled "Features Request Update action"Group | Features |
---|---|
Action | UPDATE |
Action Type | APP::FEATURES::UPDATE |
Description | Dispatches with the result of a features request action. |
Key | Type | Description |
---|---|---|
feature |
Object | The new state of the requested feature. |
Application context
Anchor link to section titled "Application context"Shopify App Bridge applications can be opened in different places. We refer to each of these places as a context. Each context makes a set of features available to the application. Different contexts can provide different feature sets.
For instance, the Modal context has a different set of features available than the Main context.
To check which context an application is in, you can use app.getState()
. Read more about app.getState
.
With App Bridge React, you have two hooks that simplify using the feature action set.
useFeaturesAvailable
hook
Anchor link to section titled "useFeaturesAvailable hook"The useFeaturesAvailable
hook accepts a feature name (or a list of feature names) and returns an object with information about its avaiable actions. If the hook receives no arguments, it returns an object with information about all of the features in App Bridge.
Example code
Anchor link to section titled "Example code"
useFeatureRequest
hook
Anchor link to section titled "useFeatureRequest hook"The useFeatureRequest
hook enables you to request a group of actions, or a single action inside of a group, to be enabled. This is particularly useful when the app is running on a mobile device and requests a hardware feature, such as the scanner, that needs authorization from the user.
Example code
Anchor link to section titled "Example code"
- The
useFeaturesAvailable
hook accepts a single feature or a list of features. - The
useFeatureRequest
accepts a single feature.
Name | Type | Description | Required |
---|---|---|---|
feature | "AuthCode" , "Button" , "ButtonGroup" , "Cart" , "Client" , "ContextualSaveBar" , "Error" , "Features" , "FeedbackModal" , "Fullscreen" , "LeaveConfirmation" , "Link" , "Menu" , "Modal" , "Navigation" , "Performance" , "Pos" , "Print" , "ResourcePicker" , "Scanner" , "SessionToken" , "Share" , "TitleBar" , "Toast" |
Name of the feature to check permissions for | No |