DEV Community

Cover image for Add Hot Reload to React Rails 6
chowderhead
chowderhead

Posted on

Add Hot Reload to React Rails 6

Photo Cred : Moritz Jager

Assumptions

  • Your running Rails 6
  • You have a React Component Entry Point
  • You have webpack installed in your Rails Repo

Install Dependencies:

yarn add react-hot-loader
Enter fullscreen mode Exit fullscreen mode

Configure Plugins

babel.config.js

...
plugins: [
      'react-hot-loader/babel',
]
...
Enter fullscreen mode Exit fullscreen mode

Modify Root Component

app.js


import React from "react"
import { hot } from 'react-hot-loader'

class App extends React.Component {
  render () {
    return (
      <React.Fragment>
        <Main/>
      </React.Fragment>
    );
  }
}

export default hot(App);

Enter fullscreen mode Exit fullscreen mode

Thats it!

Now we just need to import hot into our base/root component and wrap our export in it.

make sure your running the rails server -p 3000 and also ./bin/webpack-dev-server in another window

This is literally all i needed to do to get hot reloading working for my project.

leave a comment below if you have any issues , and we can try and figure it out!

Top comments (3)

Collapse
 
jetsondavis profile image
Jeff Davidson • Edited

Doesn't work?! I get this error in browser and nothing renders:

Warning: Functions are not valid as a React child. This may happen if you return a Component instead of from render. Or maybe you meant to call this function rather than return it.

Collapse
 
nodefiend profile image
chowderhead

Sorry for the late response Jeff!! can you link the code for the component you have between the <React.Fragments>

Collapse
 
bencoopertx profile image
Ben Cooper

All I had to do was switch the import from import { hot } from "react-hot-loader" => import { hot } from "react-hot-loader/root" and it worked for me. Using react-rails 6.