Wrap public/share route trees in ErrorBoundary #109

Closed
opened 2026-07-15 19:52:55 +00:00 by claude-bot · 1 comment
Contributor

Severity: Medium · Confidence: High · Effort: XS · Category: ui

Evidence

  • app/src/App.tsx:97,122 - only AuthenticatedApp wraps its <Routes> in <ErrorBoundary>; :131-139 (/share/:token tree) and :140-156 (/u/... public tree) are uncovered.

Problem
A render-time throw on any public page (PublicMotifPage, PublicProjectPage, PublicProfilePage, EmbedPage, ProjectSharePage) - all reachable by anonymous visitors, including embedded iframes - white-screens with no recovery UI, whereas authenticated pages show the fallback.

Impact
Public/embedded surfaces (the published face of the tool) fail hard and blank instead of degrading gracefully.

Fix
Wrap both public route trees in <ErrorBoundary>.

Acceptance criteria

  • A thrown render error on a public/embed/share page shows the fallback, not a blank page.

Filed from the 2026-07-15 codebase audit. Full report: docs/.internal/report-2026-07-15.md (gitignored).

**Severity:** Medium · **Confidence:** High · **Effort:** XS · Category: ui **Evidence** - `app/src/App.tsx:97,122` - only `AuthenticatedApp` wraps its `<Routes>` in `<ErrorBoundary>`; `:131-139` (`/share/:token` tree) and `:140-156` (`/u/...` public tree) are uncovered. **Problem** A render-time throw on any public page (`PublicMotifPage`, `PublicProjectPage`, `PublicProfilePage`, `EmbedPage`, `ProjectSharePage`) - all reachable by anonymous visitors, including embedded iframes - white-screens with no recovery UI, whereas authenticated pages show the fallback. **Impact** Public/embedded surfaces (the published face of the tool) fail hard and blank instead of degrading gracefully. **Fix** Wrap both public route trees in `<ErrorBoundary>`. **Acceptance criteria** - [ ] A thrown render error on a public/embed/share page shows the fallback, not a blank page. --- _Filed from the 2026-07-15 codebase audit. Full report: `docs/.internal/report-2026-07-15.md` (gitignored)._
Author
Contributor

Both public route trees (/share/* and /u/* — PublicMotif/Project/Profile, Embed, ProjectShare) are now wrapped in <ErrorBoundary>. A render-time throw on a public/embed page shows the recoverable fallback instead of a blank screen.

Shipped in 59e4fdd (test fix 6561f9a), part of the v7.3.0 milestone. Verified on dev (v7.2.1-3-g6561f9a): app suite 65/65 and api suite 268/268 green on the dev server; the one CI red was the known runner flake (iac#159), not this change.

Both public route trees (`/share/*` and `/u/*` — PublicMotif/Project/Profile, Embed, ProjectShare) are now wrapped in `<ErrorBoundary>`. A render-time throw on a public/embed page shows the recoverable fallback instead of a blank screen. Shipped in `59e4fdd` (test fix `6561f9a`), part of the v7.3.0 milestone. Verified on dev (`v7.2.1-3-g6561f9a`): app suite 65/65 and api suite 268/268 green on the dev server; the one CI red was the known runner flake (iac#159), not this change.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/TeaLeaves#109
No description provided.