@sucoza/error-boundary-visualizer-devtools-plugin
Version:
Error Boundary Visualizer plugin for TanStack DevTools
274 lines (208 loc) • 5.82 kB
Markdown
# Error Boundary Visualizer DevTools Plugin
A comprehensive React DevTools plugin for visualizing, debugging, and managing error boundaries in your React applications.
## Features
### 🎯 Core Capabilities
- **Component Tree Visualization**: Interactive tree view showing React component hierarchy with error boundary coverage
- **Error Tracking & Analytics**: Real-time error monitoring with detailed analytics and metrics
- **Stack Trace Enhancement**: Enhanced stack traces with source map support and code context
- **Error Simulation Tools**: Built-in error triggers for testing error handling
- **Recovery Strategy Editor**: Create and manage custom fallback components and recovery logic
- **Heat Map Visualization**: Visual representation of error frequency across components
- **External Service Integration**: Connect with Sentry, Bugsnag, and other error reporting services
### 📊 Analytics & Metrics
- Total error count and error rate tracking
- Error distribution by category and severity
- Component-level error frequency
- Mean Time To Recovery (MTTR) metrics
- Error boundary coverage percentage
- Historical error trends
## Installation
```bash
npm install @sucoza/error-boundary-visualizer-devtools-plugin
```
## Quick Start
### Basic Setup
```tsx
import { ErrorBoundaryDevTools, ErrorBoundaryWrapper } from '@sucoza/error-boundary-visualizer-devtools-plugin'
function App() {
return (
<>
{/* Add the DevTools panel */}
<ErrorBoundaryDevTools />
{/* Wrap your components with error boundaries */}
<ErrorBoundaryWrapper
boundaryName="App"
level="page"
fallback={({ error, resetErrorBoundary }) => (
<div>
<h2>Something went wrong</h2>
<p>{error.message}</p>
<button onClick={resetErrorBoundary}>Try again</button>
</div>
)}
>
<YourApp />
</ErrorBoundaryWrapper>
</>
)
}
```
### Using the Hook
```tsx
import { useErrorBoundaryDevTools } from '@sucoza/error-boundary-visualizer-devtools-plugin'
function MyComponent() {
const { addError, metrics, config } = useErrorBoundaryDevTools()
// Manually report an error
const handleError = (error) => {
addError({
id: `error-${Date.now()}`,
timestamp: Date.now(),
message: error.message,
stack: error.stack,
category: 'runtime',
severity: 'high',
})
}
return (
// Your component JSX
)
}
```
## API Reference
### Components
#### `<ErrorBoundaryDevTools />`
Main DevTools panel component that provides the UI for error visualization and management.
```tsx
<ErrorBoundaryDevTools
position="bottom-right" // Panel position
defaultOpen={false} // Initial open state
theme="auto" // Theme: 'light' | 'dark' | 'auto'
/>
```
#### `<ErrorBoundaryWrapper />`
Error boundary wrapper component for catching and reporting errors.
```tsx
<ErrorBoundaryWrapper
boundaryId="unique-id"
boundaryName="ComponentName"
level="page" | "section" | "component"
fallback={FallbackComponent}
onError={(error, errorInfo) => {}}
onReset={() => {}}
enableDevTools={true}
>
{children}
</ErrorBoundaryWrapper>
```
### Hooks
#### `useErrorBoundaryDevTools()`
Access the DevTools store and actions.
```tsx
const {
// State
errors,
errorGroups,
errorBoundaries,
componentTree,
metrics,
config,
// Actions
addError,
clearErrors,
selectError,
registerErrorBoundary,
updateConfig,
startRecording,
stopRecording,
exportState,
} = useErrorBoundaryDevTools()
```
## Configuration
### DevTools Configuration
```tsx
const config = {
enabled: true,
position: 'bottom-right',
defaultOpen: false,
theme: 'auto',
shortcuts: {
toggle: 'ctrl+shift+e',
clear: 'ctrl+shift+c',
export: 'ctrl+shift+x',
},
features: {
componentTree: true,
errorHeatmap: true,
stackTraceEnhancement: true,
errorSimulation: true,
externalIntegration: true,
errorRecording: true,
analytics: true,
},
performance: {
maxErrors: 1000,
maxStackFrames: 50,
throttleMs: 100,
enableProfiling: false,
},
}
```
## Error Categories
The plugin automatically categorizes errors:
- **RENDER**: Errors during component rendering
- **ASYNC**: Promise rejections and async errors
- **EVENT_HANDLER**: Errors in event handlers
- **LIFECYCLE**: Errors in lifecycle methods
- **NETWORK**: Network and API errors
- **UNKNOWN**: Uncategorized errors
## Error Severity Levels
- **CRITICAL**: Application-breaking errors
- **HIGH**: Feature-breaking errors
- **MEDIUM**: Degraded functionality
- **LOW**: Minor issues
## Demo Application
Run the demo to see the plugin in action:
```bash
cd demo
npm install
npm run dev
```
Open http://localhost:3000 to view the demo.
## Development
### Building the Plugin
```bash
npm install
npm run build
```
### Running Tests
```bash
npm test
```
### Development Mode
```bash
npm run dev
```
## Browser Support
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
## Performance Considerations
- The plugin uses throttling to prevent performance impact
- Component tree updates are debounced
- Maximum error storage is configurable
- Source map processing is done asynchronously
## Security
- No sensitive data is sent to external services without explicit configuration
- All error data is stored locally by default
- External service integration requires API keys
## Contributing
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
## License
MIT
Part of the @sucoza TanStack DevTools ecosystem.
## Support
For issues and feature requests, please use the GitHub issue tracker.
## Acknowledgments
Built as part of the TanStack DevTools ecosystem.