v3.29.0 (2025-03-20)
Important
This release upgrades the lexical dependency from 0.27.1
to 0.28.0
.
If you installed lexical manually, update it to 0.28.0
. Installing lexical manually is not recommended, as it may break between updates, and our re-exported versions should be used. See the yellow banner box for details.
If you still encounter richtext-lexical errors, do the following, in this order:
- Delete
node_modules
- Delete your lockfile (e.g.
pnpm-lock.json
) - Reinstall your dependencies (e.g.
pnpm install
)
🚀 Features
- pass i18n through field label and description functions (#11802) (31211e9)
- sort support for payload.update operation (#11769) (20e975b)
- add find to payloadDataLoader to cache local API queries (#11685) (975bbb7)
- distinct error for unverified email login (#11647) (fd99a30)
- aligns user _strategy returned from API (#11701) (8a51fe1)
- form state select (#11689) (9ea8a7a)
- add
forceSelect
collection / global config property (#11627) (5e3d07b) - added support for conditional tabs (#8720) (878dc54)
- db-*: support sort in db.updateMany (#11768) (e96d3c8)
- db-*: allow to thread
id
to create operation data without custom IDs (#11709) (f442d22) - db-postgres: add vector raw column type (#10422) (11d7487)
- plugin-form-builder: radio field (#11716) (427a5f1)
- richtext-lexical: support escaping markdown characters (#11784) (43cdccd)
- richtext-lexical: upgrade lexical from 0.27.2 to 0.28.0 (#11764) (240730f)
- richtext-lexical: allow disabling TabNode (#11656) (013b515)
- richtext-lexical: upgrade lexical from 0.27.1 to 0.27.2 (#11706) (adb42cb)
- ui: don't trigger preventLeave when opening a new tab (#11683) (398607f)
🐛 Bug Fixes
- add locale support to relationship filter options in WhereBuilder (#11783) (90f2491)
- add locale support to relationship filter options in WhereBuilder (#11783) (39ad31a)
- save button styles in edit-many modal (#11780) (7bc75e2)
- wrap login redirect routes with encodeURIComponent (#11778) (a02e476)
- email format validation with hyphens (#11761) (afe4432)
- improves email validation format rules (#11757) (875afcc)
- field appending on duplicate should ignore non string values (#11621) (74996fd)
- passes id and data to read access func when accessing upload URLs (#11684) (4a712e1)
- bulk upload validation when files are missing (#11744) (ea66e21)
- ensures
select
&radio
field option labels accept JSX elements (#11658) (3c92fbd) - add classes for picture tag in media component (#11605) (d66cdbd)
- db-mongodb: spread version schema options correctly (#11793) (1d25b16)
- plugin-cloud-storage: s3Storage client uploads working with more than 2 instances of the plugin (#11732) (bb39c87)
- plugin-import-export: export with draft true (#11762) (67a7358)
- plugin-import-export: translated preview labels (#11758) (e83f452)
- plugin-multi-tenant: ensures redirect route is correctly formatted (#11753) (06aa940)
- plugin-multi-tenant: missing key console message (#11693) (3d129e8)
- richtext-lexical: error in admin panel when block collapsed preference is not an array (#11771) (b857273)
- richtext-lexical: error in admin panel when setting a richtext field in
useAsTitle
(#11707) (ef527fe) - richtext-lexical: make the toolbar indent button consider the disabledNodes property on IndentFeature (#11739) (dd80f52)
- richtext-lexical: unchecked list items were rendered as checked in html converter (#11747) (3f23160)
- richtext-lexical: remove undefined rel and target attributes in link HTML converter (#11754) (aa3737c)
- ui: adding guard check for populate docs in upload field (#11800) (7d9d067)
- ui: bulk edit subfields (#10035) (b5fc8c6)
- ui: excess error css coming from group fields (#11700) (0fe922e)
- ui: fallback localization data was appearing in document (#11743) (ebfb0eb)
- ui: scheduled publish not displaying the timezone's label and timezones being reset when scheduling a publish, brisbane is now a default timezone (#11699) (e0bf505)
- ui: processing and initializing form does not disable standalone fields (#11714) (0b1a1b5)
⚡ Performance
- use direct db calls in job-queue system (#11489) (032c424)
- download only images and optimize image selection for upload list view, prioritize best-fit size (#11696) (6270d73)
- ui: implements select in bulk edit (#11708) (d8bfb22)
🛠 Refactors
- richtext-lexical: new plaintext and markdown converters, restructure converter docs (#11675) (82840aa)
📚 Documentation
- mention correct --disable-transpile flag (#11788) (6640b1c)
- updates docs for
useDocumentInfo
(#11686) (ff2df62)
🧪 Tests
🏡 Chores
- export type FieldAccessArgs (#11749) (f31e5e6)
- bump prettier, re-enable prettier for docs (#11695) (9f9db3f)
- deps: bump next.js from 15.2.2 to 15.2.3 in monorepo (#11748) (95821c6)
- examples: add locale to revalidatePath in Pages hook (#11775) (68f2582)
🤝 Contributors
- Jacob Fletcher (@jacobsfletch)
- Alessio Gravili (@AlessioGr)
- Ainsley Clark (@ainsleyclark)
- Anders Semb Hermansen (@andershermansen)
- Nacho Martin (@nachomglz)
- Jarrod Flesch (@JarrodMFlesch)
- Patrik (@PatrikKozak)
- Terry Yuen (@tyuen)
- Germán Jabloñski (@GermanJablo)
- Dan Ribbens (@DanRibbens)
- Said Akhrarov (@akhrarovsaid)
- Jessica Chowdhury (@JessChowdhury)
- Sasha (@r1tsuu)
- Paul (@paulpopus)
- DriesCruyskens (@DriesCruyskens)
- AoiYamada (@AoiYamada)
- Md. Tajmirul Islam Akhand (@Tajmirul)
- Philipp Schneider (@philipp-tailor)
- Tobias Odendahl (@tak-amboss)