Skip to content

Docs: Contradictory statements about Proxy/Middleware default runtime in proxy.md #93463

@DevelopSoo

Description

@DevelopSoo

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:

  1. 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."

  2. 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

Metadata

Metadata

Assignees

Labels

No fields configured for Documentation.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions