SSR
Web Streams
Node.js
React
Server-Side Rendering
JavaScript
Web Development

How to Use SSR with Web Streams in Node for React

Listen to article
Deepak Tewatia
October 6, 2025
3 min read

What is Server-Side Rendering (SSR)?

Server-Side Rendering, or SSR, is a way to make your web applications faster and better for search engines. With SSR, the server creates the HTML for a page before it gets to the user's browser. This means users can see content faster, and search engines can read the content more easily. React is a popular library for building user interfaces, and using SSR with React can enhance the user experience.

Why Use Web Streams?

Web Streams allow you to handle data in chunks. Instead of sending all the content at once, you can send pieces of data as they are ready. This approach is useful because it keeps users engaged. They start seeing parts of your application while the rest loads in the background.

Setting Up Your Environment

Before we start coding, ensure you have Node.js and npm installed on your computer. You can download them from the official Node.js website. Once that's done, create a new directory for your project and initialize it:

mkdir my-react-ssr
cd my-react-ssr
npm init -y

Installing Required Packages

To use React and Web Streams, you'll need a few packages. Install React, ReactDOM, and Express:

npm install react react-dom express

Creating a Simple React Component

Next, let’s create a simple React component. Make a new folder called src and add a file named App.js:

const React = require('react');

function App() {
  return (
    <div>
      <h1>Hello, World!</h1>
      <p>This is my first server-side rendered React app.</p>
    </div>
  );
}

module.exports = App;

Setting Up the Server

Now let's set up the server with Express. Create a new file named server.js in the root folder:

const express = require('express');
const React = require('react');
const ReactDOMServer = require('react-dom/server');
const App = require('./src/App');

const app = express();

app.get('/', (req, res) => {
  const html = ReactDOMServer.renderToString(<App />);
  res.writeHead(200, { 'Content-Type': 'text/html' });
  res.write(html);
  res.end();
});

app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

Implementing Web Streams

Now, let’s enhance our server to use Web Streams. Instead of sending the full HTML at once, we will send it in chunks. To do this, we need to modify our response:

app.get('/', async (req, res) => {
  const { Readable } = require('stream');
  const htmlStream = new Readable({
    read() {
      this.push('<!DOCTYPE html>');
      this.push('<html><head><title>SSR with Web Streams</title></head><body>');
      this.push(ReactDOMServer.renderToStaticMarkup(<App />));
      this.push('</body></html>');
      this.push(null);
    }
  });

  res.writeHead(200, { 'Content-Type': 'text/html' });
  htmlStream.pipe(res);
});

Testing Your Application

Now it's time to test your application. Run the server by executing the following command in your terminal:

node server.js

Then, open your browser and go to http://localhost:3000. You should see your React component being loaded.

Conclusion

Using SSR with Web Streams in Node for React can make your web applications faster and improve the user experience. By sending data in chunks, users can start reading content before the full page loads. This way, you can keep your users engaged and make your app feel snappier. Try it out in your own projects, and see how much it improves your app's performance!

Comments

Y
You
Commenting
0/2000
Loading comments…