Skip to content

Guide

Is your React or Next.js project affected by the React Server Components hole?

A crafted request can run code on a server that renders React Server Components, before any login. Next.js has its own advisories on top. Here's who is affected, how to check every project on your Mac, and the commands to update.

By · Updated · 7 min read

The short answer

Run npm ls next in the project. Next.js 16.0.0 to 16.4.4 needs 16.4.5, and Next.js 10 to 15 need 15.5.29 or later. Apps that use react-server-dom-webpack, -parcel or -turbopack directly need 19.0.9, 19.1.10, 19.2.9 or 19.3.1. Projects that use React only in the browser are not affected. Rebuild and redeploy after updating.

On this page

What happened

On 14 October 2026 the React team published a critical advisory, GHSA-xqc2-xf4c-x3h3. On 10 November it was given the CVE number CVE-2026-126187, so you may see either name for the same hole. A crafted request to a server that renders React Server Components can run code on that server, without logging in. The code is in three packages: react-server-dom-webpack, react-server-dom-parcel and react-server-dom-turbopack.

The React team says it only affects extremely rare cases where a response carries multiple typed arrays and a value the attacker controls. They still recommend updating immediately.

Next.js doesn't install those packages from npm. It ships its own copy inside the next package, so for a Next.js app the next version is what to check. Separately, on 22 October Next.js published three advisories about its own code:

  • GHSA-xqc2-xf4c-x3h3, CVE-2026-126187 (React, critical)

    What it is
    Remote code execution in React Server Components
    Affected
    react-server-dom-webpack, -parcel and -turbopack 19.0.0 to 19.0.8, 19.1.0 to 19.1.9, 19.2.0 to 19.2.8, and 19.3.0
    Fixed in
    19.0.9, 19.1.10, 19.2.9, 19.3.1
  • GHSA-673q-mjm6-r5xr (Next.js, critical)

    What it is
    Remote code execution in a use cache function that returns multiple typed arrays (App Router with Cache Components)
    Affected
    next 16.0.0 to 16.4.0
    Fixed in
    16.4.1
  • GHSA-2464-fhr4-w9xw (Next.js, critical)

    What it is
    Remote code execution in the Image Optimization API when SVG files are used, through an upstream library (sharp), only when Next.js runs on glibc-based Linux
    Affected
    next 10.0.0 to 15.5.27, and 16.0.0 to 16.4.0
    Fixed in
    15.5.28, 16.4.1
  • GHSA-p3m5-59mp-jv5r, CVE-2026-94482 (Next.js, high)

    What it is
    Denial of service: crafted requests cause excessive CPU use in an App Router app with at least one Server Action. The Pages Router, and apps without Server Actions, are not affected.
    Affected
    next 13.0.0 to 15.5.27, and 16.0.0 to 16.4.0
    Fixed in
    15.5.28, 16.4.1
The four advisories, and the versions that fix them

Later releases than the ones in the last column have the fixes too. For GHSA-673q-mjm6-r5xr, Next.js says there is no workaround, and to upgrade even if your app has no such use cache function.

GHSA-2464-fhr4-w9xw matters for sites deployed on Linux servers, not for a dev server on your Mac, because it only applies when Next.js runs on glibc-based Linux. Next.js gives a workaround for it: make sure the sharp that Next.js uses is 0.35.5 or later.

On 3 November Next.js released 16.4.5 and 15.5.29 with fixes for seven more advisories, all rated medium. Most are in use cache and Cache Components. The others are about HttpOnly cookies on Edge runtime routes (GHSA-f3mh-rxg3-f5g2), SVG files in image optimization (GHSA-7qx7-33qx-rqx2) and self-hosted apps that forward fetched responses (GHSA-pc58-hwjq-p385). Between them they affect Next.js 16.0.0 to 16.4.4, and those three also affect Next.js 15 up to 15.5.28. Their CVE numbers run from CVE-2026-119346 to CVE-2026-119351, plus CVE-2026-119790.

16.4.5 and 15.5.29 have the October fixes too, so it's simplest to go straight to them. The commands below do.

Who is affected, and who isn't

  • Next.js apps. Check the version of next, whatever router you use. The React hole, GHSA-673q-mjm6-r5xr and GHSA-p3m5-59mp-jv5r need the App Router. GHSA-2464-fhr4-w9xw is in the Image Optimization API, which both routers use, and applies when the site runs on glibc-based Linux.
  • Apps that render React Server Components without Next.js. These use react-server-dom-webpack, -parcel or -turbopack directly, or through a framework or bundler plugin. Check those packages.
  • React only in the browser. Not affected. The React team says an app whose React code doesn't use a server, or that uses no framework, bundler or plugin with React Server Components, is not affected.

A dev server that only this Mac can reach is much harder to attack, but should still be updated, and so should any site built from the project. The site you deploy is what other people can send requests to.

Check one project

In the project folder, run the command for its package manager:

The versions installed in this project
# npm
npm ls next react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack

# pnpm
pnpm why next

# yarn
yarn why next

# Any of them: the next version Node.js loads
node -p "require('next/package.json').version"

In a Next.js project, npm ls usually lists next and nothing for the react-server-dom packages. That's expected: the copy Next.js uses is inside it, in node_modules/next/dist/compiled/, so the next version is the one to compare with the table.

If npm ls prints invalid next to next, package.json asks for one version and node_modules holds another. The one in node_modules is the one that runs. Run your install to bring them in line.

Find every project on your Mac

Old projects, clones and worktrees each have their own node_modules. This lists every installed copy of next and the three react-server-dom packages under your home folder, with its version:

Every installed copy, version first (it can take a few minutes)
find -E ~ -regex '.*/node_modules/(next|react-server-dom-(webpack|parcel|turbopack))/package\.json' 2>/dev/null |
  while read -r f; do echo "$(grep -m1 '"version"' "$f" | cut -d'"' -f4)  $f"; done

