diff --git a/src/App.tsx b/src/App.tsx index b5f9f76..b3a3fda 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,7 +5,32 @@ import { Dashboard } from './pages/Dashboard' import { AppFrame } from './pages/AppFrame' import { AdminUsers } from './pages/AdminUsers' +// The portal is only ever the top-level frame. If it finds itself loaded inside +// an iframe, it means an app's path fell back to the portal (that app isn't +// deployed or routed in NPM yet) — so render a placeholder instead of recursing +// the whole shell endlessly inside itself. +function EmbeddedFallback() { + return ( +
+ This app isn’t available yet +
++ It hasn’t been deployed or routed on this site. +
+