Skip to content

Releases: payloadcms/payload

v3.54.0

28 Aug 13:53
c1b4960
Compare
Choose a tag to compare

v3.54.0 (2025-08-28)

🚀 Features

  • support parallel job queue tasks, speed up task running (#13614) (e0ffada)
  • configurable toast notifications (#13609) (0a18306)
  • allow multiple, different payload instances using getPayload in same process (#13603) (13c24af)
  • db-*: support atomic array $push db updates (#13453) (5ded64e)
  • plugin-multi-tenant: allow custom tenant field per collection (#13553) (6db07f0)
  • plugin-multi-tenant: re-enable global selector on all views (#13575) (f260d0a)

🐛 Bug Fixes

  • restore as draft function was passing a published status (#13599) (a670438)
  • hide jobs stats global by default (#13566) (a92c251)
  • deeply merge array and block rows from server form state (#13551) (1e13474)
  • ensure updates to createdAt and updatedAt are respected (#13335) (5c16443)
  • db-*: add delete version id for non-mongodb (#10613) (ddb8ca4)
  • graphql: invalid enum names when values include brackets (#13597) (1dc346a)
  • next: richtext fields not read-only for locked documents (#13579) (344ad69)
  • next: update rest route handler types for Next.js 15.5 compatibility (#13521) (763cb61)
  • plugin-multi-tenant: prevent duplicate filters on referenced blocks (#13607) (03a00ca)
  • plugin-multi-tenant: autosave global documents not rendering (#13552) (409dd56)
  • richtext-lexical: toolbar dropdown items are disabled when selecting via double-click (#13544) (3bc1d08)
  • ui: prevent infinite redirect if no user (#13615) (303381e)
  • ui: bulk edit overwriting fields within named tabs (#13600) (138938e)
  • ui: autosave in document drawer overwrites local changes (#13587) (bd81936)
  • ui: multiple logout requests being made in parallel (#13595) (cf37433)
  • ui: auth-fields container renders despite no visible auth/API key/verify content (#13554) (8101842)
  • ui: correctly pass query params to locked document requests (#10802) (598ff4c)

🛠 Refactors

📚 Documentation

⚙️ CI

  • remove run-e2e-turbo flow (#13611) (5c41966)
  • ignore template bump commits in release notes [skip ci] (60cfc31)

🤝 Contributors

v3.53.0

21 Aug 18:33
4151a90
Compare
Choose a tag to compare

v3.53.0 (2025-08-21)

🚀 Features

  • add icelandic translations (#13423) (2bdd669)
  • plugin-import-export: use groupBy as SortBy when present and sort is unset (#13491) (a7ed88b)
  • plugin-import-export: adds sort order control and sync with sort-by field (#13478) (efdf002)
  • plugin-multi-tenant: visible tenant field on documents (#13379) (5cf215d)

🐛 Bug Fixes

  • server edit view components don't receive document id prop (#13526) (9607453)
  • uploads update unnecessarily resizing with sharp (#13528) (a94cd95)
  • accept computed array and block rows from server form state (#13501) (f382c39)
  • 'front-end' spelling typo in JSDocs for overrideAccess (#13515) (f44e276)
  • imports (part 2/2) (#13520) (cf427e5)
  • select field component value prop type does not support array values (#13510) (4f6d0d8)
  • unable to query versions on latest key (#13512) (73ba4d1)
  • avoid re-uploading the file unless changed (#13500) (92d459e)
  • copy to locale with localized fields inside tabs (#13456) (ec5b673)
  • omit trashed documents from appearing in folder results (#13492) (1909063)
  • update docker base image in templates (#13020) (64f4b0a)
  • db-mongodb: disable join aggregations in DocumentDB compatibility mode (#13270) (c7b9f0f)
  • db-postgres: camelCase point fields (#13519) (aa90271)
  • next: no client field found error when accessing version view in some configurations (#13339) (393b4a0)
  • next: add missing translations to version view (c8ef924)
  • plugin-form-builder: export radio field type (#11908) (fea6742)
  • richtext-lexical: use thumbnail component for uploads (#12540) (7699d02)
  • storage-s3: validate Content-Length before appending header (#13472) (9d08f50)
  • templates: plugin template correct paths for exports (#13427) (b714e6b)
  • translations: stale version.versionCreatedOn key in translation (#13530) (a04bc9a)
  • ui: thread id through instead of from routeParams (#13539) (b65ca68)
  • ui: logout type error when user is null during locale switch (#13514) (b3e48f8)
  • ui: replace deprecated document.execCommand('copy') API with navigator (#13431) (368cd90)
  • ui: local image src changing when title changes (#13442) (406a09f)
  • ui: double ? in gravatar url (#13511) (332b2a9)
  • ui: nested fields with admin.disableListColumn still appear as columns in list view (#13504) (9f7d8c6)
  • ui: blocks field not respecting width styles in row layouts (#13502) (30ea8e1)
  • ui: cannot replace the file if the user does not have delete access (#13484) (3dd142c)
  • ui: bulk upload action bar buttons wrapping (#13486) (b7243b1)

⚡ Performance

  • storage-s3: stream files and abort s3 request from static handler (#13430) (36fd6e9)
  • ui: do not fetch doc permissions on autosave (#13477) (c67ceca)
  • ui: reduce number of field renders on submit (#13524) (5e433aa)

📚 Documentation

  • fix typo in custom views (#13522) (a840fc9)
  • clarify pagination and improve cross-referencing (#13503) (f9bbca8)
  • db-mongodb: note on indexing localized fields & per-locale growth (#13469) (379ef87)

🧪 Tests

🏡 Chores

  • plugin-multi-tenant: missing collections warning (#13538) (76741eb)

🤝 Contributors

v3.52.0

15 Aug 14:48
217606a
Compare
Choose a tag to compare

v3.52.0 (2025-08-15)

🚀 Features

  • plugin-import-export: adds limit and page fields to export options (#13380) (c1c68fb)

🐛 Bug Fixes

  • filter payload- cookies in getExternalFile only if the URL is external (#13475) (8d4e7f5)
  • db-postgres: ensure index names are not too long (#13428) (047519f)
  • plugin-import-export: csv export & preview showing full documents for hasMany monomorphic relationships instead of just ID (#13465) (3e65111)
  • ui: significantly more predictable autosave form state (#13460) (0b60bf2)

📚 Documentation

🧪 Tests

📝 Templates

🤝 Contributors

v3.51.0

13 Aug 13:25
0688050
Compare
Choose a tag to compare

v3.51.0 (2025-08-13)

🚀 Features

🐛 Bug Fixes

  • upload with no filename gives vague error (#13414) (5a99d8c)
  • version view breaks when tab field has function for label (#13415) (35ca98e)
  • ensure scheduling by default only handles default queue, add allQueues config to autoRun (#13395) (ad2564e)
  • use thumbnailUrl for upload documents in folder view (#13368) (2211f3d)
  • next: group by boolean values (#13382) (d4f1986)
  • next: group by dates with null values (#13381) (7344d64)
  • richtext-lexical, plugin-multi-tenant: text editor exposes documents from other tenants (#13229) (9c8f320)
  • templates: only generate slug from title on demand (#12956) (2bc9a2d)
  • translations: update traditional chinese (zh-TW) localization (#13370) (5d8f8dc)
  • ui: autosave form state discards local changes (#13438) (8173180)
  • ui: misalignment of nested toggles on document API tab (#13424) (306b7f6)
  • ui: field elements showing over the top of Preview content (#13148) (72f5763)
  • ui: bulk upload issues (#13413) (a374aab)
  • ui: autosave hooks are not reflected in form state (#13416) (1d81b0c)
  • ui: search in select fields with filterOptions (#13397) (c9a1590)

📚 Documentation

🧪 Tests

  • group-by reset and navigation tests in trash view (#13401) (3258e78)

⚙️ CI

🏡 Chores

  • templates: fix typo in e2e tests (headging -> heading) (#13391) (161769e)

🤝 Contributors

v3.50.0

05 Aug 13:38
d622d3c
Compare
Choose a tag to compare

v3.50.0 (2025-08-05)

🚀 Features

  • add hooks to restoreVersion collection operation (#13333) (9031f3b)
  • adds trash support to the count operation (#13304) (1175508)
  • graphql: allow to pass count: true to a join query (#13351) (f432cc1)
  • translations: add Indonesian translations (#13323) (df91321)

🐛 Bug Fixes

  • deletedAt in TypeWithID not accepting null from generated types (#13363) (8401b21)
  • svg uploads allowed when glob (#13356) (43b4b22)
  • querying hasMany: true select fields inside polymorphic joins (#13334) (b26a73b)
  • next: version view did not properly handle field-level permissions (#13336) (1d70d4d)
  • next: incorrect version view stepnav value (#13305) (8a48941)
  • next: safely access relationTo value from relationship field (#13337) (095e7d9)
  • next: incorrect doc link in trash view with groupBy enabled (#13332) (c48b57f)
  • next: cannot filter trash (#13320) (e7124f6)
  • plugin-multi-tenant: constrain results to assigned tenants when present (#13365) (20b4de9)
  • richtext-lexical: recursively unwrap generic Slate nodes in Lexical migration converter (#13202) (227a20e)
  • ui: fallback to default locale checkbox passes wrong value (#12396) (b74f4fb)
  • ui: group/array error paths persisting when valid (#13347) (2903486)
  • ui: add hidden sidebar fields css specificity (#13344) (b965db8)
  • ui: hide sidebar when no fields rendered (#13340) (1b93c4b)
  • ui: incorrect padding when using rtl (#13338) (f2d4004)

⚡ Performance

  • 23% faster job queue system on postgres/sqlite (#13187) (3114b89)
  • ui: only select the useAsTitle field when fetching the document data of a relationship value (#13228) (1b31c74)

🧪 Tests

🏡 Chores

🤝 Contributors

v3.49.1

29 Jul 20:45
183f313
Compare
Choose a tag to compare

v3.49.1 (2025-07-29)

🐛 Bug Fixes

  • support next.js 15.4.4 (#13280) (5c94d2d)
  • keep apiKey encrypted in refresh operation (#13063) (#13177) (b1fa76e)
  • filters cookies with the payload- prefix in getExternalFile by default (#13215) (0894249)
  • use atomic operation for incrementing login attempts (#13204) (4fde0f2)
  • refactors toast error rendering (#13252) (d093bb1)
  • serve svg+xml as svg (#13277) (bc80284)
  • svg+xml file detection (#13276) (e8f6cb5)
  • drizzle: respect join.type config (#13258) (8518141)
  • next: group by null relationship crashes list view (#13315) (e502203)
  • next: catch list filter errors, prevent list view crash (#13297) (8d84352)
  • next: pass req through document tab conditions and custom server components (#13302) (c5c8c13)
  • next: unable to view trashed documents when group-by is enabled (#13300) (aff2ce1)
  • plugin-multi-tenant: prefer assigned tenants for selector population (#13213) (e29d1d9)
  • richtext-lexical: unify indent between different converters and make paragraphs and lists match without CSS (#13274) (7cd4a8a)
  • translations: improve swedish translations (#13272) (da8bf69)
  • translations: missing closing brace in rs latin translation for lastSavedAgo (#13172) (26d9dae)
  • ui: autosave-enabled document drawers close unexpectedly within the join field (#13298) (61ee8fa)

⚡ Performance

📚 Documentation

  • remove asterisk from optional url property in live preview docs (#13108) (fc59448)
  • typo in vercel-content-link.mdx (#13170) (9e04dbb)
  • fixes typo in ternary operator for live preview docs (#13163) (72954ce)
  • remove obsolete scheduler property (#13278) (2e9ba10)

🧪 Tests

📝 Templates

⚙️ CI

  • show path value in audit-dependencies script [skip ci] (#13314) (4beb27b)

🏡 Chores

🤝 Contributors

v3.49.0

25 Jul 13:37
4ac428d
Compare
Choose a tag to compare

v3.49.0 (2025-07-25)

🚀 Features

🐛 Bug Fixes

  • filtering by polymorphic relationships inside other fields (#13265) (75385de)
  • text field validation for minLength: 1, required: false (#13124) (af2ddff)
  • empty folderType arrays break relational dbs (#13219) (7f9de6d)
  • handle undefined values in afterChange hooks when read:false and create:true on the field level access for parents and siblings (#12664) (46d8a26)
  • exit payload jobs:run process after completion (#13211) (4ae503d)
  • db-mongodb: handle duplicate unique index error for DocumentDB (#13239) (c1cfceb)
  • db-postgres: search is broken when useAsTitle is not specified (#13232) (a83ed5e)
  • next: prevent base list filters from being injected into the url (#13253) (0eac58e)
  • plugin-import-export: json preview and downloads preserve nesting and exclude disabled fields (#13210) (8f85da8)
  • ui: preserve localized blocks and arrays when using CopyToLocale (#13216) (4a712b3)
  • ui: incorrect blocks label sizing (#13264) (fa7d209)
  • ui: ensure document unlocks when logging out from edit view of a locked document (#13142) (7e81d30)
  • ui: monomorphic relationship fields should not show relationTo option labels (#13245) (29fb9ee)
  • ui: select all should reset when params change, page, filter, etc (#12612) (412bf4f)
  • ui: ensure publishSpecificLocale works during create operation (#13129) (dce898d)
  • ui: properly sync search params to user preferences (#13200) (d7a3faa)

⚡ Performance

  • db-postgres: avoid including prettier to the bundle (#13251) (380ce04)
  • drizzle: single-roundtrip db updates for simple collections (#13186) (94f5e79)

🛠 Refactors

📚 Documentation

  • add status to forbidden field names when using Postgres and drafts are enabled (#13233) (7ae4f8c)
  • remove payload cloud (#13240) (77f279e)
  • fix typo, example was not valid JSON (#13224) (0eb8f75)
  • shorten line length in code snippet comments to avoid horizontal scrolling (#13217) (d6e21ad)
  • plugin-import-export: document plugin-import-export (#13243) (14322a7)

🔨 Build

⚙️ CI

  • default audit-dependencies script to high severity (#13244) (3f8fb67)

🏡 Chores

  • add new int test verifying that select improves performance of new optimization (#13254) (aeee070)
  • plugin-import-export: use debug-level logging for createExport process (#13242) (246a42b)

🤝 Contributors

v3.48.0

17 Jul 18:51
a336135
Compare
Choose a tag to compare

v3.48.0 (2025-07-17)

🚀 Features

  • add findDistinct operation (#13102) (a20b436)
  • atomic number field updates (#13118) (841bf89)
  • plugin-import-export: adds support for disabling fields (#13166) (5839cb6)
  • plugin-import-export: adds support for forcing export format via plugin config (#13160) (7294cf5)
  • plugin-import-export: adds pluginConfig options to disable Save and Download buttons in export UI (#13158) (de53f68)
  • richtext-lexical: export $createLinkNode and $isLinkNode for server use (#13205) (6ae730b)
  • ui: supports collection scoped folders (#12797) (12539c6)

🐛 Bug Fixes

  • Enhances field-level access controls on Users collection to address s… (#13197) (cab7ba4)
  • cron jobs running when calling bin scripts, leading to db errors (#13135) (64d76a3)
  • types for RenderField fields prop (#13162) (5f01953)
  • db-mongodb: improve compatibility with Firestore database (#12763) (41cff6d)
  • plugin-import-export: disabled flag to cascade to nested fields from parent containers (#13199) (95e373e)
  • plugin-import-export: export field dropdown to properly label and path fields in named/unnamed tabs (#13180) (2a59c5b)
  • plugin-multi-tenant: selector could become hidden (#13134) (e575511)
  • plugin-seo: add localized property to MetaTitleComponent (#12751) (d213c91)

⚡ Performance

  • drizzle: further optimize postgres row updates (#13184) (7cd682c)

📚 Documentation

🧪 Tests

📝 Templates

⚙️ CI

🤝 Contributors

v3.47.0

11 Jul 19:49
e5f64f7
Compare
Choose a tag to compare

v3.47.0 (2025-07-11)

🚀 Features

  • allow joins, select, populate, depth and draft to /me REST API operation (#13116) (2d91cb6)
  • exports new sanitizeUserDataForEmail function (#13029) (9f1bff5)
  • next: redirect non-existent documents to list view with banner (#13062) (5e82f9f)
  • next: add redirect from ${adminRoute}/collections to ${adminRoute} (#13061) (a7a0501)
  • plugin-import-export: show delayed toast when export download takes time (#13126) (b3a994e)
  • storage-*: include modified headers into the response headers of files when using adapters (#12096) (cb6a73e)
  • ui: add API key visibility toggle (#13110) (8a3b97c)
  • ui: adds support for copy pasting complex fields (#11513) (1d6ffcb)

🐛 Bug Fixes

  • execute mimetype validation on the file buffer data (#13117) (5695d22)
  • login operation not returning collection and _strategy (#13119) (0c2b105)
  • ensure we perform ssrf check within dispatcher (#13078) (e99c67f)
  • ensure default values are not shown when value is hidden (#13074) (855a320)
  • correctly reset login attempts (#13075) (aa97f3c)
  • payload auth api-key algorithm compatibility (#13076) (9c45321)
  • next: prevent live preview url functions from firing unnecessarily (#13088) (0b88466)
  • plugin-import-export: sync export field selection with list view columns from query columns (#13131) (c1bad01)
  • plugin-import-export: flattening logic for polymorphic relationships in CSV exports (#13094) (c6105f1)
  • plugin-import-export: selectionToUse field to dynamically show valid export options (#13092) (0806ee1)
  • plugin-import-export: sync field select dropdown with form value (#13103) (1c6a79b)
  • ui: disabled and styles add row button correctly (#13140) (2cafe49)
  • ui: ensure buildFormStateHandler throws error instead of returning null for unauthorized requests (#13123) (06ef798)
  • ui: monomorphic joins tables not fetching draft documents (#13139) (19a3367)
  • ui: ensure that schedule publishing time picker can only be in the future (#13128) (f63dfad)
  • ui: hidden input should wait for form initialization (#13114) (c77b39c)
  • ui: improve alignment of clear and dropdown indicator buttons in select based fields (#12995) (4c25357)
  • ui: prevent error crashing UI when relationship assigned as useAsTitle (#12981) (8a5cb27)

⚡ Performance

  • db-postgres: simplify db.updateOne to a single DB call with if the passed data doesn't include nested fields (#13060) (055cc4e)

📚 Documentation

  • richtext-lexical: add documentation page about official features (#13132) (576644d)
  • templates: fix grammar in README (#13027) (96c24a2)

⚙️ CI

🏡 Chores

  • deps: bump deps to resolve all high severity (#13002) (417b70e)

🤝 Contributors

v3.46.0

07 Jul 20:15
14612b4
Compare
Choose a tag to compare

v3.46.0 (2025-07-07)

🚀 Features

🐛 Bug Fixes

  • deduplicate custom array id fields (#13064) (e6f8ca6)
  • check hostname of upload url (#13018) (30fc7e3)
  • db-mongodb: updateOne mutates the data object and does not transform it for read (#13065) (6d5cc84)
  • next: adds token to reset password initialState (#13067) (f4f13a2)
  • next: respect collection-level live preview config (#13036) (f49eeb1)
  • plugin-redirects: make 'from' field unique to prevent errors in redirect logic (#12964) (50c2f8b)
  • ui: increase timeout for opening list drawer in RelationshipInput (#13031) (2650eb7)
  • ui: change password button is hidden when user has full field access (#12988) (1d9ad6f)

🧪 Tests

⚙️ CI

🤝 Contributors