I’ve built (with help from Claude) a POS UI Extension (smart grid tile + modal) that builds and deploys successfully, installs on the store, appears in POS, but always shows “app failed to load” when tapped. No JavaScript ever executes.
Setup
App type: Extension-only app (no Remix/React Router backend)
Also, can you confirm whether your extension is loading correctly in development on the device? If it is not appearing or not updating as expected, that will help narrow down whether this is a local development setup issue or an extension runtime issue.
What do you mean by loading correctly ‘in development’. This is actually my first time trying to make one of these extensions, so you’ll have to forgive me if I need things explaining in simpler terms.
It is appearing, I can install it and add it as a tile on the Smart Grid. However, it just says ‘App Failed to Load’ every time, no matter what adjustments I’ve tried to make to date.
Ah I understand better what you meant by in development. I loaded the dev server in terminal, and used the dev console mobile QR code to load it onto the POS Tablet in development. It successfully does this, but the modal preview fails to load (Error loading extension) and the tile says app failed to load
Can you inspect the web view logs and see if theres any errors that are outputted? You will need to plug your device into the computer to do so. Below are the instructions for each OS:
Hey I checked again, this is almost certainly a framework / API version mismatch. POS uses two different rendering engines depending on the API version:
2025-04 through 2025-07 → remote-ui, expects React (@shopify/ui-extensions-react)
2025-10 and later → remote-dom, expects Preact + web components
You’re using Preact + web components but targeting 2025-04, so POS loads the wrong rendering engine. The extension script crashes before any of your code runs — which is why even a toast.show() at the entry point never fires.
Fix: set api_version = "2025-10" in your shopify.extension.toml and redeploy. Your POS version (11.1.1) supports it.
If you already tried 2026-01 and it still failed, make sure you redeployed afterward (shopify app deploy) — the CDN bundle URL changes per API version, so POS won’t pick up the new one until you do.
thanks for your help. I think there were actually multiple issues at play but I managed to get it working. I went back to the tutorial and tried to run a purely scaffolded UI extension and even that didnt work.
Eventually, I went through the POS settings on the web app and added the tile to smart grid from there, that seemed to do the trick as it started working properly from then on, and I was able to implement the functionality I wanted.
I just had to comment here - I had this same issue and spent a good half day debugging it, mucking around with deps, vanilla CLI install - and I still had the issue. …what was the fix? I closed the POS app and reopened it.
I went into the POS settings in the Shopify Admin, navigated to ‘POS Apps’ and selected the extension in question. I then pressed ‘Add’ smart grid tile and it started working.
I’ve had this issue as well - as far as I can tell it depends on the permissions of the person who logged into the POS app.
The locations where it was not working it was the store manager or an associate who logged into the app. The ones where it did work it was either myself or another admin who logged in for them.
I’ve been getting on the phone with these locations and having them go through the sign in process remotely using my credentials and that fixed it
I believe App failed to load is not permissions related; when it’s a permissions issue, the user can still open the tile but they can’t get a session token. However, we haven’t gotten tickets about this in recent months so I believe Shopify has perhaps made it harder for this scenario to occur.
For App failed to load, in our experience you need to tell the merchant to clear data which logs them out, and then have them log back in: