The BugSnag ErrorBoundary
allows you to capture React render errors in your application. You can also use the FallbackComponent
to display a custom error screen to your users:
// Start BugSnag first...
Bugsnag.start({...})
// Create the error boundary...
const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)
const onError = (event) => {
// callback will only run for errors caught by boundary
}
const ErrorView = ({ clearError }) =>
<div>
<p>Inform users of an error in the component tree.
Use clearError to reset ErrorBoundary state and re-render child tree.</p>
<button onClick={clearError}>Reset</button>
</div>
const App = () => {
// Your main App component
}
export default () =>
<ErrorBoundary FallbackComponent={ErrorView} onError={onError}>
<App />
</ErrorBoundary>
See React’s documentation to find out more about Error Boundaries.
The BugSnag ErrorBoundary
component accepts some additional props
:
onError
– this allows you to pass in an onError
callback which runs only for errors caught by the error boundary.FallbackComponent
– by default the error boundary will attempt to re-render the child tree which may result in nothing being rendered at all. If you specify a FallbackComponent
, when an error happens BugSnag will render this instead. This means you can display a user-friendly error state.When the FallbackComponent
is rendered by the ErrorBoundary
component, the ErrorBoundary
supplies clearError
as a prop to FallbackComponent
. Calling clearError()
will cause a re-render of the child tree instead of the FallbackComponent
.
When render errors happen, they will be reported to BugSnag along with any React-specific info that was available at the time.
In the dashboard, you’ll see errors reported with extra debugging info in a “React” tab. For example: