App proxy registered but storefront returns 404 — reproduced across two apps and all install methods

Our custom app’s app proxy is registered but never routes on the storefront — every request to the proxy path returns the storefront 404 page.

- Store: b9ebaf-3.myshopify.com (rosaeck.de)

- Organization: 91638281 (Dev Dashboard)

- App: “ROSA ECK Returns”, app ID 409729794049, client ID a279053e5e64420ed91da193643a88ce

- Proxy config (from shopify.app.toml, deployed as an app version): prefix “apps”, subpath “retoure”, proxy URL https://rosaeck-retouren.rosaeck.workers.dev/portal

- Symptom: GET https://rosaeck.de/apps/retoure and https://b9ebaf-3.myshopify.com/apps/retoure both return 404. The proxy target itself is reachable and healthy. Another app’s proxy on the same store (easyReturns, /apps/returns) works fine, so storefront proxying as such is functional.

- The app installation in the store admin DOES show the proxy URL (Settings → Apps → app details → “App proxy URL”): https://rosaeck.de/apps/retoure. The registration exists, but storefront routing never picks it up.

What we already tried, without effect:

1. Changing the subpath via a new app version.

2. Uninstalling and reinstalling the app.

3. Removing the [app_proxy] block entirely, releasing a version (–allow-deletes), then re-adding it and releasing again (the “remove and re-add the proxy” workaround from threads 22349 / 22417).

4. Customizing the proxy URL as the merchant in the store admin (two different subpaths) — the admin saves and displays the new path, storefront still 404s.

5. Ruled out caching (cache-control: no-store, cache-busting query params).

6. Creating a SECOND, brand-new app whose proxy subpath never collided with anything, and installing it via Shopify managed installation (admin.shopify.com/store/…/oauth/install). Same result. (Context: our FIRST app, ID 409382027265, now uninstalled, initially collided with an existing app’s subpath /apps/returns and got auto-assigned /apps/returns-1 — which also 404ed.)

So this reproduces across two different apps, three install methods (legacy OAuth grant, reinstall, managed installation) and four subpaths.

This matches the Dev Platform app-proxy issue discussed in threads 22349 and 22417 (marked resolved September 2025), but our apps (created August 2026 directly on the Dev Dashboard) show the same behavior.

Could you re-sync or re-register the app proxy for this app/store? Happy to provide more details.

Hey @ROSAECK . Thanks for the thorough reproduction details. I was able to reproduce the 404, so this doesn’t look like an issue with your TOML configuration or proxy endpoint.

I’ll take a look into this and loop back once I have more to share.

Let me know if I can clarify anything in the meantime.

Hey @ROSAECK - I did some further digging and need to correct my initial read here. I was able to confirm that the app proxy lookup succeeds and Shopify is reaching your Worker. The 404 response is coming back from the Worker itself.

The key detail is the trailing slash: /apps/retoure is forwarded to /portal/, not /portal. Any additional path is appended too, so /apps/retoure/foo becomes /portal/foo.

It looks like the Worker router is matching /portal exactly and returning {"fehler":"Unbekannter Pfad."} for /portal/. Updating it to accept /portal/, and ideally /portal/*, should resolve this.

You can confirm the incoming pathname by running:

npx wrangler tail rosaeck-retouren

Then load https://rosaeck.de/apps/retoure and check the request reaching the Worker.

Let me know if that clears the 404 or if I can help out further. Hope this helps!

Thank you Alan — that was exactly it. Our worker only matched the exact path without the trailing slash Shopify appends. After normalizing paths, the proxy works perfectly. Case closed!

@ROSAECK - no problem! Glad this helped!