Skip to content

feat(renderer): add route and app error boundaries - #3594

Merged
setchy merged 3 commits into
mainfrom
feat/renderer-error-boundaries
Nov 1, 2026
Merged

setchy merged 3 commits into
mainfrom
feat/renderer-error-boundaries

Conversation

@setchy

@setchy setchy commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds error handling around the data router introduced in #3593.

  • Adds a RouteError fallback that reuses Oops with a typed recovery action and a shared ReloadButton.
  • Sets errorElement on the root route (full-window fallback) and on ProtectedLayout (keeps the sidebar and shell for screen-level errors).
  • Logs router errors through RouterProvider onError so render errors are reported once, without a re-render.
  • Wraps <App /> in a last-resort AppErrorBoundary for provider or bootstrap failures outside the route tree.
  • Adds unit coverage for the route fallback, the outer boundary, and the recovery action.
  • Adds visual coverage for both fallbacks across the four theme variants, including a chrome-less app error state.

Verification

  • pnpm check
  • pnpm test — 2093 passed
  • pnpm test:visual — 184 passed in the pinned Linux container
  • pnpm build

Notes

  • The router boundary handles unexpected route failures; Oops still handles known domain errors (offline, credentials, scopes).
  • The Reload action is a typed recovery action on Oops, not part of the declarative GitifyErrorAction route model.

Base automatically changed from feat/renderer-data-router to main November 1, 2026 20:25
@github-actions github-actions Bot added dependency Dependency updates enhancement New feature or enhancement to existing functionality labels Nov 1, 2026
@setchy
setchy marked this pull request as ready for review November 1, 2026 20:26
@setchy
setchy requested a review from afonsojramos as a code owner November 1, 2026 20:26
Render a route error element at the root and protected layout using Oops with a reload action, log router errors through RouterProvider onError, and wrap App in a last-resort class boundary for provider and bootstrap failures.
Replace the generic extraActions slot with a typed recovery action on Oops, and share the reload label, icon, and behavior through a ReloadButton primitive.
@setchy
setchy force-pushed the feat/renderer-error-boundaries branch from 242fadd to 33b6c0b Compare November 1, 2026 20:28
@github-actions github-actions Bot removed the dependency Dependency updates label Nov 1, 2026
Screenshot the route error fallback inside the shell and the app-level fallback without chrome across the four theme variants.
@sonarqubecloud

sonarqubecloud Bot commented Nov 1, 2026

Copy link
Copy Markdown

@setchy
setchy merged commit ff55103 into main Nov 1, 2026
23 checks passed
@setchy
setchy deleted the feat/renderer-error-boundaries branch November 1, 2026 20:39
@github-actions github-actions Bot added this to the Release 8.0.0 milestone Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or enhancement to existing functionality

Development

Successfully merging this pull request may close these issues.

1 participant