Skip to content

fix(deps): update payloadcms monorepo to v3.90.2 - #957

Open
github-actions[bot] wants to merge 1 commit into
masterfrom
renovate/payloadcms-monorepo
Open

github-actions[bot] wants to merge 1 commit into
masterfrom
renovate/payloadcms-monorepo

Conversation

@github-actions

@github-actions github-actions Bot commented Mar 2, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
@payloadcms/db-mongodb (source) dependencies minor 3.76.1 -> 3.90.2
@payloadcms/email-nodemailer (source) dependencies minor 3.76.1 -> 3.90.2
@payloadcms/richtext-lexical (source) dependencies minor 3.76.1 -> 3.90.2
@payloadcms/storage-uploadthing (source) dependencies minor 3.76.1 -> 3.90.2

Release Notes

payloadcms/payload (@​payloadcms/db-mongodb)

v3.90.2

Compare Source

🐛 Bug Fixes
  • await slugify func to match type (#​18181) (3fad98e)
  • next: remove invalid libsql tracing include (#​18238) (972a4fb)
  • next: support next.config trailingSlash (#​18207) (05e49da)
  • plugin-cloud-storage: forward alwaysInsertFields when the plugin is enabled (#​18222) (f5d261d)
  • plugin-mcp: create/update tools crash the MCP endpoint under TypeScript 6 ("use strict" prologue) (#​17109) (e6efd70)
  • plugin-multi-tenant: avoid refreshing forms without stale tenant cookie (#​18245) (a815140)
  • ui: prevent client upload handler rerenders (#​18184) (b382576)
⚙️ CI
🤝 Contributors

v3.90.1

Compare Source

🐛 Bug Fixes
  • do not carry parent where queries into nested relationship fields (#​18212) (d5ead4b)
🏡 Chores
🤝 Contributors

v3.90.0

Compare Source

⚠️ This release contains a set of critical security fixes. Please review the following notes and upgrade as soon as possible. Even if none of the listed items below affect you, we still recommend updating as soon as possible.

These notes only cover the behavior, configuration, and API-surface changes that projects may need to react to when upgrading. Exploit details, attack surface descriptions, and severity are intentionally omitted.

CVE and GHSA identifiers for the underlying issues are published separately.

How to read this document

Every entry has: Affected if you (concrete conditions - if none apply, no action is required), and Action required.

After upgrading:

  • Regenerate your payload types: pnpm payload generate:types
  • If you are using a relational database, you will need to create and run a migration:
pnpm payload migrate:create <migration-name>
pnpm payload migrate
Password changes now revoke other sessions
  • No action needed.
Password reset now clears lockouts; forgot-password is throttled
  • Adds new resetPasswordRequestedAt field to user collections

  • Action required:

    • Regenerate types: pnpm payload generate:types
    • If using a relational database, perform migration:
pnpm payload migrate:create add-reset-password-requested-at
pnpm payload migrate
Scheduled publishing preserves the scheduling user's auth collection

Affected if you:

  • Have publish or unpublish events queued when upgrading.
  • Use multiple admin-capable auth collections.
  • Queue schedulePublish jobs directly or depend on its generated task types.

Action required:

  • Re-create pending scheduled publish and unpublish events after upgrading.
  • Update custom queue code to pass user: { relationTo, value } (value is user ID).
  • Regenerate committed Payload types if applicable.
  • No database migration is required.
Stricter validation for SVG and XML uploads

Affected if you:

  • Upload SVG, XHTML, or XML-family files.
  • Use direct client uploads, particularly with Azure or a custom integration.
  • Depend on path components being retained in new filenames.

Action required:

  • Verify affected upload and XML-delivery workflows.
  • Ensure custom upload clients send the required metadata and returned headers.
  • Set allowRestrictedFileTypes: true in the collections upload property if the previous behavior is explicitly required.
Client uploads hardened across all adapters

Affected if you:

  • Use any client upload adapters with clientUploads: true (S3, GCS, Azure, or custom).

Action required:

  • If using GCS adapter, add x-goog-if-generation-match header to GCS CORS allowed headers.
Azure containers default to private

Affected if you:

  • Use the @payloadcms/storage-azure adapter with allowContainerCreate: true

Action required:

  • If you wish to retain the previous behavior, set containerAccess: 'blob' in your Azure storage config.
Client uploads are stored in a per-upload folder

Affected if you:

  • Use clientUploads with a storage adapter and access stored files outside Payload (for example, by building paths from prefix and filename)
  • Set document prefix values outside the adapter's collection prefix

What changed:

  • New client uploads are stored at <prefix>/<_objectKey>/<filename>, including generated image sizes. _objectKey is a new field on upload collections. Existing files are not moved.
  • New uploads and replacements are always stored inside the collection prefix. For example, a document prefix of user-123 with collection prefix media is stored under media/user-123/.

Action required:

  • Include _objectKey (when set) between the prefix and filename when building storage paths outside Payload.
  • If using a relational database, the migration from the "After upgrading" step adds the _objectKey column.
disablePayloadAccessControl no longer disables safe outbound fetch

Affected if you:

  • Set disableAccessControl: true in your Payload config.

Action required:

  • Configure a narrow upload.skipSafeFetch allowlist for trusted destinations
  • Use skipSafeFetch: true only when every URL accepted by the collection is trusted.
  • No action is required when files are retrieved from ordinary public endpoints.
External file fetches require a trusted origin

Affected if you:

  • Use upload.disableLocalStorage: true and rely on Payload fetching relative URLs whose endpoint requires a Payload session cookie.
  • Implement externalFileHeaderFilter, particularly if it assumes it runs only once.
  • Use non-HTTP(S) external-file URLs.

Action required:

  • Configure serverURL or add the exact application origin to your CORS or CSRF configuration.
  • Replace non-HTTP(S) external-file URLs with HTTP(S) URLs.
  • Review externalFileHeaderFilter and use the optional context when headers need to vary by destination.
upload: {
  externalFileHeaderFilter: (headers, context) => {
+   if (!context?.isSameOrigin) {
+     delete headers.cookie
+     delete headers.authorization
+   }
+
    return headers
  },
}
Uploaded filename hardening

Affected if you:

  • Use a custom top-level prefix field on an upload collection as ordinary application data.
  • Change an upload’s storage prefix without also replacing its file.

Action required:

  • Rename a custom, non-storage prefix field or update it through trusted server-side code.
  • Submit storage-prefix changes as part of a file replacement. Adapter-managed prefix fields do not require migration.
Multipart uploads are now capped at 50MB by default

Affected if you:

  • Use multipart uploads and rely on uploads being larger than 50MB

Action required:

  • Raise the multipart cap if your application requires support for larger uploads for requests. Adjust the requestSizeLimit in your Payload config:
upload {
+  requestSizeLimit: 75 * 1024 * 1024, // Example 75 MiB for the complete multipart request
}
Form Builder defaults form submission read access to the admin collection

Affected if you:

  • Have more than one auth enabled where the secondary auth collections are expected to be able to read either:
    • form-submission docs
    • forms.emails array field

Action required:

  • Supply an explicit formSubmissionOverrides.access or formOverrides.access to override the new defaults. If you already have overrides configured, they will continue to be respected.
Stricter where validation for polymorphic joins

Polymorphic joins now apply complete where constraints and throw a QueryError when a filter is unsupported.

Unsupported filters include:

  • Localized fields.
  • Fields nested inside arrays or blocks.
  • Paths traversing relationship, upload, or JSON fields, such as owner.email.
  • The near, within, intersects, and all operators.
  • The same field path having incompatible definitions across joined collections, such as number in one collection and text in another.

Affected if you:

  • Use a join whose collection references multiple collections, and
  • Apply an unsupported filter through:
    • A target collection's read access rule.
    • A join where constraint.
    • An Admin baseFilter or baseListFilter used by folder browsing.
  • Use folders with folder-enabled collections whose read access or base filters contain one of these unsupported shapes.

Action required:

  • Review where constraints and read access rules for every collection referenced by a polymorphic join.
  • If using folders, review every folder-enabled collection's read access rules and Admin base filters.
  • Rewrite unsupported filters to use direct, compatible fields while preserving the intended access restrictions.
API keys are no longer readable after initial generation through UI or within Payload operations

If you wish to retain old behavior, set the following in your config:

auth: {
-  useAPIKey: true,
+  useAPIKey: {
+    reveal: true,
+  },
 }
Lexical version bump

Full Details

No application changes or data migration are needed when using Payload's built-in rich text features.

If you maintain custom rich text features, check that they still compile and that custom content loads, copies, and pastes correctly. Lexical removed some older APIs, tightened TypeScript types, and changed how custom nodes are loaded and copied. Tests that inspect the editor's HTML may also need updated selectors or snapshots because Lexical adds some internal markup.

Do not install lexical or @​lexical/* yourself for use with Payload. Remove any direct dependencies you added for the editor and use Payload's re-exports from @payloadcms/richtext-lexical/lexical and @payloadcms/richtext-lexical/lexical/*. Payload supplies the matching versions; mixing versions can break the editor. This is the existing custom feature requirement.

v3.89.0

Compare Source

🚀 Features
🐛 Bug Fixes
🛠 Refactors
📚 Documentation
⚠️ BREAKING CHANGES
🤝 Contributors

v3.88.0

Compare Source

🐛 Bug Fixes
  • prevent multipart content-type backtracking (#​17679) (a742140)
  • ui: tighten clipboard prefix matching to prevent sibling row leakage on copy/paste (#​17595) (c6477b8)
🛠 Refactors
  • plugin-mcp: better access control defaults for api keys collection (#​17751) (025581d)
📝 Templates
🤝 Contributors

v3.87.1

Compare Source

🐛 Bug Fixes
📚 Documentation
  • update admin panel location link in custom components docs (#​17624) (57178e3)
⚙️ CI
🤝 Contributors

v3.87.0

Compare Source

🚀 Features
  • storage-azure: client uploads with chunkLargeFiles can now support files larger than 5gb (#​17319) (3c00a39)
🐛 Bug Fixes
📚 Documentation
🧪 Tests
⚙️ CI
  • remove --json from pnpm publish to fix release hang on pnpm v11 (#​17279) (4a82c20)
🏡 Chores
🤝 Contributors

v3.86.0

Compare Source

🚀 Features
🐛 Bug Fixes
  • coerce schedulePublish doc.value to collection ID type before update (#​17238) (7de11b2)
  • escape regex metacharacters in isURLAllowed pathname allow-list (#​17237) (2061859)
  • respect disabled GraphQL config, v3 backport (#​17228) (9e9c35a)
  • allow access to files reuploaded on a draft (#​17209) (f02d22a)
  • plugin-multi-tenant: run tenant delete cleanup inside the request transaction (#​17175) (d128fde)
  • sdk: use qs-esm allowEmptyArrays parameter (#​17208) (c7dc68e)
  • ui: presentational fields skipped in form state when admin.condition is false (#​17224) (f31f26d)
  • ui: prevent slug field error tooltip from hiding lock button (#​15885) (908fba1)
⚙️ CI
🤝 Contributors

v3.85.2

Compare Source

🐛 Bug Fixes
⚙️ CI
🤝 Contributors

v3.85.1

Compare Source

🐛 Bug Fixes
  • fix draft save and duplicate behaviour on upload-enabled collections (#​16853) (fad992c)
  • bin scripts cannot import dependencies without explicit "type": "module" (backport) (#​16848) (6707e85)
  • add type declarations for css export (TypeScript 6 compat) (#​16348) (6c81355)
  • follow redirects when fetching uploaded files for MIME type detection (#​16708) (ac46214)
  • plugin-import-export: fix CSV import of arrays and richText nest… (#​16923) (ccbdcc2)
  • ui: use explicit relative paths for internal SCSS imports v3.x (#​16827) (c039e55)
  • ui: hide entire tabs field when admin.condition is false (#​16809) (79b4e4c)
⚡ Performance
  • ui: skip rendering custom components hidden by admin.condition (#​16819) (0be11b6)
📚 Documentation
⚙️ CI
🤝 Contributors

v3.85.0

Compare Source

🚀 Features
  • plugin-import-export: out of beta and added support for collection-level and field-level hooks (#​16556) (cf9252d)
🐛 Bug Fixes
📚 Documentation
📝 Templates
⚙️ CI
🏡 Chores
🤝 Contributors

v3.84.1

Compare Source

Retargeting create-payload-app to pull from 3.x branch.

⚙️ CI
🤝 Contributors

v3.84.0

Compare Source

🚀 Features
  • allow client components to also be used as custom collection views (#​16312) (8fe5f04)
  • email-nodemailer: add email recipient override config (#​16311) (1c1ed97)
  • plugin-ecommerce: add locale-aware currency formatting and symbol positioning (#​15139) (6731036)
  • plugin-form-builder: add support for multi part uploads (#​15268) (aa01a45)
  • plugin-mcp: add support for server instructions (#​15858) (c852d85)
🐛 Bug Fixes
  • unique value errors are not displayed properly for localized fields (#​16069) (f6e9073)
  • correct slugifyTitle hook example in documentation (#​16306) (48db8c1)
  • handle multipart uploads without content-length (#​16301) (c150ef8)
  • plugin-ecommerce: verify PaymentIntent succeeded before creating… (#​15902) (500e39d)
  • richtext-lexical: internal links export as text in markdown transformer (#​16302) (3dc6041)
  • storage-*: simplify key handling for signed urls and composite prefixes (#​16291) (6139508)
  • templates: remove tilde SCSS imports and add Sass loadPaths for Windows (#​16295) (7ca8b05)
  • ui: json and richText fields expose unsupported operators in WhereBuilder (#​16353) (a507fcc)
  • ui: bulk edit ignores fields in named tabs and shows incorrect labels for unlabeled containers (#​16340) (e5bc6be)
📚 Documentation
🧪 Tests
📝 Templates
⚙️ CI
🏡 Chores
🤝 Contributors

v3.83.0

Compare Source

🚀 Features

Expanded Plugin API — New definePlugin helper introduces opt-in execution ordering, cross-plugin discovery via a slug-keyed plugins map, and module augmentation for type-safe plugin options. The existing (config) => config contract remains unchanged. #​16247

import { definePlugin } from 'payload'

export const seoPlugin = definePlugin<SEOPluginOptions>({
  slug: 'plugin-seo',
  order: 10,
  plugin: ({ config, plugins, collections, generateTitle }) => ({
    ...config,
    // collections and generateTitle come from SEOPluginOptions
  }),
})

Profiling Utilities — Lightweight timeSync and timeAsync wrappers for measuring function execution time during development. Wrap any function to capture its duration, then call printProfileResults for a formatted timing table. Not intended for production use. #​16198

Internal Plugin Priority & Slug API — Plugins can now attach priority, slug, and options properties for execution ordering and cross-plugin discovery. Lower priority runs first; other plugins can find each other by slug via config.plugins without imports. Marked @internal for now. #​16244

Hidden Slug Field Buttons on Read-Only — The Generate and Lock/Unlock buttons on slug fields are now automatically hidden when the field is read-only, removing controls that serve no purpose in that state. #​14824

Agent Flag for CPA (cpa) — create-payload-app now supports a --agent / -a flag (claude, codex, cursor) that downloads the Payload coding skill from GitHub and installs it in the correct directory for your agent. A root-level CLAUDE.md or AGENTS.md is written for discoverability. Use --no-agent to skip. #​16278

CPA agent selection prompt

UUIDv7 Support (drizzle) — New idType: 'uuidv7' option for Postgres and SQLite adapters generates time-ordered UUIDs that are friendlier for B-tree indexes than random v4 UUIDs, while using the same storage column type. IDs are generated in application code so older Postgres versions are supported. #​16113

Custom Email Headers (email-resend) — The Resend adapter now passes custom headers from sendEmail options to the Resend API, enabling features like List-Unsubscribe headers that were previously silently dropped. #​15645

await payload.sendEmail({
  from: "Test <test@domain.com>",
  to: "jimmybillbob@example.com",
  subject: "Email with custom headers",
  html: html,
  headers: {
    "List-Unsubscribe": "<https://domain.com/unsubscribe>",
    "List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
  },
});

Custom Collection Views (next) — Register custom views at the collection level


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 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 these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from d67e489 to f159c95 Compare March 9, 2026 08:45
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.78.0 fix(deps): update payloadcms monorepo to v3.79.0 Mar 9, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from f159c95 to 318d11b Compare March 23, 2026 08:58
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.79.0 fix(deps): update payloadcms monorepo to v3.80.0 Mar 23, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 318d11b to 1d3bb89 Compare April 6, 2026 09:10
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.80.0 fix(deps): update payloadcms monorepo to v3.81.0 Apr 6, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 1d3bb89 to 75dba2d Compare April 13, 2026 09:57
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.81.0 fix(deps): update payloadcms monorepo to v3.82.1 Apr 13, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 75dba2d to 0792264 Compare April 20, 2026 10:00
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.82.1 fix(deps): update payloadcms monorepo to v3.83.0 Apr 20, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 0792264 to 2c5dd0b Compare April 27, 2026 10:17
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.83.0 fix(deps): update payloadcms monorepo to v3.84.1 Apr 27, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 2c5dd0b to 87caf58 Compare June 1, 2026 13:38
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.84.1 fix(deps): update payloadcms monorepo to v3.85.0 Jun 1, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 87caf58 to 520af65 Compare June 15, 2026 13:56
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.85.0 fix(deps): update payloadcms monorepo to v3.85.1 Jun 15, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 520af65 to 76ed73a Compare July 6, 2026 12:07
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.85.1 fix(deps): update payloadcms monorepo to v3.85.2 Jul 6, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 76ed73a to 21359ca Compare July 13, 2026 11:12
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.85.2 fix(deps): update payloadcms monorepo to v3.86.0 Jul 13, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 21359ca to c8b3171 Compare August 3, 2026 11:23
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.86.0 fix(deps): update payloadcms monorepo to v3.87.0 Aug 3, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from c8b3171 to 579161c Compare August 10, 2026 09:21
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.87.0 fix(deps): update payloadcms monorepo to v3.87.1 Aug 10, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 579161c to 97988ae Compare August 17, 2026 08:44
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.87.1 fix(deps): update payloadcms monorepo to v3.88.0 Aug 17, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 97988ae to 2a7b408 Compare September 14, 2026 14:48
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.88.0 fix(deps): update payloadcms monorepo to v3.89.0 Sep 14, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 2a7b408 to 6424523 Compare September 21, 2026 14:54
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.89.0 fix(deps): update payloadcms monorepo to v3.90.1 Sep 21, 2026
@github-actions
github-actions Bot force-pushed the renovate/payloadcms-monorepo branch from 6424523 to 52799ad Compare September 28, 2026 16:30
@github-actions github-actions Bot changed the title fix(deps): update payloadcms monorepo to v3.90.1 fix(deps): update payloadcms monorepo to v3.90.2 Sep 28, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants