What I’ve done so far:
-
Built a Shopify Remix app using the official template.
-
Local dev (
shopify app dev) works perfectly → app loads inside Shopify Admin iframe, Product Page extension also shows. -
Deployed app to Vercel (frontend) + Neon Postgres (database).
-
Set environment variables in Vercel:
-
SHOPIFY_API_KEY,SHOPIFY_API_SECRET,SHOPIFY_APP_URL=https://chicagoprint-pros.vercel.app -
SCOPES=read_products,write_products -
DATABASE_URL(Neon connection string with?sslmode=require) -
SESSION_SECRET(32+ char random string)
-
-
Build succeeds on Vercel, no errors in logs.
-
Shopify Partner Dashboard App URL + Redirect URLs match Vercel domain.
The problem:
-
When I open the app from Shopify Admin → Apps → Chicago App, the iframe is completely blank.
-
Local dev works fine, but production deploy on Vercel does not render anything.
-
Vercel logs show requests hitting
/auth/loginand/app, but no visible UI. -
No console errors inside Shopify Admin iframe.
What I’ve checked:
-
root.tsxincludesaddDocumentResponseHeaders(so CSP headers are set). -
_index.tsxonly redirects to/app. -
auth.login.tsxandauth.$.tsxare correct. -
app._index.tsxrenders a Polaris<Page>(works locally). -
Database migrations applied successfully on Neon.
Question: Why does the app render fine locally but show a blank page when deployed on Vercel + Neon?