Migrate your app from legacy SDKs to Shopify App Bridge

Shopify has two deprecated client-side app libraries, the Embedded App SDK (EASDK) and the POS App SDK, that serve a similar function to Shopify App Bridge.

Using Shopify App Bridge directly

If you choose to upgrade your app using the Shopify App Bridge actions directly, then you get the following benefits:

  • modern front-end development workflows, including modular JavaScript
  • strict versioning using SemVer, for even more stability and predictability

In the future, most new features will be added to Shopify App Bridge only, and will not be made available to the EASDK. We recommend that you upgrade to using Shopify App Bridge if you’re building a new app or doing significant upgrades to your existing app.

Migrating your EASDK app

The best place to start is the Embedded App SDK (EASDK) documentation, which has been updated with corresponding App Bridge methods. Here are a few additional things to keep in mind when migrating an existing app from EASDK to Shopify App Bridge.

Deprecated features


Input modals are not supported in Shopify App Bridge.

You can use an iFrame modal instead.


Modal size is set in increments in App Bridge, and can automatically fit to the modal contents.

Modals will not accept URLs from outside of your app’s origin.

To embed content from another domain, create an iFrame modal and embed the content there.

Tertiary modal buttons

Because Shopify App Bridge gives you full control over button styling, primary and secondary buttons can now cover all use cases.

App icon

Setting an app icon via ShopifyApp.Bar.setIcon or ShopifyApp.Bar.initialize with an icon param has been deprecated.

You can now set your app icon on the App setup page in the Partners Dashboard

ShopifyApp.init with debug option

Calling init with the debug option is not supported in App Bridge.

We recommend debugging using the Redux DevTools and the development version of the library instead.


Adding pagination to the title bar using ShopifyApp.Bar.initialize and ShopifyApp.Bar.setPagination has been deprecated. We recommend implenting pagination within your app’s UI. If you’re using Polaris, then you can use the pagination controls provided by the Polaris Page component.

If you prefer to keep pagination in your app’s titlebar, then you can use Shopify App Bridge to add pagination buttons to the titlebar.

Use Shopify App Bridge to add pagination buttons to the title bar

Learn more about the TitleBar action set.

Use the Polaris Page component pagination controls

Learn more about the Polaris Page component.

protocol URL parameter

Since all embedded apps must use HTTPS, the protocol parameter is no longer relevant.

Keeping the frame URL in sync

The EASDK initialize function automatically updates the Shopify admin URL.

Since Shopify App Bridge is designed to accomodate a broader range of uses, it can’t make this assumption. It’s only aware of navigation using History and Redirect actions.

If your app uses links or server-side redirects for navigation, you can keep the URL in sync by dispatching a History.Action.REPLACE action wherever you called EASDK’s initialize method (for example, after createApp()).

If you are using a React single page app you can utilize Shopify App Bridge's Route Propagator component

Using modular JavaScript

Using ES5 and the CDN-hosted library

Migrating your POS App SDK app

The POS App SDK documentation has been updated with corresponding Shopify App Bridge methods. Here are a few more things to keep in mind when migrating an existing app to Shopify App Bridge.

Cart actions

All cart-related functionality is handled by the Cart action set in Shopify App Bridge. There are three steps to dispatch a cart action.

  1. Create the Cart action group instance:

  1. Subscribe to the cart update action, which returns an unsubscribe function:

  1. Dispatch the desired cart action. Depending on the action, you may need to construct the action using a method from Cart.
  • A simple cart action, passing the action type to dispatch:

  • A more complex cart action, using an action constructor method:

Fetching user and location data

In the POS App SDK, user and location data were fetched using dedicated methods. In Shopify App Bridge, this data is accessed using app.getState().