React Error Boundary
The Bugsee React Native SDK exports an error boundary component that provides React component APIs to automatically catch and send JavaScript errors from inside a React component tree to Bugsee
import React from "react";
import Bugsee from "react-native-bugsee";
<Bugsee.ErrorBoundary fallback={<p>An error has occurred</p>}>
<SomeElement />
</Bugsee.ErrorBoundary>
Options
Error boundary component exposes several properties that can be passed in for additional configuration.
fallback (React.ReactNode
or Function
)
A React element to render when the error boundary catches an error. Can be an actual React element (i.e.
onError (Function
)
A function that gets called when the Error Boundary encounters an error. onError is useful if you want to propagate the error into a state management library like Redux, or if you want to check any side effects that could have occurred due to the error.
onReset (Function
)
A function that gets called when the Error Boundary is about to reset its state.
Examples
import React from "react";
import Bugsee from "react-native-bugsee";
const DEFAULT_MESSAGE = 'Welcome!';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
message: DEFAULT_MESSAGE,
};
}
render() {
return (
<Bugsee.ErrorBoundary
fallback={({ error, componentStack, resetError }) => (
<React.Fragment>
<div>Error encountered</div>
<div>{error.toString()}</div>
<div>{componentStack}</div>
<button onClick={() => {
this.setState({ message: DEFAULT_MESSAGE });
{/* When resetError() is called, Fallback component will be removed */}
{/* and Bugsee ErrorBoundary's children will be rendered in their initial state */}
resetError();
}}>Reset</button>
</React.Fragment>
)}
>
<div>{this.state.message}</div>
{/* clicking the button below sets an object instead of a string as message prop */}
{/* which will trigger an error in the component tree */}
<button onClick={() => this.setState({ message: { this: "is invalid message" } })}>
Click here to change message!
</button>
</Bugsee.ErrorBoundary>
);
}
}
export default App;