Server Side React Rendering

In order to understand server-side rendering in React, i created the most basic example using Express, Babel and Parcel.

Let's get started.

Our app's structure is going to be like this:

├─ src/
│  ├─ app.jsx
├─ client.js
├─ server.js
├─ package.json

At first, we are going to download the react, react-dom, express, parcel and nodemon packages.

We also need to install @babel/preset-react to support .jsx on Node and @babel/register to compile .jsx on runtime since .jsx files are not natively supported by Node.

client.js has react imported and we hydrate #root element where we render our app.

hydrateRoot lets you display React components inside a browser DOM node whose HTML content was previously generated by react-dom/server.

server.js now has a Babel config file at the top. The rest is a basic Express app.

createElement creates React element from component.
renderToString renders a React tree to an HTML string.

Finally, you can run npm run build and then npm start and have a React SSR App up and running! 🚀

Server Side React Example