What is the documentation issue?
Note: I'm not a native English speaker, so I used an AI to help translate this report. Please let me know if anything is unclear or inaccurate.
Summary
The documentation page for the proxy.js|ts file
convention contains two contradictory statements about the
default runtime within the same page.
Page: https://nextjs.org/docs/app/api-reference/file-c
onventions/proxy
The contradiction
1. The "Runtime" section states that Proxy defaults to
Node.js:
Proxy defaults to using the Node.js runtime. The
runtime config option is not available in Proxy files.
Setting the runtime config option in Proxy will throw an
error.
Source: https://nextjs.org/docs/app/api-reference/file-con
ventions/proxy#runtime
2. The "Why 'Proxy'" section states that Middleware
defaults to Edge Runtime:
Also, Middleware defaults to run at the Edge
Runtime, which can run
closer to the client, separated from the app's region.
These behaviors align better with the term "proxy" and
provide a clearer purpose of the feature.
Source: https://nextjs.org/docs/app/api-reference/file-con
ventions/proxy#why-proxy
Both sentences use the present tense and refer to the same
feature (Middleware was renamed to Proxy in v16), so a
reader cannot tell which is currently authoritative.
Why this is confusing
Since middleware was renamed to proxy in v16.0.0,
"Middleware" and "Proxy" refer to the same feature. A
reader landing on this page sees:
- One section saying the default is Node.js (and the
runtime option is forbidden).
- Another section saying the default is Edge Runtime —
used as the rationale for the rename itself.
It is unclear whether:
- (a) the "Why 'Proxy'" paragraph is stale historical
context that was not updated when the default changed to
Node.js, or
- (b) the "Runtime" section is wrong and Edge is still the
actual default.
The version history table also does not include an entry
documenting when (or whether) the default runtime changed
from Edge to Node.js. The closest entries are:
| Version |
Changes |
v15.2.0 |
Middleware can now use the Node.js runtime |
| (experimental) |
|
v15.5.0 |
Middleware can now use the Node.js runtime |
| (stable) |
|
v16.0.0 |
Middleware is deprecated and renamed to |
| Proxy |
|
None of these say the default changed, which adds to the
ambiguity.
Suggested fix
Assuming the "Runtime" section is the source of truth
(Proxy in v16 defaults to Node.js), please:
- Update the "Why 'Proxy'" section so it is clearly
framed as historical context, e.g.:
Historically, Middleware ran at the Edge Runtime by
default, closer to the client and separated from the app's
region. These network-boundary semantics align with the
term "proxy."
- Add a row to the version history table documenting when
the default runtime changed to Node.js (e.g., v16.0.0 —
Proxy defaults to the Node.js runtime; the runtime
option is no longer configurable).
If instead Edge is still the default, the "Runtime"
section needs correcting.
Environment
- Docs page version (per page metadata): 16.2.4,
lastUpdated 2026-04-10
- Next.js installed locally for verification: 16.2.3 (same
wording in node_modules/next/dist/docs/01-app/03-api-ref erence/03-file-conventions/proxy.md)
Is there any context that might help us understand?
No additional context — the contradiction is fully described above.
Does the docs page already exist? Please link to it.
No response
What is the documentation issue?
Summary
The documentation page for the
proxy.js|tsfileconvention contains two contradictory statements about the
default runtime within the same page.
Page: https://nextjs.org/docs/app/api-reference/file-c
onventions/proxy
The contradiction
1. The "Runtime" section states that Proxy defaults to
Node.js:
Source: https://nextjs.org/docs/app/api-reference/file-con
ventions/proxy#runtime
2. The "Why 'Proxy'" section states that Middleware
defaults to Edge Runtime:
Source: https://nextjs.org/docs/app/api-reference/file-con
ventions/proxy#why-proxy
Both sentences use the present tense and refer to the same
feature (Middleware was renamed to Proxy in v16), so a
reader cannot tell which is currently authoritative.
Why this is confusing
Since
middlewarewas renamed toproxyin v16.0.0,"Middleware" and "Proxy" refer to the same feature. A
reader landing on this page sees:
runtimeoption is forbidden).used as the rationale for the rename itself.
It is unclear whether:
context that was not updated when the default changed to
Node.js, or
actual default.
The version history table also does not include an entry
documenting when (or whether) the default runtime changed
from Edge to Node.js. The closest entries are:
v15.2.0v15.5.0v16.0.0None of these say the default changed, which adds to the
ambiguity.
Suggested fix
Assuming the "Runtime" section is the source of truth
(Proxy in v16 defaults to Node.js), please:
framed as historical context, e.g.:
the default runtime changed to Node.js (e.g.,
v16.0.0—Proxy defaults to the Node.js runtime; the
runtimeoption is no longer configurable).
If instead Edge is still the default, the "Runtime"
section needs correcting.
Environment
lastUpdated 2026-04-10
wording in
node_modules/next/dist/docs/01-app/03-api-ref erence/03-file-conventions/proxy.md)Is there any context that might help us understand?
No additional context — the contradiction is fully described above.
Does the docs page already exist? Please link to it.
No response