We’re seeing window.print() silently fail from an embedded App Home page in the Shopify Android app.
We’re following Shopify’s App Home Print API documentation and invoking it directly from the tap handler:
<button onClick={() => window.print()}>Print</button>
Steps to reproduce
- Open an embedded App Home page in the Shopify Android app.
- Tap the button above.
- No print dialog or Save as PDF screen appears, and no visible error is shown.
Expected
App Bridge intercepts window.print() and opens Android’s print dialog.
Same on POS iOS — 11.15.0 / iOS 27, also on 11.14.0 across a few iOS versions.
App Bridge has definitely replaced window.print here. The page is rendered on screen when we call it (POS prints as rendered, not via print media), and print() runs straight out of the click handler with nothing awaited. It returns fine — no sheet, no error, nothing in the console.
Thanks for confirming the same behaviour on POS iOS. Since your test is running inside Shopify POS, have you tried Shopify’s dedicated POS UI Extension Print API rather than the App Home window.print() integration?
Shopify documents the POS API as:
js
> try {
> await shopify.print.print(
> 'https://your-app.example.com/api/print/document'
> );
> console.log('Native print dialog opened');
> } catch (error) {
> console.error('POS print failed', error);
> }
>
Documentation:
Print API
The API accepts either a relative path under the app’s application_url or a full URL and should resolve when the content is ready and the native print dialog appears.