Add note about error boundaries

This commit is contained in:
Gabe Kangas 2023-03-13 00:00:35 -07:00
parent d9f6df6366
commit 4009af8d3c
No known key found for this signature in database
GPG Key ID: 4345B2060657F330

View File

@ -64,6 +64,33 @@ But why _this_ style?
See the discussion on the PR that introduced this pattern: [#2082](https://github.com/owncast/owncast/pull/2082).
## Error Boundaries
Components that have substantial state and internal functionality should be wrapped in an [Error Boundary](https://reactjs.org/docs/error-boundaries.html). This allows for catching unexpected errors and displaying a fallback UI.
Components that are stateless views are unlikely to throw exceptions and don't require an error boundary.
The `ComponentError` component is a pre-built error state that can be used to display an error message and a bug reporting button.
### Example
```tsx
import { ErrorBoundary } from 'react-error-boundary';
<ErrorBoundary
// eslint-disable-next-line react/no-unstable-nested-components
fallbackRender={({ error: e, resetErrorBoundary }) => (
<ComponentError
componentName="BrowserNotifyModal"
message={e.message}
retryFunction={resetErrorBoundary}
/>
)}
>
<YourFunctionality/>
</ErrorBoundary
```
## Storybook
We use [Storybook](https://storybook.js.org/) to create a component library where we can see and interact with each component.