v3.24.0 (2025-02-19)
🚀 Features
- add support for interfaceName on radio and select fields to create reusable top level types (#11277) (acead10)
- join field across many collections (#10919) (6d36a28)
- add
page
query parameter forjoins
(#10998) (847d8d8) - view component types (#11126) (b80010b)
- route transitions (#9275) (3f550bc)
- add siblingFields arg to field hooks (#11117) (155f9f8)
- richtext-lexical: export INSERT_BLOCK_COMMAND and INSERT_INLINE_BLOCK_COMMAND (#11193) (dc36572)
- translations: add support for lithuanian (#11243) (8bbe7bc)
- ui: enable specific css selectors on the localizer per locale (80b33ad)
- ui: confirmation modal (#11271) (bd8ced1)
- ui: adds admin.components.listMenuItems option (#11230) (8a2b712)
- ui: add
hideFileInputOnCreate
andhideRemoveFile
to collectionupload
config (#11217) (daaaa5f) - ui: refines progress bar animation curve (#11167) (16d75a7)
🐛 Bug Fixes
- versions not loading properly (#11256) (0651ae0)
- db transaction errors caused by checkDocumentLockStatus (#11273) (9b8f8d7)
- localized fields within block references were not handled properly if any parent is localized (#11207) (e6fea1d)
- upload and auth endpoints are mounted for all collections (#11231) (749962a)
- populate is ignored for nested relationships (#11227) (938472b)
- ensure leavesFirst option works correctly in traverseFields utility (#11219) (6b9d81a)
- join field does not show validation error (#11170) (dd28959)
- db-mongodb: properly handle document notfound cases for update and delete operations (#11267) (7922d66)
- db-mongodb: remove duplicative indexing of timestamps (#11028) (12f51ba)
- db-postgres: querying other collections via relationships inside blocks (#11255) (88548fc)
- db-postgres: ensure
countDistinct
works correctly and achieve better performance when the query has table joins (#11208) (513ba63) - next: imports toast from @payloadcms/ui (#11279) (cd48904)
- next: document header padding on tablet sized screens (#11192) (70db44f)
- next: pre-flight OPTIONS request errors from the graphql endpoint (#11103) (ececa65)
- plugin-multi-tenant: corrects default value for tenantsArrayTenantFieldName (#11189) (b65ae07)
- plugin-seo: add missing supported languages (#11254) (74ce889)
- richtext-lexical: add container div to table element to allow horizontal scroll in HTML and JSX converters (#11119) (9068bda)
- richtext-lexical: reliably install exact lexical version by removing it from peerDeps (#11122) (2056e9b)
- richtext-lexical: unindent button in toolbar is never active (#11089) (7a400a7)
- ui: minor issues with tabs and publish buttons when in RTL (#11282) (e83318b)
- ui: turbopack with the latest next.js canary [skip lint] (#11280) (009e908)
- ui: disabledLocalStrategy.enableFields missing email/username fields (#11232) (9fc1cd0)
- ui: unsaved changes allows for scheduled publish missing changes (#11001) (618624e)
- ui: timezone issue related to date only fields in Pacific timezones (#11203) (8b0ae90)
- ui: database errors when running autosave and ensure autosave doesn't run unnecessarily (#11270) (1328522)
- ui: do not pass req in handleFormStateLocking (#11269) (7f5aaad)
- ui: issues with prevent leave and autosave when the form is submitted but invalid (#11233) (06debf5)
- ui: allow selectinputs to reset to their initial values if theres no provided value (#11252) (1c4eba4)
- ui: selection status not updating after toggleAll in useSelection hook (#11218) (5817b81)
- ui: properly handle singular and plural bulk edit labels (#11198) (779f511)
- ui: hide edit button on deleted relationship options (#11005) (cba5c7b)
- ui: respect locale in buildTableState (#11147) (077fb3a)
- ui: hide array field "add" button if
admin.readOnly: true
is set (#11184) (b1734b0) - ui: unable to use browser back navigation after visiting list view (#11172) (0a3820a)
- ui: url encode imageCacheTag for media on dashboard (#11164) (d47c980)
- ui: json schema (#11123) (7f124cf)
- ui: prevent omitting fileSize from non-images (#11146) (6901b26)
- ui: adds delay to progress bar for fast networks (#11157) (de68ef4)
- ui: safe call within useEffect teardown (#11135) (30c77d8)
- ui: relationship filterOptions not applied within the list view (#11008) (2a0094d)
⚡ Performance
- optimize permissions calculation with lots of blocks (#11236) (313ff04)
- do not populate globals when calculating permissions, cleanup getEntityPolicies (#11237) (d49de7b)
- deduplicate blocks used in multiple places using new config.blocks property (#10905) (4c8cafd)
🛠 Refactors
- ui: simplifies confirmation modal callback (#11278) (af55549)
- ui: deprecates Link props (#11155) (cd11175)
📚 Documentation
- fix variable name typo in usePayloadAPI (error → isError) (#11249) (7024da8)
- fix typo in cors (#11266) (bf103cc)
- remove outdated
res
parameter inlogin
andresetPassword
operations (#11268) (38c1c11) - update join field docs (#11264) (0d7cf3f)
- add missing jsdocs to version config (#11258) (ede7bd7)
- dedicated custom components docs (#10987) (3229b9a)
- adds onInit to payload config options (#11069) (b646485)
- fix typo in readme (#11196) (35d845c)
- remove file extension from import statement in useLexicalComposerContext (#11188) (480113a)
- fix importMap.baseDir path (#11076) (84c838c)
- fix invalid link (#11174) (152a9b6)
- add inlineBlock converter example to the converters configuration in Converters.mdx (#11158) (24da30a)
- filterAvailableLocales (#11031) (3131dba)
- explains i18n language changing (#10964) (3098f35)
- explains i18n installation (#10963) (d7dee22)
- fixes misc grammar and spelling errors (#10996) (c31bff7)
🧪 Tests
- blocks field helpers (#11259) (8166784)
- regenerate
payload-types.ts
for all test suites (#11238) (117949b) - resolves
select
type errors (#11235) (e78500f) - resolves
locked-documents
type errors (#11223) (ee0ac7f) - add types testing for select and joins (#11138) (4be410c)
- db-mongodb: unit test assertion for relationship sanitization inside
blockReferences
(#11195) (2ae670e)
📝 Templates
- allow to pass
resource={null}
toMedia
component (#11228) (64d0217) - add new readme for quick start on vercel platform (#11131) (707e85e)
- add packageManager to website template instead of engines.pnpm (#11121) (44be433)
- bump for v3.23.0 (#11115) (5d19958)
🏡 Chores
- move dequal to devDependencies (#11220) (d126c2b)
- update codeowners (#11151) (706410e)
- typo in migrate:fresh command (#11140) (6bfa66c)
- add typescript-strict-plugin to the payload package for incremental file-by-file migration [skip lint] (#11133) (6eee787)
- tsconfig.base.json reset (48471b7)
- deps: bumps @monaco-editor/react to v4.7.0 to suppress react 19 warnings (#11161) (f4639c4)
- richtext-lexical: fix unchecked indexed access, make richtext-lexical full ts strict (part 5/5) (#11132) (09ada20)
- richtext-lexical: improve types of UploadData (#10982) (002e921)
🤝 Contributors
- Paul (@paulpopus)
- Sasha (@r1tsuu)
- Dan Ribbens (@DanRibbens)
- Jarrod Flesch (@JarrodMFlesch)
- felismargarita (@felismargarita)
- Fredrik (@Livog)
- Alessio Gravili (@AlessioGr)
- Jacob Fletcher (@jacobsfletch)
- Germán Jabloñski (@GermanJablo)
- Tib (@T1l3)
- Said Akhrarov (@akhrarovsaid)
- Patrik (@PatrikKozak)
- Jessica Chowdhury (@JessChowdhury)
- Riley Langbein (@rilrom)
- annes (@annesnour03)
- Max Malm (@benjick)
- lucasbajoua (@lucasbajoua)
- Kendell Joseph (@kendelljoseph)
- Adit (@ioExpander)
- Hulpoi George-Valentin (@GeorgeHulpoi)
- David Hu (@davidhu2000)
- Alejandro Martinez (@ja-martinez)
- Cody Stallings (@ydocsgnillats)
- Elliot DeNolf (@denolfe)