Error Recovery

One widget fails. The rest keeps working.

React error boundaries isolate every component. When a widget throws an error, it shows a recovery card — retry, reload, or report. The rest of your page stays fully operational.

Active Users
2,847
+12.4%
Revenue
Component Error

This widget encountered an unexpected error. Other widgets are unaffected.

Retry
Report
Recent Activity
Blog post published2m ago
New entity created5m ago
Workflow completed8m ago
Quick Settings
Dark mode
Notifications
Auto-save

Component-level isolation

Every widget, panel, and section is wrapped in its own React error boundary. Errors are caught at the smallest possible scope. A failing chart widget cannot take down your sidebar, navigation, or any other widget on the page.

  • Each dashboard widget has its own error boundary
  • Sidebar, header, and navigation have independent boundaries
  • Failed components render recovery cards, not blank space
  • Surrounding components continue receiving real-time updates
  • Error state is local — no global state corruption
  • Nested boundaries catch errors at the closest level
Error Boundary Hierarchy
Page BoundaryLast resort
Section Boundary
Widget OK
Caught!
Widget OK

Three recovery actions

Every recovery card offers three clear actions. Most issues resolve with a single retry. For persistent errors, the report action sends full diagnostics to the engineering team.

  • Retry — resets error state and re-renders the component
  • Reload — refreshes the section with fresh data from the server
  • Report — sends stack trace, component tree, and context to Sentry
  • Recovery reconnects to Convex reactive queries automatically
  • No stale state after recovery — always shows current data
  • Action buttons are keyboard-accessible
Retry
Re-render the component. Resolves transient issues like race conditions.
Reload
Fetch fresh data from the server and re-render from scratch.
Report
Send full error details — stack trace, context, browser info — to the team.

Graceful degradation

Not everything needs to work for the system to be useful. Missing Sentry config? Error tracking silently disables. No AI API key? Content generation shows a setup prompt. Missing integration credentials? The connector pauses. Nothing crashes.

  • Missing config silently disables features, never crashes
  • Optional features degrade independently
  • Core functionality works even when optional services are down
  • Fire-and-forget for non-critical operations (analytics, telemetry)
  • Error tracking itself is fail-safe — Sentry errors never break the app
  • Reduced functionality is always better than no functionality
Degradation Examples
SENTRY_DSNnot set
Error tracking disabledApp works normally
AI_API_KEYnot set
AI features show setup promptData management works
POSTHOG_KEYnot set
Analytics disabledAll features work
SANITY_TOKENnot set
CMS publishing pausedContent editing works
3
Boundary levels
3
Recovery actions
0
Full-page crashes
<1s
Recovery time

How it feels

Errors are contained, not contagious.

A chart widget hits an edge case? You see a small recovery card in that widget's spot — with a retry button that usually fixes it in one click. Meanwhile, your kanban board is still updating, your sidebar is still navigating, and your AI chat is still responding. One hiccup does not become a full-page crash.

Frequently asked questions

Your data is incomplete. Fix it.

Define your schema. Import your data. Let AI enrich every record. See quality scores improve in real time. Free to start, no credit card.

Command Palette

Search for a command to run...