fix(next): properly construct local req url#14907
Merged
Conversation
AlessioGr
approved these changes
Dec 12, 2025
Contributor
📦 esbuild Bundle Analysis for payloadThis analysis was generated by esbuild-bundle-analyzer. 🤖
Largest pathsThese visualization shows top 20 largest paths in the bundle.Meta file: packages/next/meta_index.json, Out file: esbuild/index.js
Meta file: packages/payload/meta_index.json, Out file: esbuild/index.js
Meta file: packages/payload/meta_shared.json, Out file: esbuild/exports/shared.js
Meta file: packages/richtext-lexical/meta_client.json, Out file: esbuild/exports/client_optimized/index.js
Meta file: packages/ui/meta_client.json, Out file: esbuild/exports/client_optimized/index.js
Meta file: packages/ui/meta_shared.json, Out file: esbuild/exports/shared_optimized/index.js
DetailsNext to the size is how much the size has increased or decreased compared with the base branch of this PR.
|
|
@denolfe how far are we with this breaking fix? |
|
Does this include all the places where formatAdminURL is expected to return a relative path? I found another suspicious use here payload/packages/next/src/views/Root/getRouteData.ts Lines 159 to 165 in a1875b8 Though might be a false positive. |
|
Hope it release soon |
Member
|
Looking at a release tomorrow |
Member
|
@hai-trung-le Will have to come back to that. Trying to get this out. |
Contributor
|
🚀 This is included in version v3.68.4 |
Member
Author
|
@jtimi-mtbk followed up in #14919 |
jacobsfletch
added a commit
that referenced
this pull request
Dec 15, 2025
Follow up to #14907. Fixes #14900. Since #14869, setting a `serverURL` causes some additional admin routing to break, including `/admin/logout`. We need to ensure that all routes are relative before matching them. --------- Co-authored-by: Jarrod Flesch <[email protected]>
denolfe
pushed a commit
that referenced
this pull request
Dec 15, 2025
Adds a `relative` flag to the `formatAdminURL` util.
There are cases where this function can produce a fully qualified URL,
like for client-side routing, and other times when it must remain
relative, like when matching routes.
This flag differentiates these two behaviors declaratively so we don't
have to rely on the omission of `serverURL`.
```ts
const result = formatAdminURL({
adminRoute: '/admin',
basePath: '/v1',
path: '/collections/posts',
serverURL: 'http://payloadcms.com',
relative: true,
})
// returns '/v1/admin/collections/posts'
```
Related: #14919 and
#14907
zubricks
pushed a commit
that referenced
this pull request
Jan 6, 2026
Fixes #14900. Supersedes #14901. Since #14869, loading the admin panel with a `serverURL` crashes with the following error: ``` ⨯ [TypeError: Invalid URL] { code: 'ERR_INVALID_URL', input: 'http://localhost:3000http://localhost:3000/admin', digest: '185251315' } [12:26:08] ERROR: Failed to create URL object from URL: http://localhost:3000http://localhost:3000/admin, falling back to http://localhost:3000http://localhost:3000/admin ``` This is because the suffix used to create a local req object was changed to include the server URL. As the name implies, it should be a relative path that appends onto the base URL.
zubricks
pushed a commit
that referenced
this pull request
Jan 6, 2026
Follow up to #14907. Fixes #14900. Since #14869, setting a `serverURL` causes some additional admin routing to break, including `/admin/logout`. We need to ensure that all routes are relative before matching them. --------- Co-authored-by: Jarrod Flesch <[email protected]>
zubricks
pushed a commit
that referenced
this pull request
Jan 6, 2026
Adds a `relative` flag to the `formatAdminURL` util.
There are cases where this function can produce a fully qualified URL,
like for client-side routing, and other times when it must remain
relative, like when matching routes.
This flag differentiates these two behaviors declaratively so we don't
have to rely on the omission of `serverURL`.
```ts
const result = formatAdminURL({
adminRoute: '/admin',
basePath: '/v1',
path: '/collections/posts',
serverURL: 'http://payloadcms.com',
relative: true,
})
// returns '/v1/admin/collections/posts'
```
Related: #14919 and
#14907
teastudiopl
pushed a commit
to teastudiopl/payload
that referenced
this pull request
Jan 8, 2026
Fixes payloadcms#14900. Supersedes payloadcms#14901. Since payloadcms#14869, loading the admin panel with a `serverURL` crashes with the following error: ``` ⨯ [TypeError: Invalid URL] { code: 'ERR_INVALID_URL', input: 'http://localhost:3000http://localhost:3000/admin', digest: '185251315' } [12:26:08] ERROR: Failed to create URL object from URL: http://localhost:3000http://localhost:3000/admin, falling back to http://localhost:3000http://localhost:3000/admin ``` This is because the suffix used to create a local req object was changed to include the server URL. As the name implies, it should be a relative path that appends onto the base URL.
teastudiopl
pushed a commit
to teastudiopl/payload
that referenced
this pull request
Jan 8, 2026
Follow up to payloadcms#14907. Fixes payloadcms#14900. Since payloadcms#14869, setting a `serverURL` causes some additional admin routing to break, including `/admin/logout`. We need to ensure that all routes are relative before matching them. --------- Co-authored-by: Jarrod Flesch <[email protected]>
teastudiopl
pushed a commit
to teastudiopl/payload
that referenced
this pull request
Jan 8, 2026
Adds a `relative` flag to the `formatAdminURL` util.
There are cases where this function can produce a fully qualified URL,
like for client-side routing, and other times when it must remain
relative, like when matching routes.
This flag differentiates these two behaviors declaratively so we don't
have to rely on the omission of `serverURL`.
```ts
const result = formatAdminURL({
adminRoute: '/admin',
basePath: '/v1',
path: '/collections/posts',
serverURL: 'http://payloadcms.com',
relative: true,
})
// returns '/v1/admin/collections/posts'
```
Related: payloadcms#14919 and
payloadcms#14907
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #14900. Supersedes #14901.
Since #14869, loading the admin panel with a
serverURLcrashes with the following error:This is because the suffix used to create a local req object was changed to include the server URL. As the name implies, it should be a relative path that appends onto the base URL.