## Issue
I'm getting a **500 Internal Server Error** ("There's a problem loading this page") when trying to install a Custom App created in the new **Dev Dashboard**. The error happens on the app grant/authorization page, before any permission confirmation is shown.
## App Configuration
This app is intended to be **App Proxy only** — it does not need an Admin UI, OAuth session, or embedded app interface. It only needs `write_app_proxy` scope so that Shopify can proxy storefront requests to my external Cloudflare Worker.
| Setting | Value |
|---|---|
| App type | Custom App (Dev Dashboard) |
| Distribution | Custom (single store) |
| `embedded` | `false` |
| `use_legacy_install_flow` | `false` (Shopify managed install) |
| Scopes | `write_app_proxy` |
| App URL (first attempt) | `https://customer-signup-event-service.customer-signup-service.workers.dev` (returns JSON `{"ok":true}`) |
| App URL (second attempt) | `https://shopify.dev/apps/default-app-home` |
| Redirect URLs | empty |
| App Proxy | configured: prefix=`apps`, subpath=`cse-bind-token`, url=`https://customer-signup-event-service.customer-signup-service.workers.dev/attribution/bind-token` |
| Webhooks API version | `2026-07` |
## What I've Tried
1. **First attempt**: App URL pointed to my Cloudflare Worker (returns JSON). Install → 500 error.
2. **Second attempt**: Changed App URL to `https://shopify.dev/apps/default-app-home` (Shopify's official default app home for extension-only apps), released a new version, reinstalled → still 500.
3. Confirmed the Worker is running and reachable.
4. Confirmed the Shopify store admin works normally (not a store-side issue).
5. Refreshed and retried multiple times over ~1 hour.
6. Checked Shopify status page — no reported incidents.
## Error URL Pattern
The 500 occurs at:
Hey @jiaxin_s - thanks for reaching out. I took a closer look at your configuration there, and the App Proxy settings themselves look reasonable. The part that stands out to me is the combination of embedded=false, Shopify managed installation (use_legacy_install_flow=false), and no redirect URLs.
Our docs currently point non-embedded/API-only apps toward the authorization code grant, while managed installation is primarily documented for CLI/scaffolded apps. Also, https://shopify.dev/apps/default-app-home is intended for extension-only apps, so it isn’t a great fit for an app backed by a Cloudflare Worker.
The App Proxy requests themselves don’t need an OAuth session, they can be verified using Shopify’s signed query parameters as described in Authenticate app proxies.
Could you try the following and see if it helps?
- Set the App URL back to a stable URL served by your Worker, or a small hosted app page.
- If the app remains non-embedded, add a real OAuth callback URL and use the authorization-code installation flow.
- If you want to keep managed installation, try creating a fresh test app with a unique name, since there have been cases where stale installation configuration was cached.
If the same 500 occurs with a fresh app, just share the approximate timestamp/time zone and the x-request-id from the failed request and I can look into things further on our end!
Let me know if I can help out further.