• Stars
    star
    184
  • Rank 209,187 (Top 5 %)
  • Language
    JavaScript
  • Created about 9 years ago
  • Updated over 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

React Transform that catches errors inside React components

This Project Is Deprecated

React Hot Loader 3 is on the horizon, and you can try it today (boilerplate branch, upgrade example). It fixes some long-standing issues with both React Hot Loader and React Transform, and is intended as a replacement for both. The docs are not there yet, but they will be added before the final release. For now, this commit is a good reference.

react-transform-catch-errors

react-transform channel on discord

A React Transform that catches errors inside render() function and renders a React component with an error message instead.

It’s up to you to choose the React component to render an error message. For example, you may use redbox-react that imitates React Native “red screen of death”.

🚧🚧🚧🚧🚧

This is highly experimental tech. If you’re enthusiastic about hot reloading, by all means, give it a try, but don’t bet your project on it. Either of the technologies it relies upon may change drastically or get deprecated any day. You’ve been warned 😉 .

This technology exists to prototype next-generation React developer experience. Please don’t use it blindly if you don’t know the underlying technologies well. Otherwise you are likely to get disillusioned with JavaScript tooling.

No effort went into making this user-friendly yet. The goal is to eventually kill this technology in favor of less hacky technologies baked into React. These projects are not long term.

Installation

First, install the Babel plugin:

npm install --save-dev babel-plugin-react-transform

Then, install the transform:

npm install --save-dev react-transform-catch-errors

Finally, install the component for rendering errors, for example:

npm install --save-dev redbox-react

You may also use a custom component instead.

Now edit your .babelrc to include extra.babel-plugin-react-transform.
It must be an array of the transforms you want to use:

{
  "presets": ["es2015", "stage-0"],
  "env": {
    // only enable it when process.env.NODE_ENV is 'development' or undefined
    "development": {
      "plugins": [["react-transform", {
        "transforms": [{
          "transform": "react-transform-catch-errors",
          // now go the imports!
          "imports": [

            // the first import is your React distribution
            // (if you use React Native, pass "react-native" instead)

            "react",

            // the second import is the React component to render error
            // (it can be a local path too, like "./src/ErrorReporter")

            "redbox-react"

            // the third import is OPTIONAL!
            // when specified, its export is used as options to the reporter.
            // see specific reporter's docs for the options it needs.

            // it will be imported from different files so it either has to be a Node module
            // or a file that you configure with Webpack/Browserify/SystemJS to resolve correctly.
            // for example, see https://github.com/gaearon/babel-plugin-react-transform/pull/28#issuecomment-144536185

            // , "my-reporter-options"
          ]
        }]
        // note: you can put more transforms into array
        // this is just one of them!
      }]]
    }
  }
}

It is up to you to ensure that the transform is not enabled when you compile the app in production mode. The easiest way to do this is to put React Transform configuration inside env.development in .babelrc and ensure you’re calling babel with NODE_ENV=development. See babelrc documentation for more details about using env option.

License

MIT

More Repositories

1

react-hot-loader

Tweak React components in real time. (Deprecated: use Fast Refresh instead.)
JavaScript
12,257
star
2

overreacted.io

Personal blog by Dan Abramov.
JavaScript
7,053
star
3

react-hot-boilerplate

Minimal live-editing example for React
JavaScript
3,905
star
4

react-transform-boilerplate

A new Webpack boilerplate with hot reloading React components, and error handling on module and component level.
JavaScript
3,372
star
5

whatthefuck.is

An opinionated glossary of computer science terms for front-end developers. Written by Dan Abramov.
CSS
3,008
star
6

react-makes-you-sad

Here’s a flowchart to make you happy again!
Makefile
2,093
star
7

react-document-title

Declarative, nested, stateful, isomorphic document.title for React
JavaScript
1,866
star
8

flux-react-router-example

A sample app showcasing Flux with React Router
JavaScript
1,431
star
9

react-side-effect

Create components whose nested prop changes map to a global side effect
JavaScript
1,217
star
10

babel-plugin-react-transform

Babel plugin to instrument React components with custom transforms
JavaScript
1,080
star
11

suspense-experimental-github-demo

Sample project built with Suspense to demonstrate render-as-you-fetch
JavaScript
807
star
12

todos

Examples for “Idiomatic Redux”: one branch per lesson
JavaScript
802
star
13

react-transform-hmr

A React Transform that enables hot reloading React classes using Hot Module Replacement API
JavaScript
779
star
14

subliminal

An opinionated minimalistic VS Code theme for JavaScript
632
star
15

react-proxy

Proxies React components without unmounting or losing their state
JavaScript
459
star
16

react-pure-render

[No Maintenance Intended] A function, a component and a mixin for React pure rendering
JavaScript
451
star
17

redux-devtools-dock-monitor

A resizable and movable dock for Redux DevTools monitors
JavaScript
405
star
18

library-boilerplate

An opinionated boilerplate for React libraries including ESLint, Mocha, Babel, Webpack and an example powered by Webpack Dev Server and React Hot Loader
JavaScript
386
star
19

redux-devtools-log-monitor

The default monitor for Redux DevTools with a tree view
JavaScript
310
star
20

react-blessed-hot-motion

A console app demo using React for rendering, animation, and hot reloading
JavaScript
281
star
21

react-lag-radar

JavaScript
272
star
22

promise-loader

A webpack bundle-loader ripoff with promise interface
JavaScript
216
star
23

react-elmish-example

My personal attempt at understanding Elm architecture
HTML
170
star
24

react-deep-force-update

Force-updates React component tree recursively
JavaScript
122
star
25

the-redux-journey

Slides from my talk at React Europe 2016
JavaScript
89
star
26

react-hot-api

(Deprecated) A generic library implementing hot reload for React components without unmounting or losing their state
JavaScript
88
star
27

gitbook-plugin-prism

Gitbook plugin for Prism highlighting
JavaScript
85
star
28

react-stateful

[No Maintenance Intended] A higher-order React component for lifting state
JavaScript
84
star
29

workshop

React Europe 2016 workshop repo
JavaScript
84
star
30

react-transform

A specification for tools instrumenting React components
68
star
31

disposables

Disposables let you safely compose resource disposal semantics
JavaScript
64
star
32

base16-js

Base16 themes in JS
JavaScript
35
star
33

redux-devtools-themes

Color themes for Redux DevTools monitors
JavaScript
34
star
34

react-for-beginners

This is my cloned version of the Wes Bos Series.
CSS
21
star
35

hooks-perf-issues

This repo demonstrates a situation where it is slower to use React hooks than classes
JavaScript
15
star
36

sc-bug-repro

CSS
15
star
37

testcomp

JavaScript
10
star
38

myapp

just testing lol
JavaScript
10
star
39

tictactoe

A LINQy TicTacToe implementation in C# for StackOverflow
C#
8
star
40

test.react.dev

(Work in progress) React documentation website in Test Test TEst
6
star
41

playtronica

A side project for a friend
JavaScript
5
star
42

redux-bootstrap

Bootstrapping function for Redux applications.
TypeScript
5
star
43

react-dnd-example

JavaScript
4
star
44

draft-js-borked

JavaScript
4
star
45

react-dnd-touch-backend

Touch Backend for react-dnd
JavaScript
3
star
46

gaearon.github.io

Oh hi.
HTML
3
star
47

jest-babel-issue

HTML
2
star
48

react-webpack

A starter template for building with React, Gulp and Webpack
JavaScript
2
star
49

jest-mock-issue-repro

JavaScript
2
star
50

rn-bug-loop

Kotlin
2
star
51

ulonkaFrontend01

JavaScript
1
star
52

HtmlWebpackReplaceManifestAssetsPlugin

A subplugin of the HtmlWebpackPlugin for replacing, in a html template, the assets with theis hashed versions
JavaScript
1
star