[Breaking Change][lexical-react] Refactor: LexicalNestedComposer add skipEditableListener prop and deprecate initialNodes prop and implicit namespace setting#7357
Merged
etrepum merged 6 commits intofacebook:mainfrom Mar 24, 2025
Conversation
…stedComposer initialNodes
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
zurfyx
approved these changes
Mar 23, 2025
23 tasks
GermanJablo
added a commit
to payloadcms/payload
that referenced
this pull request
Sep 3, 2025
Fixes #13386 Below I write a clarification to copy and paste into the release note, based on our latest upgrade of Lexical [in v3.29.0](https://github.com/payloadcms/payload/releases/tag/v3.29.0). ## Important This release upgrades the lexical dependency from 0.28.0 to 0.34.0. If you installed lexical manually, update it to 0.34.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 describe breaking changes. We recommend reading them if you're using Lexical APIs directly (`@payloadcms/richtext-lexical/lexical/*`). - [v.0.33.0](https://github.com/facebook/lexical/releases/tag/v0.33.0) - [v.0.30.0](https://github.com/facebook/lexical/releases/tag/v0.30.0) - [v.0.29.0](https://github.com/facebook/lexical/releases/tag/v0.29.0) ___ TODO: - [x] facebook/lexical#7719 - [x] facebook/lexical#7362 - [x] facebook/lexical#7707 - [x] facebook/lexical#7388 - [x] facebook/lexical#7357 - [x] facebook/lexical#7352 - [x] facebook/lexical#7472 - [x] facebook/lexical#7556 - [x] facebook/lexical#7417 - [x] facebook/lexical#1036 - [x] facebook/lexical#7509 - [x] facebook/lexical#7693 - [x] facebook/lexical#7408 - [x] facebook/lexical#7450 - [x] facebook/lexical#7415 - [x] facebook/lexical#7368 - [x] facebook/lexical#7372 - [x] facebook/lexical#7572 - [x] facebook/lexical#7558 - [x] facebook/lexical#7613 - [x] facebook/lexical#7405 - [x] facebook/lexical#7420 - [x] facebook/lexical#7662 --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1211202581885926
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.
Breaking Changes
LexicalNestedComposer manipulates internal data structures of the LexicalEditor in ways that are unsafe and lead to incorrect behavior.
The
initialNodesprop is deprecated and will be removed in v0.32.0. The functionality it had can be achieved by configuring the nodes array of the editor correctly when it is created.Similarly, the forced inheritance of
namespaceis incorrect whenever the nodes configuration differs at all from the parent. It is always safer and more correct to explicitly specify a namespace.Before
After
New APIs
There's a new
skipEditableListenerproperty ofLexicalNestedComposerPropsthat allows you to manually control the editable state of the nested editor. Previously the editable state of the nested editors was always forced to follow the parent editor's editable state.Description
initialNodes doesn't work correctly, never really has, and should be deprecated. This deprecates that feature, provides a warning in
__DEV__with planned removal for v0.32.0.Additionally other misfeatures of LexicalNestedComposer have been cleaned up allowing for more explicit control over the nested editor's configuration (namespace, editable state).
Internally this was implemented by storing the arguments used to create the editor so that it can be determined whether a value was set explicitly or implicitly (e.g. the automatically created namespace). This will also be useful as an internal implementation detail for other features.
Test plan
Unit tests for skipEditableListener and the warnings (with a warnOnlyOnce mock that always warns)