Skip to content

Releases: payloadcms/payload

v3.89.0

Choose a tag to compare

@denolfe denolfe released this 10 Sep 14:52
479458d

v3.89.0 (2026-09-10)

🚀 Features

🐛 Bug Fixes

  • avoid buffering large client uploads into memory (#17872) (e896688)
  • "No client field found for ..." 500 error in version diff (#18001) (88f0622)
  • upgrade next to 16.3.3 across core and templates (#17933) (24164d8)
  • db-mongodb: avoid unnecessary aggregation when no joins are selected (#17785) (9a309af)
  • drizzle: preserve omitted hasMany selects (#18085) (ee7c00c)
  • drizzle: warn on truncated identifiers, throw on collisions (#17650) (52c4d70)
  • email-resend: http fetch error handling swallows errors (#17798) (61d3961)
  • plugin-form-builder: include autolink nodes in LinkHTMLConverter, v3 backport (#17788) (5061283)
  • ui: handle unsupported preview URLs (#18136) (112f419)
  • ui: add @swc/helpers direct dependency (#17893) (ec0e98e)
  • ui: prevent render loop during rapid title input (#17834) (f954804)
  • ui: rich text fields not read-only inside tabs on trashed and locked documents 3.x (#17791) (82f5576)

🛠 Refactors

📚 Documentation

⚠️ BREAKING CHANGES

🤝 Contributors

v3.88.0

Choose a tag to compare

@denolfe denolfe released this 11 Aug 20:58
fea6f8a

v3.88.0 (2026-08-11)

🐛 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

Choose a tag to compare

@denolfe denolfe released this 06 Aug 20:31
57278bd

v3.87.1 (2026-08-06)

🐛 Bug Fixes

📚 Documentation

  • update admin panel location link in custom components docs (#17624) (57178e3)

⚙️ CI

🤝 Contributors

v3.87.0

Choose a tag to compare

@denolfe denolfe released this 31 Jul 16:17
8d65662

v3.87.0 (2026-07-31)

🚀 Features

  • storage-azure: client uploads with chunkLargeFiles can now support files larger than 5gb (#17319) (3c00a39)

🐛 Bug Fixes

  • preserve parent localization through tabs 3.x (#17591) (9c8d636)
  • replace image-size with image-dimensions dependency for upload dimensions (#17571) (2a99a01)
  • forward locale in count and countGlobalVersions (3.x) (#17547) (e042561)
  • pass id to delete access control on soft delete in updateByID (#17529) (a539f5b)
  • prefer draft titles in by folder view (#17412) (ef8a6a5)
  • arrays and blocks should handle null values, v3 backport (#17278) (2a69863)
  • db-mongodb: error on null values in arrays and blocks (#17190) (249f8df)
  • drizzle: validate companion table name length against 63-char limit (#17563) (fd629f2)
  • drizzle: dedupe reused localized block tables (#17430) (3e8191c)
  • plugin-multi-tenant: apply tenant on confirm (#17350) (09e01df)
  • storage-vercel-blob: allow overwriting existing blob keys (#17385) (fc2572e)
  • templates: prevent unauthenticated draft-mode access in website preview route (#17472) (0c2e9a8)
  • templates: mark website button as client component for radix-slot context (#17474) (981b282)
  • ui: resolve named-tab field permissions in bulk edit field select (3.x backport of #17523) (#17524) (2371624)
  • ui: keep folder create drawers open during autosave (#17421) (bf72bda)
  • ui: handle undefined field admin components (#17388) (5157c72)

📚 Documentation

🧪 Tests

  • richtext-lexical: create dev user first in seed to fix flaky e2e (3.x backport of #17507) (#17568) (0f6c1b3)

⚙️ CI

  • remove --json from pnpm publish to fix release hang on pnpm v11 (#17279) (4a82c20)

🏡 Chores

🤝 Contributors

v3.86.0

Choose a tag to compare

@denolfe denolfe released this 10 Jul 15:44
81e04d7

v3.86.0 (2026-07-10)

🚀 Features

  • collection-level disableBulkDelete (#17207) (ca02cdc)
  • plugin-form-builder: v3 backport to support translations (#17255) (2cde8c8)
  • ui: add livePreview.openByDefault config option (#17213) (f23b693)

🐛 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

Choose a tag to compare

@denolfe denolfe released this 01 Jul 18:10
624ac51

v3.85.2 (2026-07-01)

🐛 Bug Fixes

  • payload bin fails with tsx on node v23.5+ (#17081) (afb0226)
  • regenerate reused array and block row IDs during bulk update (3.x) (#17018) (e526c88)
  • prevent type generation script from hanging on storage-r2 (#17020) (b681448)
  • prevent reordering from unpublishing documents that have a newer draft (#16969) (b4d43c0)
  • db-mongodb: remove duplicate IDs in nested relationship queries (#17019) (8533dfb)
  • deps: resolve high severity audit vulnerabilities (#17086) (ac000e5)
  • deps: override transitive js-cookie to ^3.0.7 (CVE-2026-46625) (#17000) (ef888de)
  • drizzle: preserve failing sub-table on unique-constraint ValidationError (3.x) (#17015) (6dfac53)
  • plugin-cloud-storage: split client and server utility exports (#17152) (30bc3fd)
  • plugin-cloud-storage: prevent draft file reupload from unpublishing the document (3.x) (#17034) (a18ae22)
  • richtext-lexical: preserve hard line breaks on markdown import (#17061) (c0affcb)
  • translations: replace Malay strings in Burmese (my) locale (3.x) (#17032) (c3ae01d)
  • ui: preserve polymorphic upload bulk select relation (#17112) (9691e42)
  • ui: list relationship cell shows (Untitled) for draft-only titles (#16979) (16152e2)
  • ui: respect admin.condition on row fields (#16954) (29afa77)

⚙️ CI

🤝 Contributors

v3.85.1

Choose a tag to compare

@denolfe denolfe released this 09 Jun 14:00
a8c8da8

v3.85.1 (2026-06-09)

🐛 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

Choose a tag to compare

@denolfe denolfe released this 26 May 14:23
957a92e

v3.85.0 (2026-05-26)

🚀 Features

  • plugin-import-export: out of beta and added support for collection-level and field-level hooks (#16556) (cf9252d)

🐛 Bug Fixes

  • bump uuid package to 13.0.2 (#16545) (274af06)
  • stop workflows retrying forever when no retries are configured (#16465) (caf9150)
  • db-mongodb: bump mongoose to 8.22.1 for GHSA-wpg9-53fq-2r8h (#16688) (4baba91)
  • plugin-cloud-storage: propagate custom hook errors during upload (#16632) (055c508)
  • plugin-cloud-storage: preserve user-defined prefix.defaultValue (#16529) (8d14915)
  • plugin-cloud-storage: dedupe filename in clientUploads signed URL (#16510) (64b2860)
  • plugin-multi-tenant: tenant field unselectable in bulk upload "Edit all" (#16466) (695df3c)
  • richtext-lexical: cursor kicked out of nested richtext while typing in a block (#16490) (931a349)
  • richtext-lexical: drag/drop image into rich text fails when a field name matches the collection slug (#16409) (d6f7b47)
  • ui: bulk upload silently counts failed files as saved (#16532) (c31f4ef)
  • ui: respect formatDocURL returning null in ListDrawer (#16464) (0facc44)
  • ui: show all listSearchableFields in ListDrawer search placeholder (#16467) (3cd4a64)

📚 Documentation

📝 Templates

⚙️ CI

🏡 Chores

  • deps: bump nodemailer minimum version to 8.0.5 (#16664) (efa4afe)

🤝 Contributors

v3.84.1

Choose a tag to compare

@denolfe denolfe released this 23 Apr 14:41
ea39d8a

v3.84.1 (2026-04-23)

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

⚙️ CI

🤝 Contributors

v3.84.0

Choose a tag to compare

@denolfe denolfe released this 22 Apr 17:33
e08294b

v3.84.0 (2026-04-22)

🚀 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

  • add tests for autosave creating new versions and losing draft status on reload (#16335) (60d8678)
  • add more integration tests to CI (#15419) (8a470c1)

📝 Templates

  • bump plugin template to latest payload version (#16305) (9de13c2)

⚙️ CI

  • disable audit-dependencies slack notification (#16329) (eeee018)
  • use SLACK_CHANNEL env var for activity notifications (#16323) (a7cc58b)
  • use artifacts for e2e prep so job retries don't fail on cache eviction (#16310) (bc590bd)

🏡 Chores

  • change other instances of port 3000 being hardcoded in tests (#16290) (7f0b069)
  • templates: fix link to one-click deployment (#16337) (5a39afc)
  • templates: strengthen types in preview url gen (#14947) (fcbc987)
  • templates: remove unused image-3 from website templates (#16155) (f0735b1)

🤝 Contributors