nextjs - ✅(Solved) Fix Docs: Contradictory statements about Proxy/Middleware default runtime in proxy.md [1 pull requests, 2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
vercel/next.js#93463Fetched 2026-05-05 05:42:55
View on GitHub
Comments
2
Participants
3
Timeline
5
Reactions
0
Assignees
Timeline (top)
commented ×2assigned ×1cross-referenced ×1issue_type_added ×1

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:

VersionChanges
v15.2.0Middleware can now use the Node.js runtime
(experimental)
v15.5.0Middleware can now use the Node.js runtime
(stable)
v16.0.0Middleware 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)

Error Message

error.

Root Cause

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:

VersionChanges
v15.2.0Middleware can now use the Node.js runtime
(experimental)
v15.5.0Middleware can now use the Node.js runtime
(stable)
v16.0.0Middleware 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)

Fix Action

Fixed

PR fix notes

PR #93467: docs: clarify proxy runtime history

Description (problem / solution / changelog)

What?

Clarifies the Proxy docs so the “Why Proxy” section no longer appears to contradict the Runtime section.

Why?

The Runtime section states that Proxy defaults to the Node.js runtime, but the “Why Proxy” section still said Middleware defaults to the Edge Runtime. Since Middleware was renamed to Proxy in v16, that wording could make readers think the current default runtime is Edge.

How?

Updates the “Why Proxy” paragraph to frame Edge Runtime wording as historical context rather than current default behavior.

Also updates the v16.0.0 version history entry to mention that Proxy defaults to the Node.js runtime.

Closes #93463

Changed files

  • docs/01-app/03-api-reference/03-file-conventions/proxy.mdx (modified, +2/-2)
RAW_BUFFERClick to expand / collapse

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:

VersionChanges
v15.2.0Middleware can now use the Node.js runtime
(experimental)
v15.5.0Middleware can now use the Node.js runtime
(stable)
v16.0.0Middleware 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

extent analysis

TL;DR

The documentation issue can be resolved by updating the "Why 'Proxy'" section to reflect historical context and adding a version history table entry to clarify when the default runtime changed to Node.js.

Guidance

  • Update the "Why 'Proxy'" section to clearly indicate that it describes historical context, using phrases such as "Historically, Middleware ran at the Edge Runtime by default".
  • Add a row to the version history table to document when the default runtime changed to Node.js, including the version number (e.g., v16.0.0) and a brief description of the change.
  • Verify that the "Runtime" section is accurate and reflects the current default runtime for Proxy.
  • Consider adding a note to the documentation to clarify any potential confusion between the historical context and the current implementation.

Example

An updated "Why 'Proxy'" section could read:

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

Notes

The suggested fix assumes that the "Runtime" section is the source of truth, and Proxy in v16 defaults to Node.js. If this is not the case, the "Runtime" section may need to be corrected instead.

Recommendation

Apply the suggested workaround by updating the documentation to reflect the correct default runtime and adding a version history table entry to clarify the change. This will help resolve the ambiguity and provide a clear understanding of the Proxy feature's behavior.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

nextjs - ✅(Solved) Fix Docs: Contradictory statements about Proxy/Middleware default runtime in proxy.md [1 pull requests, 2 comments, 3 participants]