feat(richtext-lexical): upgrade lexical from 0.21.0 to 0.27.1#11564
Merged
feat(richtext-lexical): upgrade lexical from 0.21.0 to 0.27.1#11564
Conversation
Contributor
|
🚀 This is included in version v3.28.0 |
GermanJablo
added a commit
that referenced
this pull request
Mar 2, 2026
## Summary Upgrades the lexical dependency from 0.35.0 to 0.41.0. Keeping up with Lexical releases avoids accumulating too large a gap, which makes future upgrades risky and time-consuming. This upgrade also brings in the upstream `normalizeMarkdown` fix ([facebook/lexical#7812](facebook/lexical#7812)), which means we can eventually drop our vendored copy of that function. If you installed lexical manually, update it to 0.41.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](https://payloadcms.com/docs/rich-text/custom-features) 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) ## Lexical Breaking Changes The following Lexical releases contain breaking changes. We recommend reading them if you're using Lexical APIs directly (`@payloadcms/richtext-lexical/lexical/*`). - [v0.41.0](https://github.com/facebook/lexical/releases/tag/v0.41.0) — `--lexical-indent-base-value` CSS custom property is now only read from the editor root element, not from indented elements. **Payload already handles this change internally** — no action required. - [v0.39.0](https://github.com/facebook/lexical/releases/tag/v0.39.0) — `ElementNode` JSON serialization: `textFormat` and `textStyle` are now only serialized when necessary (when the node has no direct TextNode children). May affect code that reads these properties from serialized data. - [v0.38.0](https://github.com/facebook/lexical/releases/tag/v0.38.1) — Static transforms from superclasses are now always applied. Table selection handler priorities lowered from CRITICAL to HIGH. - [v0.36.1](https://github.com/facebook/lexical/releases/tag/v0.36.1) — `DecoratorNode.decorate()` return type widened to `null | T`. Collaboration context changes (not used by Payload). None of these breaking changes require action from Payload users under normal usage. ## Changes - Bump all `@lexical/*` and `lexical` from 0.35.0 to 0.41.0 - Update `lexicalTargetVersion` constant - Move `--lexical-indent-base-value` CSS variable from `.LexicalEditorTheme__indent` to the `.LexicalEditorTheme` root selector (v0.41.0 breaking change) - Update `textFormat` test expectations for inline code paragraphs (v0.39.0 serialization change) - Update pnpm-lock.yaml ## Previous Lexical Upgrades - [#13715](#13715) — 0.34.0 → 0.35.0 - [#13622](#13622) — 0.28.0 → 0.34.0 - [#11764](#11764) — 0.27.2 → 0.28.0 - [#11564](#11564) — 0.21.0 → 0.27.1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #10628
This upgrades lexical from 0.21.0 to 0.27.1. This will allow us to use the new node state API to implement custom text formats (e.g. text colors), thanks to Germán.
Notable changes ported over from lexical playground:
Table column freezing
CleanShot.2025-03-05.at.20.10.13.mp4
Block cursors
We now render a block cursor, which is a custom cursor that gets rendered when the browser doesn't render the native one. An example would be this this horizontal cursor above block nodes, if there is no space above:
Previously, those cursors were unstyled and not visible
Table Alignment
Tables can now be aligned