vercel/next.js · error
Config options `experimental.externalProxyRewritesResolve` a
Error message
Config options `experimental.externalProxyRewritesResolve` and `experimental.externalMiddlewareRewritesResolve` cannot be set at the same time. Please use `experimental.externalProxyRewritesResolve` instead.
What it means
`experimental.externalMiddlewareRewritesResolve` was renamed to `experimental.externalProxyRewritesResolve`. The check at config.ts:988-995 rejects setting both keys because the alias-mapping step needs exactly one source value. Use the proxy-prefixed key going forward.
Source
Thrown at packages/next/src/server/config.ts:992
userConfig.experimental?.middlewareClientMaxBodySize !== undefined
) {
throw new Error(
'Config options `experimental.proxyClientMaxBodySize` and `experimental.middlewareClientMaxBodySize` cannot be set at the same time. Please use `experimental.proxyClientMaxBodySize` instead.'
)
}
if (
userConfig.experimental?.proxyPrefetch !== undefined &&
userConfig.experimental?.middlewarePrefetch !== undefined
) {
throw new Error(
'Config options `experimental.proxyPrefetch` and `experimental.middlewarePrefetch` cannot be set at the same time. Please use `experimental.proxyPrefetch` instead.'
)
}
if (
userConfig.experimental?.externalProxyRewritesResolve !== undefined &&
userConfig.experimental?.externalMiddlewareRewritesResolve !== undefined
) {
throw new Error(
'Config options `experimental.externalProxyRewritesResolve` and `experimental.externalMiddlewareRewritesResolve` cannot be set at the same time. Please use `experimental.externalProxyRewritesResolve` instead.'
)
}
if (
userConfig.skipProxyUrlNormalize !== undefined &&
userConfig.skipMiddlewareUrlNormalize !== undefined
) {
throw new Error(
'Config options `skipProxyUrlNormalize` and `skipMiddlewareUrlNormalize` cannot be set at the same time. Please use `skipProxyUrlNormalize` instead.'
)
}
// Map Proxy config to Middleware config as it is currently an alias.
if (
userConfig.experimental?.proxyClientMaxBodySize === undefined &&
userConfig.experimental?.middlewareClientMaxBodySize !== undefined
) {
result.experimental.proxyClientMaxBodySize =View on GitHub (pinned to 0ae8c72462)
Solutions
- Remove `experimental.externalMiddlewareRewritesResolve` and keep `experimental.externalProxyRewritesResolve`.
- Confirm the external resolver module path or function is correct.
- Audit other `externalMiddleware*` keys for the same rename pattern.
Example fix
// before
module.exports = { experimental: { externalProxyRewritesResolve: './resolver', externalMiddlewareRewritesResolve: './resolver' } }
// after
module.exports = { experimental: { externalProxyRewritesResolve: './resolver' } } Defensive patterns
Strategy: validation
Validate before calling
const e = config.experimental ?? {};
if (e.externalProxyRewritesResolve !== undefined && e.externalMiddlewareRewritesResolve !== undefined) {
throw new Error('set only experimental.externalProxyRewritesResolve');
} Prevention
- When upgrading, search-and-replace `externalMiddlewareRewritesResolve` -> `externalProxyRewritesResolve`.
- Maintain a single source config and derive per-environment configs from it.
When it happens
Trigger: Setting both `experimental.externalProxyRewritesResolve` and `experimental.externalMiddlewareRewritesResolve` in the config.
Common situations: Config migration during upgrade where the old experimental key was left in place. Inheriting a shared base config and overriding with the new name.
Related errors
- Config options `experimental.proxyClientMaxBodySize` and `ex
- Config options `experimental.proxyPrefetch` and `experimenta
- Config options `skipProxyUrlNormalize` and `skipMiddlewareUr
- Client Max Body Size must be a valid number (bytes) or files
- Client Max Body Size must be larger than 0 bytes
AI-assisted analysis of vercel/next.js@0ae8c72462 (2026-08-06).
Data as JSON: /api/errors/7fda295704066e32.
Report an issue: GitHub.