Description
Embedded apps show a blank/white page in Chrome 145 when navigating directly to an app page via URL (e.g., admin.shopify.com/store/{shop}/apps/{app}/analytics). Sidebar navigation clicks work fine — only direct page loads are affected.
This issue is not app-specific — I've confirmed the same behavior across multiple third-party Shopify apps from different companies.
Safari works correctly for both direct page loads and sidebar navigation.
Environment
- Chrome: Version 145.0.7632.160 (Official Build) (arm64)
- Safari: Works correctly
- Cookie setting: "Block third-party cookies" (recommended by Shopify)
- App Bridge: CDN version (
cdn.shopify.com/shopifycloud/app-bridge.js)
Console Output
Chrome DevTools shows a massive React re-render loop in Shopify admin's own render-common bundle, preceded by this CSP warning:
The Content Security Policy directive 'upgrade-insecure-requests' is ignored when delivered in a report-only policy.
This warning repeats hundreds of times via render-common-a91c47232eed.js:25, with the call stack showing an infinite Pj → Lo → Pj → Lo React reconciliation loop.
Steps to Reproduce
- Open Chrome 145 with "Block third-party cookies" enabled
- Navigate directly to any embedded app page via URL bar:
https://admin.shopify.com/store/{shop}/apps/{app}/{page}
- Page shows blank/white — the iframe never renders
- Open DevTools Console — see the
upgrade-insecure-requests + render-common re-render loop
- Now click a sidebar navigation link to the same page — it loads correctly
Expected Behavior
Direct page loads should render the embedded app iframe, same as sidebar navigation clicks.
Analysis
The upgrade-insecure-requests directive is being sent inside a Content-Security-Policy-Report-Only header from the Shopify admin shell. Per the CSP spec, upgrade-insecure-requests is an action directive that is meaningless in report-only mode. Chrome 145 warns about this, which appears to trigger the React re-render loop in the admin shell's render-common bundle.
The embedded app's own response headers are correct:
content-security-policy: frame-ancestors https://{shop}.myshopify.com https://admin.shopify.com
- No
X-Frame-Options header
- Response status: 200 OK
The issue is in the parent frame (Shopify admin shell), not in the embedded app's iframe response.
Description
Embedded apps show a blank/white page in Chrome 145 when navigating directly to an app page via URL (e.g.,
admin.shopify.com/store/{shop}/apps/{app}/analytics). Sidebar navigation clicks work fine — only direct page loads are affected.This issue is not app-specific — I've confirmed the same behavior across multiple third-party Shopify apps from different companies.
Safari works correctly for both direct page loads and sidebar navigation.
Environment
cdn.shopify.com/shopifycloud/app-bridge.js)Console Output
Chrome DevTools shows a massive React re-render loop in Shopify admin's own
render-commonbundle, preceded by this CSP warning:This warning repeats hundreds of times via
render-common-a91c47232eed.js:25, with the call stack showing an infinitePj → Lo → Pj → LoReact reconciliation loop.Steps to Reproduce
https://admin.shopify.com/store/{shop}/apps/{app}/{page}upgrade-insecure-requests+render-commonre-render loopExpected Behavior
Direct page loads should render the embedded app iframe, same as sidebar navigation clicks.
Analysis
The
upgrade-insecure-requestsdirective is being sent inside aContent-Security-Policy-Report-Onlyheader from the Shopify admin shell. Per the CSP spec,upgrade-insecure-requestsis an action directive that is meaningless in report-only mode. Chrome 145 warns about this, which appears to trigger the React re-render loop in the admin shell'srender-commonbundle.The embedded app's own response headers are correct:
content-security-policy: frame-ancestors https://{shop}.myshopify.com https://admin.shopify.comX-Frame-OptionsheaderThe issue is in the parent frame (Shopify admin shell), not in the embedded app's iframe response.