Each line is a version and a path, and the project is the folder before node_modules. Compare the version with the table. macOS may ask whether Terminal can open folders such as Documents or Desktop while it runs.

The command only finds projects that have been installed. A project with a lockfile but no node_modules gets the versions in its lockfile the next time you install it.

To check installed copies and lockfiles in one go, there's a free, open-source command-line tool from the maker of iKnowMyMac, rsc-check. It needs Node.js 18 or later:

Every project under a folder: installed copies and lockfiles
npx @deepaks612/rsc-check ~/code

For each affected project it prints the version to move to and the command for its package manager, and names the parent package when the affected one comes in through another dependency. Leave out the folder to scan your home folder. It only reads files, changes nothing, and sends nothing: the advisory data is built in.

Update Next.js

Use the package manager the project already uses: its lockfile tells you (package-lock.json for npm, pnpm-lock.yaml for pnpm, yarn.lock for yarn, bun.lock for Bun). For Next.js 16:

Next.js 16: update to 16.4.5
# npm
npm install next@16.4.5

# pnpm
pnpm add next@16.4.5

# yarn
yarn add next@16.4.5

# Bun
bun add next@16.4.5

For Next.js 15, use next@15.5.29 in the same commands. Next.js 10 to 14 have no fixed release on their own lines, so move the project to 15.5.29 or 16.4.5 and check that it still builds. Next.js says that upgrading also makes package managers fetch a fixed version of sharp, the image library behind GHSA-2464-fhr4-w9xw.

Update react-server-dom packages

If the project lists react-server-dom-webpack, -parcel or -turbopack in its own package.json, update it to the fixed release on its line: 19.0.9, 19.1.10, 19.2.9 or 19.3.1. react-server-dom-webpack 19.2.9 asks for react and react-dom 19.2.9 or later, so update the three together:

Example for the 19.2 line (use your package manager's add command)
npm install react-server-dom-webpack@19.2.9 react@19.2.9 react-dom@19.2.9

If the package comes in through another dependency, a framework or a plugin, update that dependency first. If it has no release with the fix yet, force the version with an override in package.json, then run your install:

Overrides in package.json, one per package manager
// npm and Bun
"overrides": { "react-server-dom-webpack": "19.2.9" }

// pnpm
"pnpm": { "overrides": { "react-server-dom-webpack": "19.2.9" } }

// yarn
"resolutions": { "react-server-dom-webpack": "19.2.9" }

Use the package name and line the project has. Remove the override once the dependency ships the fix.

After updating

  1. Run npm ls next (or pnpm why next) again and check that it shows 16.4.5, or 15.5.29 on the 15 line, or later.
  2. Stop and restart any dev server. A running server keeps the old code until it restarts.
  3. Build the project and deploy it. A deployed site runs the version it was built with, until you deploy again.

To see which Node.js servers on your Mac accept connections from other machines, run lsof -nP -iTCP -sTCP:LISTEN | grep node. 127.0.0.1 or [::1] means this Mac only, and * means other machines on your network too. The Next.js CLI docs say next dev listens on 0.0.0.0 by default. next dev -H 127.0.0.1 keeps it to this Mac.

Package Watch in iKnowMyMac

FAQ

Questions

Something else? support@iknowmymac.com

Why doesn't npm ls show react-server-dom-webpack in my Next.js project?

Next.js ships its own copy of that code inside the next package, so check the next version instead: 16.4.5 or later, or 15.5.29 or later on the 15 line.

My app uses the Pages Router. Do I need to update?

Yes. The React hole, GHSA-673q-mjm6-r5xr and GHSA-p3m5-59mp-jv5r need the App Router, but GHSA-2464-fhr4-w9xw is in the Image Optimization API, which the Pages Router uses too. It applies when the site runs on glibc-based Linux, so update before your next deploy. It was fixed in 15.5.28 and 16.4.1. Go straight to 15.5.29 or 16.4.5, which also have the November fixes.

Is a Next.js dev server on my Mac at risk?

A dev server only this Mac can reach is much harder to attack, but update it anyway, and the site built from it. The SVG advisory, GHSA-2464-fhr4-w9xw, only applies on glibc-based Linux, so it concerns the deployed site, not next dev on a Mac. next dev listens on 0.0.0.0 by default, so other machines on your network can reach it unless you start it with -H 127.0.0.1.

Do I need to update react and react-dom?

Not for Next.js: the fix is in next. The React advisory lists only react-server-dom-webpack, -parcel and -turbopack. If you update one of those directly, 19.2.9 asks for react and react-dom 19.2.9 or later, so update them together.

Is there a tool that checks every project at once?

Yes. npx @deepaks612/rsc-check scans a folder for projects, reads what is installed in node_modules and the lockfile, and prints the fix for each affected one. It's free and open source (MIT), from the maker of iKnowMyMac. Package Watch in iKnowMyMac keeps checking in the background and can make the fix for you, with Undo.

Is CVE-2026-126187 the same as GHSA-xqc2-xf4c-x3h3?

Yes. GHSA-xqc2-xf4c-x3h3 is the React team's advisory from 14 October 2026, and CVE-2026-126187 is the CVE number it was given on 10 November. The affected and fixed versions are the same, so everything on this page applies.

When were these published?

The React advisory on 14 October 2026, and the three Next.js advisories on 22 October 2026. Seven more Next.js advisories, all rated medium, followed on 3 November 2026, fixed in 16.4.5 and 15.5.29.

Know why your Mac is slow.

macOS 15 Sequoia or later · Apple silicon. A 51.4 MB native app, notarized by Apple. No account, no analytics, no telemetry.

One-time purchase · every feature · 14-day refund