Skip to main content

Migrate your app from EASDK to Shopify App Bridge

Deprecated

The Embedded App SDK (EASDK) is deprecated. After March 1st, 2022, apps that are using this SDK won't be listed on the Shopify App Store. Use Shopify App Bridge instead.


Anchor to Using Shopify App Bridge directlyUsing Shopify App Bridge directly

If your app is using the Embedded App SDK (EASDK), then we recommend that you update your app using the Shopify App Bridge. The EASDK will no longer receive updates.

If you update 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

Anchor to Migrating your EASDK appMigrating 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.

Note

After you've migrated your app to use Shopify App Bridge, Shopify continues to monitor your app for 30 days to ensure that the migration was successful and all EASDK methods have been removed. During this monitoring period, you'll still see a warning prompting you to update your app. If no EASDK calls are detected for 30 consecutive days, then the warning is automatically removed.

Anchor to Shopify.API.Modal.inputShopify.API.Modal.input

Input modals are not supported in Shopify App Bridge.

You can use an iFrame modal instead.

Anchor to Shopify.API.Modal.setHeightShopify.API.Modal.setHeight

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.

Anchor to Tertiary modal buttonsTertiary modal buttons

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

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 Configuration page in the Partner Dashboard.

Anchor to ShopifyApp.init with debug optionShopifyApp.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.

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

Learn more about the TitleBar action set.

import createApp from '@shopify/app-bridge';
import { TitleBar, Button } from '@shopify/app-bridge/actions';

const app = createApp({
apiKey: '12345',
host: 'host from URL param',
});

const paginationPreviousButton = Button.create(app, { label: '←' })
paginationPreviousButton.subscribe(Button.Action.CLICK, function() {
// pagination previous action
})

const paginationNextButton = Button.create(app, { label: '→' })
paginationNextButton.subscribe(Button.Action.CLICK, function() {
// pagination next action
})

const titleBarOptions = {
buttons: {
secondary: [paginationPreviousButton, paginationNextButton],
}
};
const myAppTitleBar = TitleBar.create(app, titleBarOptions);
Anchor to Use the Polaris React Page component pagination controlsUse the Polaris React Page component pagination controls

Learn more about the Polaris Page component.

import React, {useCallback} from 'react';
import {Page} from '@shopify/polaris';

function myApp() {

const paginationPrevious = useCallback(() => {
// pagination previous action
}, []);

const paginationNext = useCallback(() => {
// pagination next action
}, []);

const paginationOptions = {
hasNext: true,
hasPrevious: true,
onNext: paginationNext,
onPrevious: paginationPrevious
};

return (
<Page title="My App" pagination={paginationOptions}>
App
</Page>
);
}

Anchor to protocol URL parameterprotocol URL parameter

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

Anchor to Keeping the frame URL in syncKeeping 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()).

Anchor to Using modular JavaScriptUsing modular JavaScript

import createApp from '@shopify/app-bridge';
import { History } from '@shopify/app-bridge/actions';

function initializeApp() {
const app = createApp({
apiKey: 'Client ID from Shopify Partner Dashboard',
host: 'host from URL param'
});

const history = History.create(app);
history.dispatch(History.Action.REPLACE, `${window.location.pathname}`);

return app;
}

Anchor to Using ES5 and the CDN-hosted libraryUsing ES5 and the CDN-hosted library

var AppBridge = window['app-bridge'];
var createApp = AppBridge.default;
var actions = AppBridge.actions;
var History = actions.History;

function initializeApp() {
var app = createApp({
apiKey: 'Client ID from Shopify Partner Dashboard',
host: 'host from URL param'
});

var history = History.create(app);
history.dispatch(History.Action.REPLACE, window.location.pathname);

return app;
}

Was this page helpful?