Skip to content

Releases: payloadcms/payload

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

v3.45.0

03 Jul 13:32
1ccd7ef
Compare
Choose a tag to compare

v3.45.0 (2025-07-03)

🚀 Features

  • mount live preview to document root (#12860) (f2213e5)
  • drizzle: support half-precision, binary, and sparse vectors column types (#12491) (583a733)

🐛 Bug Fixes

  • disable graphql introspection queries when disableIntrospectionInProduction is true (#12982) (a9580e0)
  • strict custom view paths (#12968) (cfc7adc)
  • appropriately throw unverified email error (#12933) (9f60306)
  • db-mongodb: nested sorting by ID (#13016) (81532cb)
  • db-mongodb: add ability to disable fallback sort and no longer adds a fallback for unique fields (#12961) (c902f14)
  • db-postgres: joins with hasMany: true relationships nested to an array (#12980) (0e8ac0b)
  • drizzle: ensure updateOne does not create new document if where query has no results (#12991) (fafaa04)
  • examples: only allow super admins to create users with super admin role (#13015) (6e5ddc8)
  • examples: checks requested tenant matches user tenant permissions (#13012) (5002953)
  • plugin-import-export: pre-scan columns before streaming CSV export (#13009) (34c3a51)
  • plugin-import-export: preview table to include all selected columns regardless of populated data (#12985) (335af1b)
  • plugin-multi-tenant: unnecessary modal appearing (#12854) (16f5538)
  • templates: wrong link in demo content (custom components) (#13024) (f70c6fe)
  • ui: save nested richtext inside inlineBlock (#12773) (babcd59)
  • ui: autosave infinite loop within document drawer (#13007) (b40c581)
  • ui: field bulk upload showing stale data (#13006) (9ba740e)
  • ui: prevent document drawer from remounting on save (#13005) (c80b6e9)
  • ui: bulk upload redirecting to relationship documents when added (#13001) (a9ad7c7)
  • ui: skip disabled fields when adding OR filter conditions in list view (#13004) (7a40a9f)
  • ui: render preview sizes button when adjustments are disabled but image sizes are defined (#12999) (b1ae749)
  • ui: block rows unexpectedly collapse and array rows not collapsed on init (#12987) (3f30a2e)
  • ui: prevent error if rows is undefined in mergeServerFormState (#12962) (6f6d305)

🎨 Styles

  • richtext-lexical: ensure error state is shown at small-break (#12827) (ac19b78)

🧪 Tests

📝 Templates

⚙️ CI

  • template errors not being caught due. fix: error due to updated generated-types User type (#12973) (4458f74)

🏡 Chores

🤝 Contributors

v3.44.0

27 Jun 13:28
c66e5ca
Compare
Choose a tag to compare

v3.44.0 (2025-06-27)

🚨 Notice 🚨

If your project uses the local auth strategy with db-postgres or db-sqlite, a migration is required. This is due to a new security feature (enabled by default) that stores a unique auth session identifier in the database.

To opt out and continue using the previous behavior, you can disable the feature by setting auth.useSessions: false in your users collection config.

For example:

// payload.config.ts
collections: [
  {
    slug: 'users',
    auth: {
      useSessions: false,
    },
    fields: [],
  },
],

🚀 Features

🐛 Bug Fixes

  • richTextField supports beforeInput/afterInput, but these were missing from types.ts (#12889) (e769550)
  • validate "null" value for point field as true when its not required (#12908) (2da6d92)
  • get external resource blocked (#12927) (a7ad573)
  • restore missing properties to live preview client config (#12904) (bcb10b5)
  • uses valid fractional index for test (#12942) (8900a38)
  • querying virtual fields deeply with draft: true (#12868) (bc9b501)
  • use small pill size when viewing version information (#12844) (6c4dfe4)
  • db-mongodb: strip deleted from the config blocks from the result (#12869) (54afaf9)
  • db-postgres: joins with custom schema (#12937) (c1f6297)
  • db-postgres: querying on hasMany: true select field in a relationship (#12916) (b74969d)
  • drizzle: skip column if undefined in findMany (#12902) (605c993)
  • live-preview: client-side live preview cannot populate more than 10 relationships at once (#12929) (7472798)
  • live-preview: foreign postMessage events reset client-side state (#12925) (67fa5a0)
  • next: live preview popup triggers leave without saving modal (#12947) (141133a)
  • next: prevent errors in globals version view (#12920) (39e9519)
  • next: remove error handling from next auth functions (#12897) (1b5e3fe)
  • next: remove console.error from next auth functions (#12881) (fe58f03)
  • plugin-import-export: duplicated rows and headers in CSV export when streaming paginated results (#12941) (5cf9287)
  • plugin-import-export: csv export for polymorphic relationship fields (#12926) (6d76874)
  • plugin-import-export: omit CSV columns when toCSV returns undefined (#12923) (751691a)
  • plugin-multi-tenant: updates tenant selector upon tenant creation (#12936) (c76d839)
  • richtext-lexical: consistent html converter inline padding (#12848) (11ac230)
  • ui: usePreventLeave should not show alert for exceptions (#12722) (c3c1614)
  • ui: vertically align table headers to the middle (#12699) (0e9865c)
  • ui: properly render create new button in polymorphic joins (#12930) (a1822d2)
  • ui: render DateTime label as instead of (#12949) (4b9566f)
  • ui: bulk upload losing state when adding additional files (#12946) (d62d9b4)
  • ui: unreachable custom views when admin route set to '/' (#12812) (379fc12)
  • ui: toggle list selections off on successful bulk action (#12861) (9f17db8)
  • ui: align caret on error tooltip for checkbox field (#12917) (c094b0e)
  • ui: updates auth fields UI to reflect access control (#12745) (1845669)
  • ui: folder server function must reference exports dir (#12898) (0d50799)
  • ui: custom row labels on arrays should not be removed on field duplication (#12895) (37c945b)
  • ui: date format of useAsTitle lost after changing value (#12928) (20bbbcf)
  • ui: properly differentiate between DOM events and raw values in setValue (#12892) (c03e9c1)
  • ui: should select document after creation from relationship field (#12842) (25e3902)
  • ui: support react node content in ConfirmationModal heading and body (#12841) (dffdee8)

🛠 Refactors

📚 Documentation

Read more

v3.43.0

16 Jun 20:14
810869f
Compare
Choose a tag to compare

v3.43.0 (2025-06-16)

🚀 Features

🐛 Bug Fixes

  • ensure job autoruns are not triggered if jobs collection not enabled (#12808) (769ca03)
  • filtering joins in where by ID (#12804) (9943b35)
  • change payload.jobs.run and bin script to only run jobs from default queue by default, adds support for allQueues argument (#12799) (06ad171)
  • remove unsupported path property from default document view configs (#12774) (f64a0ae)
  • field inside an unnamed group field erroring when used as a title (#12771) (143aff5)
  • error when saving global with versioning enabled (#12778) (cf43c5c)
  • reduce global DOM/Node type conflicts in server-only packages (#12737) (67fb29b)
  • orderable has incorrect sort results depending on capitalization (#12758) (37afbe6)
  • ensure redirect route is correctly formatted for "Copy to locale" (#12560) (9d2817e)
  • db-mongodb: 4x and more level deep relationships querying (#12800) (245a2de)
  • db-mongodb: bump mongoose to 8.15.1 (#12755) (860e0b4)
  • db-postgres: reordering of enum values, bump [email protected] and [email protected] (#12256) (7045182)
  • db-postgres: x3 and more nested blocks regression (#12770) (df8be92)
  • db-sqlite: sqlite unique validation messages (#12740) (254ffec)
  • plugin-import-export: download button in collection edit view (#12805) (8235fe1)
  • plugin-import-export: incorrect custom type on toCSVFunction changed to toCSV (#12796) (3edcc40)
  • plugin-import-export: export all available fields by default (#12731) (c4e5831)
  • plugin-nested-docs: check error name that is changed at compile time (#12798) (729b676)
  • plugin-redirects: add missing optional chaining (#12753) (d0e647a)
  • storage-azure: return error status 404 when file is not found instead of 500 (#11734) (018317d)
  • storage-gcs: return 404 on file not found instead of 500 (#11746) (d8626ad)
  • storage-s3: return error status 404 when file is not found instead of 500 (#11733) (a19921d)
  • translations: reformats bnBD and bnIN translation imports to camelCase (#12736) (08fbcb5)
  • ui: reordering with a join field inside a group (#12803) (e60db07)
  • ui: adjust alignment of list header actions (#12793) (77f3805)
  • ui: not showing hyphenated field values in table (#12791) (e7b5884)
  • ui: inconsistent pill sizes across admin panel (#12788) (9364d51)

⚡ Performance

  • ui: do not re-animate drawer on re-render, reduce useEffects (#12743) (cb3f9bb)

🛠 Refactors

📚 Documentation

🏡 Chores

🤝 Contributors

v3.42.0

09 Jun 18:47
4ac1894
Compare
Choose a tag to compare

v3.42.0 (2025-06-09)

🚀 Features

  • create the importmap file if missing and the location can be found (#12727) (c6659db)
  • plugin-import-export: add custom toCSV function on fields (#12533) (8f4c442)
  • plugin-import-export: add debug logging option (#12705) (678bfc7)
  • translations: add Bangla translations (#12696) (3f670ca)

🐛 Bug Fixes

  • proper globals max versions clean up (#12611) (9fbc3f6)
  • adds routeParams to the req on views (#12711) (773e4ad)
  • plugin-form-builder: export DateField type (#12695) (8d7dbe6)
  • plugin-import-export: incorrect config extension of jobs (#12730) (ff615d3)
  • plugin-import-export: revise zhTw translations (#12685) (afbdf3d)
  • richtext-lexical: text state css not applied if 2+ text state groups present (#12726) (3d177fd)
  • richtext-lexical: prevent runtime error if using TextStateFeature without props (#12668) (6f82154)
  • richtext-slate: add 'li' string literal to RichTextElement type (#12693) (e10e445)
  • translations: correct i18n dynamic variable name for 'movingFromFolder' (#12642) (6f76d72)

⚡ Performance

  • richtext-lexical: improve typing performance while toolbars are enabled (#12669) (aef4f77)

📚 Documentation

  • document how to expose the jobs collection in Admin UI (#12707) (34fe36b)
  • fix formatting in custom components > edit view paragraph (#12697) (6466684)
  • improve jobs autorun docs, adds e2e test (#12196) (7c05c77)
  • enhance drafts documentation with examples for REST, Local, and GraphQL APIs (#12575) (629e74d)
  • removes duplicate headline in building without a db connection (#12694) (4ee4aa7)
  • plugin-form-builder: add warning about GraphQL type name collis… (#12720) (7b21270)

🏡 Chores

🤝 Contributors

v3.41.0

05 Jun 14:10
a10c3a5
Compare
Choose a tag to compare

v3.41.0 (2025-06-05)

🚀 Features

  • optionally exclude collection documents from appearing in browse-by-folder (#12654) (337f618)
  • improve turbopack compatibility (#11376) (319d335)
  • polymorphic join querying by fields that don't exist in every collection (#12648) (2b40e0f)
  • ui: use document drawers for folder edit/create (#12676) (9581092)
  • ui: adds new editMenuItems custom component (#12649) (625d8d9)

🐛 Bug Fixes

  • correctly detect glb & gltf mimetypes during upload (#12623) (05eeddb)
  • allow unnamed group fields to not set a label at all (#12580) (d561195)
  • cpa: generate .env when using the --example flag (#12572) (836fd86)
  • db-postgres: ensure deletion of numbers and texts in upsertRow (#11787) (bd512f1)
  • db-postgres: in query with null (#12661) (c08cdff)
  • live-preview: correct type inference (#12619) (c83e791)
  • next: cannot override tab of default views (#11789) (c639c5f)
  • plugin-seo: thread allowCreate to meta image component (#12624) (ede5c67)
  • richtext-lexical: export defaultColors for use in client components (#12627) (8199a7d)
  • richtext-lexical: enable select inputs with ctrl+a or cmd+a (#12453) (89ced5e)
  • translations: add missing import for lv locale from date-fns (#12577) (cbc37d8)
  • ui: adjusts margin spacing on upload actions (#12692) (1dd4a12)
  • ui: safely extract text from React nodes (#12419) (48e5ee6)
  • ui: formatDate and formatTimeToNow utility type error on i18n arg to support I18nClient too (#12576) (76bf459)
  • ui: correctly thread through the autoComplete attribute from admin config to the text input (#12473) (08ec837)
  • ui: clear miliseconds in date fields unless theyre explicitly provided in the display format (#12650) (a9ff375)
  • ui: reset columns state throwing errors (#11903) (08a6f88)
  • ui: upload action button styles (#12592) (6119d89)

⚡ Performance

  • ui: prevent unnecessary client config sanitization (#12665) (2bd098c)

🛠 Refactors

  • translations: correct i18n translation for Mandarin (#12561) (6f8cff7)
  • ui: improve relationship field option loading reliability using queues (#12653) (30dd9a2)

📚 Documentation

  • add Content-Type header for JWT authentication (#12513) (3f7debd)
  • fix import statements for plugin-nested-docs (#12494) (5635ec5)
  • improve rich-text documentation with hasText usage tip (#12645) (53de775)
  • fix beforeHook documentation to reflect actual behaviour (#12651) (fd5cd1a)
  • improve module augmentation docs for request context (#12681) (0c3ff88)
  • update seo plugin tabbedUI docs to mention potential pitfalls with the config option (#12549) (505eaa2)
  • missing dash (#12644) (684c436)
  • building without a db connection (#12607) (7c094dc)

📝 Templates

⚙️ CI

🏡 Chores

  • fix various e2e test setup issues (#12670) (545d870)
  • fix lint warnings for default exports, unused imports, unused err in catch (#12666) (48218bc)
  • migrate to TypeScript strict in Payload package (enable strictNullChecks) - #3 (#12586) (6ec21a5)
  • update CONTRIBUTING.md (#12511) (5e3a94b)

🤝 Contributors

v3.40.0

29 May 19:48
3670886
Compare
Choose a tag to compare

v3.40.0 (2025-05-29)

🚀 Features

🐛 Bug Fixes

  • parseCookies ignore invalid encoded values (#12515) (bfdcb51)
  • improve translation script prompt and fix some incorrectly used terms in spanish and dutch (#12548) (1731dd7)
  • browseByFolder route should be optional (#12527) (c010d51)
  • thread req into interal folder payload operations (#12523) (64443d8)
  • infinite loop in findUp utility when a result is not found (#12457) (842d184)
  • delete subfolders hook with relational databases (#12507) (45f4c5c)
  • db-*: disable DB connection for payload migrate:create (#12596) (12395e4)
  • db-*: migrate:reset executes in a wrong order (#12445) (1b1e36e)
  • db-mongodb: exists query on checkbox fields (#12567) (f2b6c4a)
  • db-postgres: properly escape the ' character (#12590) (6888f13)
  • examples: update live-preview example to ESM (#12570) (d6f6b05)
  • next: folder redirects not working (#12509) (bc43982)
  • richtext-lexical: respect disableBlockName (#12597) (ca26402)
  • richtext-lexical, ui: opening relationship field with appearance: "drawer" inside rich text inline block (#12529) (f2b54b5)
  • storage-vercel-blob: client uploads with a prefix (#12559) (b61ef13)
  • templates: update template/plugin and fix import map issue (#12305) (68ba24d)
  • translations: improve Spanish translations (#12555) (8a7ac78)
  • translations: correct Norwegian terms for “locale” and language labels (#12557) (bd2571c)
  • ui: reduces pill sizing in autosave cells (#12606) (a17d84e)
  • ui: oversized column selector pills (#12583) (3022cab)
  • ui: filtering on hasMany fields (#12579) (166dafe)
  • ui: prevent textarea description overlapping fields and not honoring rows attribute (#12406) (032375b)
  • ui: cloudfront removing X-HTTP-Method-Override header (#12571) (8448e5b)
  • ui: live-preview-tab should show beforeDocumentControls (#12568) (dfa0974)
  • ui: safari css rendering issues with table and folder cards (#12531) (293cdc1)
  • ui: only and files/folders to the grid/list if they were added to the current folder (#12525) (5a75881)
  • ui: replaces css fn with css calc (#12520) (feeee19)
  • ui: index based ids without useAsTitle breaks folders (#12519) (e9cda1e)

⚡ Performance

  • folder views download only images and get best fit from image sizes (#12514) (11a4a20)

🛠 Refactors

📚 Documentation

📝 Templates

🏡 Chores

🤝 Contributors

v3.39.1

22 May 15:44
9ef51a7
Compare
Choose a tag to compare

v3.39.1 (2025-05-22)

🐛 Bug Fixes

📚 Documentation

📝 Templates

🤝 Contributors

v3.39.0

22 May 14:23
c1c0db3
Compare
Choose a tag to compare

v3.39.0 (2025-05-22)

🚀 Features

📁 Folders (#10030) (00667fa)

Folders allow you to organize your documents in a more manageable way. Now you can enable folders on a per-collection basis and from there start adding folders from within the admin panel (or via the API). Once you have folders enabled you can then start organizing. You can create folders and store documents across multiple collection types and then view them either in the collection "By Folder" or in the global "Browse by Folder" view.

CleanShot.2025-05-21.at.21.49.16.mp4
  • show fields inside groups as separate columns in the list view (#7355) (2a41d3f)
  • plugin-form-builder: add new date field (#12416) (4dfb2d2)
  • richtext-lexical: add TextStateFeature (allows applying styles such as color and background color to text) (#9667) (fc83823)
  • ui: extracts relationship input for external use (#12339) (88769c8)

🐛 Bug Fixes

  • auto inject req.user into query preset constraints (#12461) (22b1858)
  • telemetry in opennext cloudflare (#12327) (2ab8e2e)
  • prevent resizing of original file with withoutEnlargement on update (#12291) (1235a18)
  • incorrect environment file loading (#12360) (1425269)
  • sanitize duplicate blocks (#12440) (5855f3a)
  • orderable with groups and tabs requires migration (#12422) (529bfe1)
  • respect hidden: true for virtual fields that have reference to a relationship field (#12219) (1f6efe9)
  • cpa: ensure it always installs the latest version of the templates (#12488) (898e97e)
  • db-*: ensure consistent sorting even when sorting on non-unique fields or no sort parameters at all (#12447) (72ab319)
  • db-mongodb: remove limit from nested querying (#12464) (230128b)
  • db-postgres: allow the same block slug in different places with a different localized value (#12414) (219fd01)
  • plugin-import-export: add translations for all UI elements and fields (#12449) (3127d6a)
  • plugin-multi-tenant: multi-locale tenant select label (#12444) (4fe3423)
  • plugin-multi-tenant: add missing translation for Assigned Tenant field (#12448) (e8c2b15)
  • plugin-seo: fix genImageResponse result parsing (#12301) (cead312)
  • richtext-lexical: support inline block types in strict mode for JSXConvertersFunction type (#12478) (8596ac5)
  • templates: make images visible in live preview if it is not running on port 3000 (#12432) (d4899b8)
  • ui: set gap to 0 in sort column buttons to remove unneeded spacing (#12481) (c772a32)
  • ui: render missing group children fields for unnamed group (#12433) (6fb2beb)
  • ui: req not being threaded through to views (#12213) (bd6ee31)

⚡ Performance

📚 Documentation

  • update rich text to HTML conversion documentation (#12465) (c701dd4)
  • fix API capitalization typo in virtual fields documentation (#12477) (324daff)

🧪 Tests

  • add test for sorting by a virtual field with a reference (#12351) (81d333f)

📝 Templates

🏡 Chores

  • simplifies buildColumnState functions (#12496) (8142a00)
  • ignore .idea run configuration templates (#12439) (23f4204)
  • fix all lint errors and add mechanisms to prevent them from appearing again (#12401) (2a929cf)
  • add ignores .next folder in eslint config for templates template (#12423) (e395a0a)
  • drizzle: fix lint errors in @payloadcms/drizzle (#12428) (38029cd)
  • live-preview: load schemaJSON from proper client config in integration tests (#12167) (08a3dfb)

🤝 Contributors