Most security tools look for a CVE number. A CVE is a standard ID that scanners, dashboards and risk reports use to say “this software has a known hole.” When a serious bug has no CVE, those tools can stay quiet. The dashboard looks clean. The app can still be vulnerable.
That is the uncomfortable part of a React flaw disclosed on 14 October 2026. The React team rated it Critical, with a score of 9.5 out of 10 on CVSS version 4. In the worst case, a person on the internet could run their own code on the server, without logging in and without anyone clicking a link. A fix was released the same day. As of mid-November 2026, the issue was still tracked by a GitHub advisory ID, not by a CVE number.
If you run Next.js or any other framework that uses React Server Components, do not wait for a scanner to tell you to patch. Check the versions yourself, upgrade, and redeploy. At DayDecoder, a custom software company in Ahmedabad, this is the kind of review we do on the React and Next.js products we build and maintain.
Key takeaways
- The React advisory is GHSA-xqc2-xf4c-x3h3, published on 14 October 2026. The Next.js advisory is GHSA-673q-mjm6-r5xr. Both are rated Critical at 9.5. As of mid-November 2026 they did not have a CVE number.
- The bug lives in the server packages that power React Server Components. Browser-only React apps are not affected. Apps that do not use a framework or bundler that supports React Server Components are not affected.
- React says the issue only affects extremely rare cases, but still tells you to update immediately. Next.js says there is no known workaround, and you should upgrade even if you do not think you have the risky pattern.
- For Next.js 16, the first fix was 16.4.1. If you are on 16.0.0 through 16.4.0, you are in the affected range. Upgrade and redeploy. Do not rely only on
npm audit. - Upgrading
reactandreact-domis not enough in a Next.js app, because Next.js ships its own copy of the server runtime. You must upgrade thenextpackage.
What React Server Components are, in plain language
React is the library behind a large share of modern websites. For years, most of that work happened in the browser. The server sent JavaScript, and the user’s device drew the page.
React Server Components, often shortened to RSC, change that split. Some parts of the page can run on the server, talk to a database or a file, and send a prepared result to the browser. The idea is to keep secrets and heavy work off the user’s device, and to make pages faster.
Next.js is the most common framework that uses this model, especially in the App Router. Other tools can use it too. The important point for this advisory is simple: the vulnerable code runs on the server, in packages whose names start with react-server-dom-.
If your site is a purely client-side React app, with no server React and no RSC framework, this particular advisory does not apply to you. If you are not sure, assume you need to check. Many Next.js apps use server components without the team using that name day to day.
What the official advisories actually say
The React advisory is short, and that is intentional. It says crafted payloads aimed at frameworks that support React Server Components can lead to remote code execution. Remote code execution, or RCE, means an attacker can make the server run code they chose. “Unauthenticated” means they do not need an account.
React also says this only affects extremely rare cases, where a response carries multiple typed arrays and a value the attacker can influence. A typed array is a JavaScript way of holding raw binary data, such as numbers in a tight list. You might never have written one by hand. A library you use might still return more than one of them from a cached server function.
The Next.js advisory is more specific about the shape in that framework. It says a vulnerability in applications that use the App Router with Cache Components can lead to remote code execution when a use cache function returns multiple typed arrays. Cache Components is Next.js’s newer caching model, where you opt into caching with a use cache directive. New Next.js 16.4 projects can have this model turned on by default, which is one reason teams may not realise they are in the potentially affected group.
Both advisories agree on the practical point. There is no known workaround. Upgrade immediately, even if you do not think your code contains the pattern.
The score of 9.5 is high, but the “attack requirements” part of the score is also worth understanding. The attack can come over the network, it is rated as low complexity, and it needs no password and no click. At the same time, the application has to be in a state where the rare response pattern exists. A critical score does not mean every unpatched app is easy to abuse. It does mean that where the pattern exists, the impact can be a full server compromise. That is why the vendors tell you not to spend days proving you are safe. Patch first.
Who is affected, and who is not
| Software | Affected versions | Fixed versions |
|---|---|---|
react-server-dom-webpack |
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 | 19.0.9, 19.1.10, 19.2.9, or 19.3.1, matching your line |
react-server-dom-turbopack |
Same ranges as above | Same fixed versions as above |
react-server-dom-parcel |
Same ranges as above | Same fixed versions as above |
Next.js (next) |
16.0.0 through 16.4.0 | 16.4.1 or later |
The React advisory’s patch list once wrote “19.0.09.” That is a typo. The fixed release on the 19.0 line is 19.0.9.
You are not affected if your React code does not use a server, or if you do not use a framework, bundler or bundler plugin that supports React Server Components. Next.js 15 is not listed in the Next.js advisory for this particular issue. You should still keep a 15.x app on a supported, patched line for other fixes, but this article is about the RSC advisory above, not about every October or November patch.
For Next.js 16, 16.4.1 was the first release that fixed this flaw, on 14 October 2026. Later security releases on the 16.4 line, including 16.4.5 in early November 2026, fix additional issues. If you have not yet moved past 16.4.0, go to the current 16.4.x release, not only to 16.4.1, so you pick up those later fixes as well.
Why a clean scan may not have told you
As of mid-November 2026, this flaw was not identified by a CVE number. Many enterprise scanners, ticketing rules and monthly patch reports are built around CVEs. If the number does not exist, the row may never appear.
There is a second trap in Next.js. Next.js compiles its own copy of the React Server Components runtime into the next package. A check that only looks for react-server-dom-webpack in your package.json can come back empty, while the vulnerable code is still inside next. Upgrading react and react-dom does not replace that bundled copy. You have to upgrade Next.js itself, rebuild, and redeploy.
A third trap is assuming npm audit is complete. Advisory feeds can lag, and a scan that only understands CVE IDs will not match a GHSA-only issue. Search for the advisory IDs themselves if your tool allows it: GHSA-xqc2-xf4c-x3h3 and GHSA-673q-mjm6-r5xr. Then confirm the resolved versions in your lockfile and in the running image, not only in a spreadsheet of intended versions.
Attention around this advisory rose again in the second week of November 2026, about four weeks after the fix. By then, public test code for the flaw had appeared. We will not describe that code here. The practical message is enough: the quiet period after disclosure is over. If you have not patched yet, do it now.
As of 10 November 2026, public statements from React, Vercel and the US cybersecurity agency CISA had not reported exploitation in the wild. That is reassuring, but it is not a reason to wait. A “no known attacks yet” note can change quickly once a fix is a month old.
This is not the same as the earlier “React2Shell” bug
You may remember a severe React Server Components issue from December 2025, often called React2Shell, which had a CVE number and was abused widely and quickly. This October 2026 advisory is not that bug. It is in related packages, but the official write-ups describe a narrower trigger. React itself calls the affected cases extremely rare.
Please do not treat “narrower” as “safe to ignore.” The official guidance is still to upgrade immediately. Just do not copy advice from the 2025 incident and assume the same scanners, the same CVE listings, or the same default-app impact apply here.
What to do now
Do not try to prove that your code is safe by reading every function. The vendors say there is no workaround, and teams often do not know whether a cached function returns more than one typed array, especially when a helper library is involved.
- List every Next.js and RSC app you run, including preview deployments, internal tools and forgotten staging sites.
- Check the resolved version, not the range in
package.json. In a Next.js repo, runnpm ls next(or the yarn or pnpm equivalent) in each project and each container image. - If you are on Next.js 16.0.0 through 16.4.0, upgrade to the current 16.4.x release (16.4.1 or later; 16.4.5 was the current target after the early November 2026 security releases). Then rebuild.
- If you use RSC outside Next.js, upgrade
react-server-dom-webpack,react-server-dom-turbopackorreact-server-dom-parcelto 19.0.9, 19.1.10, 19.2.9 or 19.3.1, matching your current line. Check your framework vendor for its own fixed release. - Redeploy every environment. Updating a lockfile on a laptop does not change what is already running. Pay attention to preview and branch deployments, which can keep serving an old bundle until they are rebuilt or deleted.
- Do not trust a clean CVE scan as sign-off. Record the advisory IDs, the old version, the new version, and the deploy time, so you can show that the running service actually moved.
If you cannot upgrade in the next few hours, still plan the upgrade as the only complete fix. Short-term hardening, such as reviewing who can call server actions and what those actions are allowed to do, is good practice in any case. It is not a substitute for the patch.
After you patch
Confirm the running version one more time, in production, after the deploy. If you use a content delivery network or a container cache, make sure the new build is what users hit.
This is also a good moment to tighten how you watch framework advisories. Add the React and Next.js security advisory feeds to the same place you already watch CVEs. Give one person the job of checking those feeds on disclosure days, not only on “patch Tuesday.” And keep an inventory of which apps run which version of next. The hardest part of a flaw like this is often not the upgrade itself. It is knowing every place the old version is still running.
If you have not already applied the other Next.js security fixes from October and early November 2026, pick them up in the same upgrade window. Our earlier guide on Next.js 16.4 Cache Components covers a different set of advisories in the 16.4.5 release, including cache issues that can leak one tenant’s data to another. That work is separate from this RCE, but the upgrade target is the same current 16.4 line.
How we approach this at DayDecoder
DayDecoder is a custom software company in Ahmedabad. We build and maintain Next.js, React, Laravel and Node.js products. When a framework publishes a critical advisory, we check the running versions, apply the official upgrade, and redeploy, rather than betting that a scanner will notice a bug with no CVE.
If you want help checking a Next.js estate, planning a safe 16.4 upgrade, or confirming that production actually matches the patched lockfile, use the contact form. We reply within one business day.
FAQ
Does a clean vulnerability scan mean we are safe?
Not by itself. As of mid-November 2026 this flaw had no CVE number, and Next.js hides its own copy of the vulnerable runtime inside the next package. Check versions directly and search for the GHSA IDs.
Our app does not use use cache. Do we still need to upgrade?
Yes if you are on an affected Next.js or RSC version. Next.js says you should upgrade immediately even if you do not think you have the risky functions. There is no official workaround.
Is a client-only React app affected?
No. The React advisory says you are not affected if your React code does not use a server, or if you do not use a framework, bundler or plugin that supports React Server Components.
Is this the same as React2Shell?
No. React2Shell was a different, widely exploited flaw from December 2025. This October 2026 advisory is a separate issue with a narrower official trigger. You still need to patch it on its own terms.
Had this been used in real attacks as of mid-November 2026?
As of 10 November 2026, React, Vercel and CISA had reported no exploitation in the wild. That can change. The fix has been available since 14 October 2026, so there is no reason to delay.
Which Next.js version should we install?
If you are on the 16 line, install 16.4.1 or later. The current 16.4.x release is the safer target because it also includes later security fixes. Then rebuild and redeploy.
Written by
Prakash Tank
Founder & Full-Stack Architect, DayDecoder
Prakash started as a certified Laravel developer and grew into a full-stack architect who owns a project end to end: requirements, architecture, development, deployment, and support. He designs event-driven systems with...
More about Prakash