GitPedia

Eitherx

:pill: Your go-to, prescribed, error-boundary component for React

From mfix22·Updated November 21, 2024·View on GitHub·

:pill: Super simple, reusable either-or [error boundaries][react-error-docs] for React. Your go-to, prescribed, error-boundary component. The project is written primarily in JavaScript, distributed under the MIT License license, first published in 2017. Key topics include: binary, boundaries, either, error-boundaries, express.

Latest release: v1.0.3
August 15, 2021View Changelog →

<Eitherx />

:pill: Super simple, reusable either-or error boundaries for React. Your go-to, prescribed, error-boundary component.

bundle size
tested with jest
PRs welcome
MIT License

Usage

shell
$ npm i --save eitherx
javascript
import Either from 'eitherx' // Wrapper-component Style <Either> {/* Either . . . */} <p>"Happy Child 😄"</p> {/* Or . . . */} <p>"Error child ☹️ (but at least your UI is happy)"</p> </Either> // OR use the `render` and `catchError` props // Render-prop Style <Either render={() => (<p>"Happy Child 😄"</p>)} catchError={({ error }) => ( <div> <p>{`Error: ${error}`}</p> </div> )} />

Wrapper Component Style

Eitherx either renders the first child component, unless an error occurred while rendering, then the second child is rendered. Easy enough 😄.

If you do not pass a second child, and an error occurs, null will be return to React to render.

Render-prop Style

Using this style, you must pass a function for both render and catchError. If an error occurs, the component
returned from catchError will be rendered. Otherwise Eitherx will render the component returned from render.

The catchError function receives an object with the field error set, both of which are passed directly from
React Error Boundaries.

Handling Errors

With either style, you can pass an handleError callback prop to add additional error handling, logging, etc.

Example
javascript
<Eitherx handleError={({ error, info }) => { console.log(info) console.error(error) }} render={() => <Component>"Render Prop"</Component>} catchError={() => <p>"Catch Prop"</p>} />

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from mfix22/eitherx via the GitHub API.Last fetched: 6/17/2026