react-error-handling
React error boundaries and fallback UIs for catching rendering errors. Use when handling component crashes, displaying error states, implementing error recovery, or preventing full-page crashes. Use for ErrorBoundary, componentDidCatch, getDerivedStateFromError, error fallback, error recovery, crash handling, react-error-boundary library.
Works with
Agent Skills format with YAML frontmatter. Claude Code reads it as-is.
---
name: "react-error-handling"
description: "React error boundaries and fallback UIs for catching rendering errors. Use when handling component crashes, displaying error states, implementing error recovery, or preventing full-page crashes. Use for ErrorBoundary, componentDidCatch, getDerivedStateFromError, error fallback, error recovery, crash handling, react-error-boundary library."
license: "MIT"
---
# React Error Handling
## Overview
Error boundaries catch JavaScript errors during rendering, in lifecycle methods, and in constructors of child components. They display fallback UIs instead of crashing the entire component tree. Error boundaries can only be implemented as class components in vanilla React, but the `react-error-boundary` library provides a convenient function component wrapper.
**When to use:** Component crashes, preventing error propagation to parent routes, graceful degradation, user-facing error states, error logging and monitoring.
**When NOT to use:** Event handler errors (use try/catch), async callbacks outside rendering (setTimeout, promises without Suspense), server-side rendering errors, errors in the boundary itself.
## Quick Reference
| Pattern | API | Key Points |
| --------------------- | ---------------------------------------------------------- | ------------------------------------------ |
| Class boundary | `getDerivedStateFromError` + `componentDidCatch` | Manual implementation, full control |
| Function boundary | `<ErrorBoundary FallbackComponent={...} />` | Uses react-error-boundary library |
| Reset mechanism | `resetErrorBoundary()` or `resetKeys={[dep]}` | Auto-reset on state change or manual retry |
| Error logging | `onError={(error, info) => log(error)}` | Log to analytics or monitoring service |
| Fallback component | `FallbackComponent={MyFallback}` | Receives error and resetErrorBoundary |
| Inline fallback | `fallback={<div>Error occurred</div>}` | Static JSX, no error details |
| Render prop fallback | `fallbackRender={({ error, reset }) => <UI />}` | Dynamic fallback with error access |
| Nested boundaries | Wrap at multiple tree levels | Granular error isolation |
| Route-level boundary | TanStack Router `errorComponent` | Delegate to tanstack-router skill |
| Suspense integration | Wrap Suspense boundaries for async errors | Catch errors thrown by Suspense |
| Event handler errors | `try/catch` in handler, not error boundary | Boundaries don't catch event errors |
| useErrorBoundary hook | `const { showBoundary, resetBoundary } = useErrorBoundary` | Manually trigger boundary from child |
## Common Mistakes
| Mistake | Correct Pattern |
| -------------------------------- | ------------------------------------------------------- |
| Using error boundary for events | Use try/catch in event handlers |
| Wrapping every single component | Place boundaries at meaningful UI sections |
| Not providing reset mechanism | Include retry button or resetKeys |
| Showing stack traces in prod | Only render stack in development mode |
| Missing onError for logging | Always log errors to monitoring service |
| Catching errors in boundary self | Error boundaries only catch child component errors |
| Using async code in getDerived | getDerivedStateFromError must be pure, use didCatch |
| Relying on componentDidCatch | Use getDerivedStateFromError for state updates |
| Not testing error boundaries | Test with error-throwing components |
| Ignoring resetKeys pattern | Use resetKeys for automatic recovery on state change |
| Blocking Suspense fallbacks | Error boundaries around Suspense should allow fallbacks |
## Delegation
> If the `tanstack-router` skill is available, delegate route-level error handling (errorComponent, notFoundComponent, loader errors) to it. Otherwise, recommend: `npx skills add oakoss/agent-skills --skill tanstack-router`
- **Error monitoring setup**: Delegate to integration/observability specialists
- **Complex recovery flows**: Use `Task` agent for multi-step error recovery patterns
- **Error boundary testing**: Delegate test writing to testing specialists
## References
- [Class-based error boundaries](references/class-boundaries.md)
- [react-error-boundary library](references/react-error-boundary.md)
- [Fallback UI patterns](references/fallback-patterns.md)
- [Reset and recovery patterns](references/reset-recovery.md)
- [Error boundary placement strategies](references/boundary-placement.md)More Frontend Frameworks skills
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
design-taste-frontend
leonxlnx/taste-skill
Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.

