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.
Docs say window.print() should just work, App Bridge intercepts it on mobile with no extra setup needed, so this reads like an actual regression rather than a missing step on your end. I’d file it with support including the App Bridge version and Android build so it gets triaged as a bug, separate from the POS Print API which is a different surface entirely.
Hi, this bug should now be fixed. Please let us know if you encounter it again!