Skip to content

Commit 828898e

Browse files
authored
Shopify App Bridge 🌉🎉 (Shopify#2450)
* add appBridge to polaris context * implement app bridge for loading and update tests * add tests * use appBridge in toast * update tests * update prop with default value, set to dismissable, and unmount safely * render page components with app bridge * add callback support, move to private methods * add lifecycle handlers * bump app-bridge version and update isDismissible option * generate redirect callbacks based on url * add target type to actions, remove logic to infer target * add tests * dev up * [Modal] App Bridge (Shopify#2320) * stop exporting embedded modal and export normal modal with modal props instead * get a working app bridge modal * better type for size and pull title * get all props working, needs refactor with page * easdk action is already part of the complex action type * move modal app bridge transforms into shared utility * refactor page to use shared transformers * rebase off beta/app-bridge, respond to feedback, and fix modal typing * add tests * refactor transforms * add transformer tests, refactor transformer to use overload, and subsequent refactors of page and modal and their tests * add test for modal not opening on mount * respond to feedback * [Resource picker] App bridge (Shopify#2443) * upgrade resource picker to use app bridge * refactor toast and loading based on app bridge version bump * change close callback to cancel callback, fix subscribed select action * tweak docs * set defaults to keep them in sync with our docs, add showVariants * add tests * fix tests * not true is also known as false * cast action as Action.ADMIN_PATH to avoid casting as any * use enum instead of string for argument to subscribe * The EASDK is dead, long live the Shopify App Bridge * fix tests * replace type cast with overload function * safe guard against calls to set unless something has changed * add tests for safe guards to set * support the danger button * document all the changes * ignore tophat examples if hidePlayground is true * burn handle warning from Modal * use default toast duration in tests * stop typing as any in overloaded transformer function * add note about shopOrigin to not have https:// * update history example * dynamically generate types for target and modal size * update prop docs for shopOrigin * no no no
1 parent 406ef1c commit 828898e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1636
-2593
lines changed

Diff for: .eslintignore

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ src/styles/polaris-tokens/
99
/tophat
1010
/types
1111
/index.*
12-
/embedded.js
1312
/examples/browserify/build
1413

1514
# These files contain weird config that causes our plugins to crash

Diff for: .gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ node_modules
1111
/styles.css
1212
/styles.scss
1313
/styles
14-
/embedded.*
1514
/sandbox
1615
.DS_Store
1716
*.scss.d.ts

Diff for: .vscode/settings.json

-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
"build-intermediate/": true,
1919
"build/": true,
2020
"docs/": true,
21-
"embedded.*": true,
2221
"esnext/": true,
2322
"index.*": true,
2423
"sandbox": true,
@@ -38,7 +37,6 @@
3837
"build-esnext/": true,
3938
"build/": true,
4039
"docs/": true,
41-
"embedded.*": true,
4240
"esnext/": true,
4341
"index.*": true,
4442
"sandbox": true,

Diff for: UNRELEASED.md

+20-2
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,35 @@ The autocomplete component is an input field that provides selectable suggestion
4545
- Improved consistency of `Badge` styling ([#2376](https://github.com/Shopify/polaris-react/pull/2376))
4646
- Explicitly specifying `list-style` on `List` ([#2442](https://github.com/Shopify/polaris-react/pull/2442))
4747

48-
## Bug fixes
48+
### Bug fixes
4949

5050
- Fixed console error and used new ref syntax in `DataTable` ([#2196](https://github.com/Shopify/polaris-react/pull/2196)) (thanks to ([@duythien0912](https://github.com/duythien0912)) for the ([original issue](https://github.com/Shopify/polaris/issues/403)))
5151

52-
## Breaking changes
52+
### Breaking changes
5353

5454
- Added padding top and bottom on `Card.Section` when set to full width ([#2280](https://github.com/Shopify/polaris-react/pull/2280))
5555
- Fixed `Portal` rendering by using `componentDidMount` lifecycle hook as opposed to `componentWillMount` ([#2243](https://github.com/Shopify/polaris-react/pull/2243));
5656
- Fixed an issue where clicking a `Link` without a `url` in a form would implicitly submit the form. `Link` can no longer submit forms. Use `<Button submit>` instead.
5757
- Renamed the `Keys` enum to align with Shopify naming standards. It is now singular and the properties are in PascalCase. Replace `import {Keys} from '@shopify/polaris'` with `import {Key} from '@shopify/polaris'` and change the casing of the properties, e.g. replace `Keys.DOWN_ARROW` with `Key.DownArrow` ([#2451](https://github.com/Shopify/polaris-react/pull/2451))
5858

59+
#### Embedded apps
60+
61+
- Upgraded to the Shopify App Bridge and removed the EASDK
62+
- Removed `easdk` from React context and added `appBridge` which accessible via `this.context.polaris.appBridge`
63+
- Updated `shopOrigin` prop on `AppProvider` to optional as we provide it by default. Note that if you provide a `shopOrigin` it now needs to be provided without the `'https://'` per the Shopify App Bridge API
64+
- Removed `debug` prop from `AppProvider` as it no longer supported by the Shopify App Bridge, use Redux DevTools instead
65+
- Removed the embedded bundle so imports from `'@shopify/polaris/embedded'` will no longer work, use `'@shopify/polaris'` instead
66+
- Removed the `Alert` component as it no longer supported by the Shopify App Bridge, use `Modal` instead
67+
- Moved `ResourcePicker` to main bundle, import from `'@shopify/polaris'`
68+
- Updated `target` prop type related to embedded apps, use `'APP'`, `'ADMIN_PATH'`, or `'REMOTE'`
69+
- Added `target` prop to all actions which get passed to the Shopify App Bridge
70+
- Removed `width` and `height` props from `Modal` as they are no longer supported by the Shopify App Bridge
71+
- Added new `size` and `message` props to `Modal` which aligns with the Shopify App Bridge API
72+
- Removed `title` prop from `ResourcePicker`
73+
- Removed `products` and `collections` props from `ResourcePicker`, use new `resourceType` prop instead
74+
- Added new `resourceType`, `initialQuery`, and `showVariants` props to `ResourcePicker` which aligns with the Shopify App Bridge API
75+
- Added Shopify App Bridge support to new components `Toast` and `Loading`
76+
5977
### Documentation
6078

6179
- Updated banner guidelines to make it clearer when success banners should be used vs success toasts. ([#2046](https://github.com/Shopify/polaris-react/pull/2046))

Diff for: documentation/Component READMEs.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ keywords:
2626
# Indicates the component takes over the entire viewport
2727
fullSizeExamples: false # Optional, default: false
2828

29-
# Hides the playground, mostly useful for embedded components
29+
# Hides the playground, mostly useful for components which only render in an embedded app context
3030
# that don’t have a matching React source
3131
hidePlayground: false # Optional, default: false
3232
---

Diff for: documentation/Embedded apps.md

+8-156
Original file line numberDiff line numberDiff line change
@@ -1,161 +1,13 @@
11
# Embedded apps
22

3-
In addition to the [visual components](https://polaris.shopify.com/components/get-started) provided as part of Polaris, we provide React wrappers around Shopify’s [Embedded App SDK (EASDK)](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods). When using Polaris, you don’t need to go through the initialization of the EASDK as described [in the docs](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/initialization). Instead, configure the connection to the Admin through the `AppProvider` component:
3+
In addition to the [visual components](https://polaris.shopify.com/components/get-started) provided as part of Polaris, we provide React wrappers around the [Shopify App Bridge](https://github.com/Shopify/app-bridge) (formerly known as the EASDK).
44

5-
```js
6-
import React from 'react';
7-
import {render} from 'react-dom';
8-
import {AppProvider, Page, Card} from '@shopify/polaris';
5+
When using Polaris, you don’t need to go through the initialization of the Shopify App Bridge as described [in the docs](https://github.com/Shopify/app-bridge/blob/master/packages/app-bridge/README.md). Instead, configure the connection to the Shopify admin through the [app provider component](https://polaris.shopify.com/components/structure/app-provider#initializing-the-shopify-app-bridge), which must wrap all components in an embedded app. This component initializes the Shopify App Bridge using the `apiKey` you provide. **The `apiKey` attribute is required** and can be found in the [Shopify Partner Dashboard](https://partners.shopify.com).
96

10-
class MyApp extends React.Component {
11-
render() {
12-
return (
13-
<Page title="Example application">
14-
<Card sectioned>
15-
Insert the rest of your app here, including those components detailed
16-
below, which can now communicate with the Embedded App SDK.
17-
</Card>
18-
</Page>
19-
);
20-
}
21-
}
7+
## Components which wrap Shopify App Bridge
228

23-
render(
24-
<AppProvider
25-
apiKey="YOUR_APP_API_KEY"
26-
shopOrigin="https://CURRENT_LOGGED_IN_SHOP.myshopify.com"
27-
>
28-
<MyApp />
29-
</AppProvider>,
30-
document.querySelector('#app'), // or another DOM element you want to mount the app in
31-
);
32-
```
33-
34-
Your apiKey and shopOrigin attributes are required. The [EASDK init section](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-init-config) describes the details of these attributes and where to find them.
35-
36-
## Components
37-
38-
To access the EASDK components you need to add them to you project:
39-
`import * as Embedded from '@shopify/polaris/embedded';` or `import {Alert, ResourcePicker} from '@shopify/polaris/embedded';` if you want to import a subset of the components.
40-
41-
All components must be wrapped by the `<AppProvider />` component. This component initializes the EASDK using the apiKey and shopOrigin you provide.
42-
43-
- [`<AppProvider />`](https://polaris.shopify.com/components/structure/app-provider): The root component that manages the communication with the Shopify admin.
44-
- [`<Page />`](https://polaris.shopify.com/components/structure/page): An outer wrapper of the embedded app content used to control page title and associated page actions. This replaces the [`ShopifyApp.Bar.initialize`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-bar-initialize-config), [`ShopifyApp.Bar.setTitle`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-bar-settitle-title), [`ShopifyApp.Bar.setIcon`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-bar-seticon-icon), [`ShopifyApp.Bar.setPagination`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-bar-setpagination-config) and [`ShopifyApp.Bar.setBreadcrumb`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-bar-setbreadcrumb-config)
45-
- [`<Alert />`](https://polaris.shopify.com/components/embedded/embedded-alert): A modal alert presented to the user with a configurable option to cancel or confirm. This replaces the [`ShopifyApp.Modal.alert`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-modal-alert-options-fn) and [`ShopifyApp.Modal.confirm`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-modal-confirm-options-fn) EASDK methods.
46-
- [`<Modal />`](https://polaris.shopify.com/components/embedded/embedded-modal): A modal dialog presented over top of your application. This dialog will present another page of your choice from your application. This replaces the [`ShopifyApp.Modal.open`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-modal-open-init-fn) EASDK method.
47-
- [`<ResourcePicker />`](https://polaris.shopify.com/components/embedded/embedded-resource-picker): A modal dialog that allows the user to select one or more of their products or collections, and provides you with details on the selected resources. This replaces the [`ShopifyApp.Modal.productPicker`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-modal-productpicker-options-fn) and [`ShopifyApp.Modal.collectionPicker`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-modal-collectionpicker-options-fn) EASDK methods.
48-
49-
## Access to further EASDK APIs
50-
51-
We’ve provided access to some functionality of the underlying EASDK API. This enables performing actions like redirects or displaying a flash message from within your embedded app.
52-
53-
In order to call these methods, you must get the `easdk` object that we add to [React’s `context`](https://facebook.github.io/react/docs/context.html). The example below demonstrates how to access the `easdk` object from React’s `context`:
54-
55-
```js
56-
import React from 'react';
57-
import {render} from 'react-dom';
58-
import * as PropTypes from 'prop-types';
59-
import {AppProvider, Page, Card, Button} from '@shopify/polaris';
60-
61-
class MyApp extends React.Component {
62-
// This line is very important! It tells React to attach the `easdk`
63-
// object to `this.context` within your component.
64-
static contextTypes = {
65-
easdk: PropTypes.object,
66-
};
67-
68-
render() {
69-
return (
70-
<Page title="Example application">
71-
<Card sectioned>
72-
<Button onClick={() => this.context.easdk.startLoading()}>
73-
Start loading
74-
</Button>
75-
<Button onClick={() => this.context.easdk.stopLoading()}>
76-
Stop loading
77-
</Button>
78-
</Card>
79-
</Page>
80-
);
81-
}
82-
}
83-
84-
render(
85-
<AppProvider
86-
apiKey="YOUR_APP_API_KEY"
87-
shopOrigin="https://CURRENT_LOGGED_IN_SHOP.myshopify.com"
88-
>
89-
<MyApp />
90-
</AppProvider>,
91-
document.querySelector('#app'),
92-
);
93-
```
94-
95-
### Methods provided:
96-
97-
We provide the following methods, (annotated with the types of their parameters and return values):
98-
99-
#### `easdk.showFlashNotice()`
100-
101-
```ts
102-
showFlashNotice(message: string): void;
103-
```
104-
105-
Presents a flash message in the Shopify admin and replaces the [`ShopifyApp.flashNotice`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-flashnotice-message) and [`ShopifyApp.flashError`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-flasherror-message) methods in the EASDK.
106-
107-
By default, this method call will present an informational message. In order to present an error message, pass `{error: true}` as the second parameter to this method.
108-
109-
##### Best practices
110-
111-
Use flash messages sparingly and only for very quick, tactical feedback on an action. Remember that flash messages disappear after 3 seconds so they can be hard to read for anyone with low literacy, limited vision, or anyone who doesn’t speak English as their first language.
112-
113-
Make flash messages very short and scannable.
114-
115-
##### Content guidelines
116-
117-
Flash messages should:
118-
119-
- Follow a {noun} + {verb} pattern (e.g. Settings saved, Buy Button removed, Discount deleted)
120-
- Confirm a previous call to action performed by the merchant (e.g. if the merchant selects a button that says “Add channel”, the flash message that follows should say “Channel added”)
121-
- Be short and specific (2 or 3 words)
122-
123-
###### Do
124-
125-
Changes saved
126-
127-
###### Don’t
128-
129-
Successfully saved changes
130-
131-
#### `easdk.pushState()`
132-
133-
```ts
134-
pushState(location: string): void;
135-
```
136-
137-
Rewrites the URL to the passed location. Note that this is called automatically by other methods, so it is rarely needed directly. Replaces the [`ShopifyApp.pushState`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-pushstate-path) method in the EASDK.
138-
139-
#### `easdk.redirect()`
140-
141-
```ts
142-
redirect(location: string): void;
143-
```
144-
145-
Navigates away from your app and to another section of the Shopify admin. The path should be prefixed with a slash, but should not include the `/admin` part. Example: `/customers/120999015` or `/settings/domains`. Replaces the [`ShopifyApp.redirect`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-redirect-path) method in the EASDK.
146-
147-
#### `easdk.startLoading()`
148-
149-
```ts
150-
startLoading(): void;
151-
```
152-
153-
Starts a loading indicator in the Shopify admin. It is a best practice to trigger this when you start any long-running asynchronous operation, such as an AJAX request. Replaces the [`ShopifyApp.Bar.loadingOn`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-bar-loadingon) method in the EASDK.
154-
155-
#### `easdk.stopLoading()`
156-
157-
```ts
158-
stopLoading(): void;
159-
```
160-
161-
Stops the loading indicator in the Shopify admin. Make sure to match this to any calls to `startLoading` once the asynchronous task is complete. Replaces the [`ShopifyApp.Bar.loadingOff`](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk/methods#shopifyapp-bar-loadingoff) method in the EASDK.
9+
- [`<Toast />`](https://polaris.shopify.com/components/feedback-indicators/toast)
10+
- [`<Loading />`](https://polaris.shopify.com/components/feedback-indicators/loading)
11+
- [`<Page />`](https://polaris.shopify.com/components/structure/page)
12+
- [`<Modal />`](https://polaris.shopify.com/components/overlays/modal)
13+
- [`<ResourcePicker />`](https://polaris.shopify.com/components/overlays/resource-picker)

Diff for: package.json

+3-4
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"test:watch": "yarn test --watch",
4545
"check": "npm-run-all lint ts test",
4646
"check:ci": "npm-run-all lint ts test:ci",
47-
"clean": "rimraf build build-esnext esnext styles types docs 'build-intermediate' 'index.*' 'embedded.js' './src/styles/polaris-tokens' './tophat/.cache' './tophat/assets' 'styles.{css,scss}'",
47+
"clean": "rimraf build build-esnext esnext styles types docs 'build-intermediate' 'index.*' './src/styles/polaris-tokens' './tophat/.cache' './tophat/assets' 'styles.{css,scss}'",
4848
"optimize": "node ./scripts/optimize.js",
4949
"prebuild": "npm-run-all clean optimize copy-polaris-tokens",
5050
"build": "babel-node ./scripts/build.js",
@@ -199,11 +199,10 @@
199199
"index.js",
200200
"index.es.js",
201201
"styles.css",
202-
"styles.scss",
203-
"embedded.js",
204-
"embedded.d.ts"
202+
"styles.scss"
205203
],
206204
"dependencies": {
205+
"@shopify/app-bridge": "^0.7.3",
207206
"@shopify/images": "^1.1.0",
208207
"@shopify/javascript-utilities": "^2.2.0",
209208
"@shopify/polaris-tokens": "^1.2.0",

Diff for: public/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ ReactDOM.render(
5959
);
6060
```
6161

62-
### Using the Embedded App SDK
62+
### Building an embedded app
6363

64-
We provide React wrappers around Shopify’s Embedded App SDK (EASDK). You don’t need to go through the initialization of the EASDK as described in the docs. Instead, [configure the connection to the Admin through the AppProvider component](https://github.com/Shopify/polaris/blob/master/documentation/Embedded%20apps.md).
64+
We provide React wrappers around the Shopify App Bridge (formerly known as the EASDK). You don’t need to go through the initialization of the Shopify App Bridge as described in the docs. Instead, [configure the connection to the Shopify admin through the app provider component](https://github.com/Shopify/polaris/blob/master/documentation/Embedded%20apps.md).
6565

6666
## Using the CSS components
6767

Diff for: scripts/build.js

-18
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ const finalEsnext = resolvePath(root, 'esnext');
1616
const docs = resolvePath(root, './docs');
1717
const intermediateBuild = resolvePath(root, './build-intermediate');
1818
const mainEntry = resolvePath(intermediateBuild, './index.js');
19-
const embeddedEntry = resolvePath(intermediateBuild, './embedded/index.js');
2019

2120
const scripts = resolvePath(root, 'scripts');
2221
const types = resolvePath(root, 'types');
@@ -31,16 +30,10 @@ execSync(
3130
stdio: 'inherit',
3231
},
3332
);
34-
rm(join(intermediateBuild, 'package.json'));
3533

3634
mv(resolvePath(root, 'types/src/*'), types);
3735
rm('-rf', resolvePath(root, 'types/src'));
3836

39-
writeFileSync(
40-
resolvePath(root, 'embedded.d.ts'),
41-
"export * from './types/embedded';\n",
42-
);
43-
4437
mv(resolvePath(intermediateBuild, 'src/*'), intermediateBuild);
4538

4639
const srcReadme = resolvePath(root, './src/components/README.md');
@@ -125,20 +118,9 @@ copy(['./src/**/*.{scss,svg,png,jpg,jpeg,json}', intermediateBuild], {up: 1})
125118
useExistingClassTokens: true,
126119
}),
127120
)
128-
// Embedded bundle, supports all our supported browsers, CommonJS, no
129-
// styles because no embedded-only components have styles
130-
.then(() =>
131-
runRollup({
132-
entry: embeddedEntry,
133-
output: 'embedded.js',
134-
format: 'cjs',
135-
css: false,
136-
}),
137-
)
138121
.then(() =>
139122
Promise.all([
140123
cp('build/polaris.js', './index.js'),
141-
cp('build/embedded.js', './embedded.js'),
142124
cp('build/polaris.es.js', './index.es.js'),
143125
cp('build/polaris.css', './styles.css'),
144126
]),

Diff for: src/components/AppProvider/AppProvider.tsx

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react';
22
import {autobind} from '@shopify/javascript-utilities/decorators';
3-
import EASDK from './EASDK';
3+
import {ClientApplication} from '@shopify/app-bridge';
44

55
import {LinkLikeComponent} from '../UnstyledLink';
66

@@ -19,12 +19,14 @@ export interface Props {
1919
linkComponent?: LinkLikeComponent;
2020
/** The API key for your application from the Partner dashboard */
2121
apiKey?: string;
22-
/** The current shop’s origin, provided in the session from the Shopify API */
22+
/**
23+
* The current shop’s origin, provided in the session from the Shopify API (to be provided without the https://)
24+
* @default getShopOrigin()
25+
* @see {@link https://github.com/Shopify/app-bridge/blob/master/packages/app-bridge/README.md|Shopify App Bridge docs}
26+
**/
2327
shopOrigin?: string;
2428
/** Forces a redirect to the relative admin path when not rendered in an iframe */
2529
forceRedirect?: boolean;
26-
/** Prints logs of each message passed through the EASDK */
27-
debug?: boolean;
2830
/** Custom logos and colors provided to select components */
2931
theme?: Theme;
3032
}
@@ -37,8 +39,8 @@ export interface Context {
3739
scrollLockManager: ScrollLockManager;
3840
subscribe?(callback: () => void): void;
3941
unsubscribe?(callback: () => void): void;
42+
appBridge?: ClientApplication<{}>;
4043
};
41-
easdk?: EASDK;
4244
}
4345

4446
export default class AppProvider extends React.Component<Props> {
@@ -75,15 +77,13 @@ export default class AppProvider extends React.Component<Props> {
7577
apiKey,
7678
shopOrigin,
7779
forceRedirect,
78-
debug,
7980
}: Props) {
8081
if (
8182
i18n !== this.props.i18n ||
8283
linkComponent !== this.props.linkComponent ||
8384
apiKey !== this.props.apiKey ||
8485
shopOrigin !== this.props.shopOrigin ||
85-
forceRedirect !== this.props.forceRedirect ||
86-
debug !== this.props.debug
86+
forceRedirect !== this.props.forceRedirect
8787
) {
8888
const stickyManager = this.stickyManager;
8989
this.polarisContext = createAppProviderContext({
@@ -92,7 +92,6 @@ export default class AppProvider extends React.Component<Props> {
9292
apiKey,
9393
shopOrigin,
9494
forceRedirect,
95-
debug,
9695
stickyManager,
9796
subscribe: this.subscribe,
9897
unsubscribe: this.unsubscribe,

0 commit comments

Comments
 (0)