The app is in Draft, all preliminary checks passed except the two Embedded app checks. They have been pending for about 24 hours, and were already pending before our last deployment.
App ID 398867136513. App Bridge loads from cdn.shopify.com/shopifycloud/app-bridge.js in the server-rendered head, with the shopify-api-key meta tag and data-api-key on the script. We use session tokens for auth. The app sets no cookies. CSP allows framing in the admin.
One thing we can’t fix: Next.js puts five of its own scripts in the head above ours, so App Bridge ends up 6th instead of 1st. Using beforeInteractive takes it out of the head entirely, which seems worse.
We also tried a clean browser with no extensions, opening the app from the Apps menu instead of a URL. No change.
Can someone check what the test is seeing, or verify manually? I can send more detail if it helps.
HI @ArK375! Your CDN-hosted App Bridge setup sounds broadly aligned with Shopify’s current App Bridge guidance. I wouldn’t treat the fact that Next.js places the script sixth in the document as the cause by itself.
To pass this check, open the deployed app from the Apps menu in Shopify admin on a development store, not a client-transfer or merchant store. Shopify’s development store documentation describes development stores as testing environments and client-transfer stores as intended for merchant builds.
In DevTools, open the Network tab before reloading the app. Filter for monorail, reload the page, and interact with the embedded app. Record whether matching requests appear, their HTTP status, and whether the browser marks them as blocked. If no matching request appears, focus on App Bridge initialization. If a request is blocked, try a clean browser profile and check for privacy or network filtering.
Also inspect the initial rendered HTML, not only the hydrated DOM. Confirm that the shopify-api-key meta tag appears before app-bridge.js, and that its value matches the app’s client ID. If the script has a data-api-key attribute, verify that it matches too. If the requests complete but the checks remain pending, include that result when following up rather than assuming that script order is the cause.
A similar issue was resolved in this community discussion, which includes troubleshooting around browser state and making the client ID available before App Bridge loads. If the checks still do not update, sharing the rendered head and the relevant Network result should help narrow it down