Update dependency @payloadcms/next to v3.78.0 [SECURITY]#62
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
Update dependency @payloadcms/next to v3.78.0 [SECURITY]#62renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
a86fbff to
1c5fa7e
Compare
1c5fa7e to
9baed56
Compare
9baed56 to
9ec7099
Compare
9ec7099 to
e8eec04
Compare
dd27272 to
5e2ccfb
Compare
5e2ccfb to
625d262
Compare
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.
This PR contains the following updates:
3.34.0→3.78.0Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
GitHub Vulnerability Alerts
CVE-2025-4643
Payload uses JSON Web Tokens (JWT) for authentication. After log out JWT is not invalidated, which allows an attacker who has stolen or intercepted token to freely reuse it until expiration date (which is by default set to 2 hours, but can be changed).
This issue has been fixed in version 3.44.0 of Payload.
CVE-2025-4644
A Session Fixation vulnerability existed in Payload's SQLite adapter due to identifier reuse during account creation. A malicious attacker could create a new account, save its JSON Web Token (JWT), and then delete the account, which did not invalidate the JWT. As a result, the next newly created user would receive the same identifier, allowing the attacker to reuse the JWT to authenticate and perform actions as that user.
This issue has been fixed in version 3.44.0 of Payload.
CVE-2026-34748
Impact
A stored Cross-site Scripting (XSS) vulnerability existed in the admin panel. An authenticated user with write access to a collection could save content that, when viewed by another user, would execute in their browser.
Consumers are affected if ALL of these are true:
createorupdateaccess to that collectionPatches
This vulnerability has been patched in v3.78.0. Output encoding has been added to prevent user-supplied content from being interpreted as markup.
Users should upgrade to v3.78.0 or later.
Workarounds
If consumers cannot upgrade immediately:
createandupdateaccess to versioned collections to trusted roles only.Release Notes
payloadcms/payload (@payloadcms/next)
v3.78.0Compare Source
🚀 Features
Feature Details
TypeScript Plugin for Component Paths - New
@payloadcms/typescript-pluginvalidates PayloadComponent import paths directly in your IDE. It checks that referenced files and exports exist, provides autocomplete for file paths and export names, supports go-to-definition on component path strings, and understands all Payload path conventions including absolute paths, relative paths, tsconfig aliases, and package imports. #15779screenshot.2026-02-26.at.15.55.40.mp4
{ "compilerOptions": { "plugins": [{ "name": "next" }, { "name": "@​payloadcms/typescript-plugin" }] } }Trash Out of Beta with Granular Delete Access - Trash is now a stable feature. Delete access control can now distinguish between trashing and permanently deleting — allowing you to permit users to soft-delete documents while restricting permanent deletion to admins. When
data.deletedAtis being set, the operation is a trash; otherwise it's a permanent delete. #15210Widget Fields (next, ui) - Dashboard widgets can now declare configurable fields, similar to Blocks. Widget data is editable from a new drawer UI when in dashboard editing mode. Full type generation is included —
WidgetInstance<T>is generic with typeddataandwidth, andWidgetServerPropsis generic so widget components receive typedwidgetData. #15700Screen.Recording.2026-02-23.at.16.25.40.mov
MCP Plugin Out of Beta (plugin-mcp) -
@payloadcms/plugin-mcpis now stable and ready for production use. #15711Virtual Field Filtering in MCP (plugin-mcp) - Virtual fields (
virtual: true) are now automatically stripped from MCP tool input schemas and filtered from parsed data beforecreate,update, andupdateGlobaloperations. This prevents non-stored fields from appearing as accepted MCP parameters. #15680Markdown Transformer for Upload Nodes (richtext-lexical) - Upload nodes are now properly converted when using
convertLexicalToMarkdown. Previously, upload nodes were silently dropped during markdown conversion. Now populated image uploads output, non-image uploads output link syntax, and non-populated uploads output a reference placeholder so data is never lost. #15630Dashed Button Style (ui) - Adds a new
dashedbutton style variant. Also replacesbox-shadowwithborderon all buttons and fixes icon-only button padding. #15728Editable Query Presets from Form View (ui) - Query presets can now be created and edited directly from the document form view using a full WhereBuilder, column picker, and groupBy selector — no longer requiring the list view to build queries first. #15657
Screen.Recording.2026-02-17.at.18.15.34.mov
🐛 Bug Fixes
🛠 Refactors
🎨 Styles
🧪 Tests
📝 Templates
🏡 Chores
🤝 Contributors
v3.77.0Compare Source
🚀 Features
depththrough toreq.query.depthfor consistency (#15023) (9a38469)customIDarg todb.create(#15653) (0935824)Feature Details
Local API Depth Consistency - The
depthoption passed to Local API calls likepayload.find()is now automatically set onreq.query.depth. Previously, hooks relying onreq.query.depthwould behave differently between Local API and REST/GraphQL calls unless you manually passedreq: { query: { depth: x } }in addition todepth: x. This change ensures consistent behavior across all API methods. #15023Custom ID Support in db.create (db-*) - New
customIDargument onpayload.db.createallows creating documents with a specific ID without requiring a custom ID field in your collection schema. #15653MCP Plugin Migration (plugin-mcp) - Migrates from the deprecated
@vercel/mcp-adaptertomcp-handlerand bumps@modelcontextprotocol/sdkto 1.25.2 addressing a security vulnerability. Exposes new handler options:disableSse,onEvent, andredisUrl. #15661🐛 Bug Fixes
📚 Documentation
🧪 Tests
🏡 Chores
🤝 Contributors
v3.76.1Compare Source
🐛 Bug Fixes
⚙️ CI
v3.76.0Compare Source
🚀 Features
🐛 Bug Fixes
typescriptto avoid dependency in production (#15545) (98a756c)📝 Templates
⚙️ CI
🏡 Chores
🤝 Contributors
v3.75.0Compare Source
🚀 Features
🐛 Bug Fixes
⚡ Performance
📚 Documentation
🎨 Styles
🧪 Tests
⚙️ CI
🏡 Chores
🤝 Contributors
v3.74.0Compare Source
🚀 Features
Override Access in Document-Level Hooks - Access the
overrideAccessvalue inside collection and global hooks. Useful when hook logic needs to know whether access control was bypassed, such as when querying related documents up a hierarchy. #15421Extended strictDraftTypes to All Operations - When
strictDraftTypes: trueis enabled, TypeScript now enforces draft type safety across all Local API operations (not just queries). Thedraftoption is forbidden for collections/globals without drafts enabled, preventing silent runtime behavior where draft flags are ignored. #15292Custom UnpublishButton Component - Customize the
UnpublishButtonin collection and global configs, following the same pattern asPublishButtonandSaveButton. Previously hardcoded. #15400R2 Multipart Client Uploads (storage-r2) - Upload large files directly from the client using R2's multipart API. Files are split into smaller parts and uploaded separately, avoiding Cloudflare Worker memory limits. #14733
Popup Prevent Close Attribute (ui) - Add interactive elements inside popups without triggering close behavior by adding the
data-popup-prevent-closeattribute. #15407Popup Portal className (ui) - Customize the Popup component's portal container with the new
portalClassNameprop. #15406🐛 Bug Fixes
📚 Documentation
🧪 Tests
fieldsandselectsuites faster (#15434) (26ba779)📝 Templates
🔨 Build
⚙️ CI
🏡 Chores
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.