# Do You Need Node JS for React? Understanding Browser vs. Build Requirements

> Discover if you need Node JS for React. Learn how React runs in the browser and when Node JS is essential for your development workflow and build tooling.

- Repository: [Meta/react](https://github.com/facebook/react)
- Tags: deep-dive
- Published: 2026-02-19

---

**You do not need Node JS to run React in the browser** because React is a pure JavaScript library that executes entirely in the client environment, though Node JS is required for the development workflow including package installation and build tooling.

The React library is fundamentally a browser-side technology that manipulates the DOM through JavaScript. According to the facebook/react source code, the core `react` package contains zero Node-specific runtime dependencies, making it possible to load React applications via CDN or static files without any server-side JavaScript environment.

## How React Runs in the Browser Without Node JS

React operates as a pure JavaScript library that manages component state and renders UI updates entirely within the browser's JavaScript engine. The core implementation in [`packages/react/src/React.js`](https://github.com/facebook/react/blob/main/packages/react/src/React.js) exposes APIs like `useState` and `createElement` that function independently of any Node JS runtime.

When examining [`packages/react/package.json`](https://github.com/facebook/react/blob/main/packages/react/package.json), the `"engines": { "node": ">=0.10.0" }` field serves only as a development-time constraint for package managers and build scripts. This metadata tells developers which Node versions support the tooling workflow, not that the browser requires Node to execute React code.

## When Node JS Is Actually Required

Node JS becomes necessary only during the development and build phases of a React project. The facebook/react repository documentation and tooling configuration indicate three primary scenarios requiring Node:

1. **Package installation** via `npm` or `yarn` to resolve dependencies like `react` and `react-dom`
2. **Build tool execution** including Babel for JSX transpilation, Webpack for bundling, or Vite for development serving  
3. **Development server** processes that watch files and hot-reload changes during local development

Once the build process completes, the resulting static JavaScript bundles contain only standard ECMAScript that executes in any modern browser without Node JS present.

## Running React Without Node JS (CDN Example)

You can deploy a fully functional React application using only static HTML and CDN-hosted scripts. The following example loads React and ReactDOM from unpkg and renders a stateful component without any Node JS involvement:

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>React without Node</title>
    <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  </head>
  <body>
    <div id="root"></div>

    <script>
      const { useState } = React;

      function Counter() {
        const [count, setCount] = useState(0);
        return React.createElement(
          "div",
          null,
          React.createElement("h1", null, count),
          React.createElement(
            "button",
            { onClick: () => setCount(count + 1) },
            "Increment"
          )
        );
      }

      ReactDOM.createRoot(document.getElementById("root")).render(
        React.createElement(Counter)
      );
    </script>
  </body>
</html>

```

This approach leverages the UMD builds available at [`packages/react/index.js`](https://github.com/facebook/react/blob/main/packages/react/index.js) and [`packages/react/jsx-runtime.js`](https://github.com/facebook/react/blob/main/packages/react/jsx-runtime.js), which expose React globals directly to the browser window object. All code executes client-side without touching a Node process.

## The Standard Node-Based Workflow

While Node JS isn't required for execution, it remains the industry standard for React development. The typical workflow involves installing packages locally and using a bundler to transform modern JavaScript and JSX into browser-compatible code:

```bash

# Install React and build tools (requires Node)

npm install react react-dom
npm install --save-dev vite

```

```javascript
// src/main.jsx
import { useState } from "react";
import { createRoot } from "react-dom/client";

function Counter() {
  const [count, setCount] = useState(0);
  return (
    <>
      <h1>{count}</h1>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </>
  );
}

createRoot(document.getElementById("root")).render(<Counter />);

```

Running `npm run dev` invokes Node JS to transpile the JSX and serve the application, but the final bundle sent to browsers is pure JavaScript that runs without Node.

## Key Source Files That Prove React Runs Without Node

The facebook/react repository structure confirms the separation between development dependencies and runtime capabilities:

- **[`packages/react/package.json`](https://github.com/facebook/react/blob/main/packages/react/package.json)**: Specifies Node engine requirements for development tooling while defining browser-compatible entry points
- **[`packages/react/index.js`](https://github.com/facebook/react/blob/main/packages/react/index.js)**: The main export that bundlers consume, containing only universal JavaScript
- **[`packages/react/jsx-runtime.js`](https://github.com/facebook/react/blob/main/packages/react/jsx-runtime.js)**: Implements the JSX transformation runtime used by compiled code, functioning independently of Node APIs
- **[`packages/react/src/React.js`](https://github.com/facebook/react/blob/main/packages/react/src/React.js)**: Contains the core React implementation including hooks and component logic, written as standard JavaScript without Node-specific imports

These files demonstrate that React's runtime is environment-agnostic JavaScript, while Node JS serves exclusively as a development and build platform.

## Summary

- **React executes entirely in the browser** as pure JavaScript without requiring Node JS on the client machine
- **Node JS is strictly a development dependency** used for package management, build tooling, and local development servers
- **CDN-based deployment** is fully supported through UMD builds available in `packages/react/`
- **Production bundles** are static JavaScript files that run in any modern browser environment
- The `engines` field in [`packages/react/package.json`](https://github.com/facebook/react/blob/main/packages/react/package.json) applies only to development workflows, not runtime requirements

## Frequently Asked Questions

### Can you run React without installing Node JS?

Yes. You can load React directly in the browser using CDN links like `https://unpkg.com/react@18/umd/react.development.js` and write components using vanilla JavaScript or JSX via Babel standalone. The facebook/react repository provides UMD builds specifically for this browser-only usage pattern.

### Why does React's package.json specify a Node engine version?

The `"engines": { "node": ">=0.10.0" }` declaration in [`packages/react/package.json`](https://github.com/facebook/react/blob/main/packages/react/package.json) indicates which Node versions are required to run the package manager scripts and build tools during development. This constraint ensures compatibility with the npm/yarn workflows used to develop React itself, not runtime requirements for browser execution.

### Is Node JS required for React production deployment?

No. Once your application is built, the resulting static files (HTML, CSS, and JavaScript bundles) can be deployed to any static hosting service or CDN without Node JS. The production build contains only standard JavaScript that executes in the browser's engine, with no dependencies on server-side Node APIs.

### Can you use React with just HTML and JavaScript?

Yes. By including React and ReactDOM via `<script>` tags from a CDN, you can write React applications using only HTML files and inline JavaScript. While modern development typically uses Node-based tooling for JSX compilation and module bundling, the core `react` library functions perfectly in a zero-build environment using `React.createElement` instead of JSX syntax.