v0.37.0

facebook/lexicalv0.37.0Oct 11, 2025by etrepum

AI Summary

Ad-hoc release primarily to update happy-dom dependency for CVE, includes initial collab v2 implementation, new ephemeral node concept, and bug fixes.

Key Highlights

  • Happy-dom update to v20 to address CVE reports
  • Initial collab v2 implementation
  • New ephemeral node concept for local-only mutations
  • SvelteKit SSR example
  • ImageNode caption support for export/import

New Features

  • Initial collab v2 implementation with commands for diffing snapshots
  • New internal ephemeral node concept
  • SvelteKit SSR example (@lexical/headless/dom)
  • ImageNode caption support for exportDOM and importDOM
  • Keep list marker for markdown round-trip

Full Release Notes

v0.37.0 is an ad-hoc release, primarily to update the happy-dom dependency to address a CVE (#7909 - lexical's usage of this package was not susceptible) but also includes several bug fixes. This was marked as a minor release because it includes an experimental collab v2 implementation which is not yet ready for use (see #7616 #7903)

## Highlights

Core:
- #7900 โœ… Fix `$cloneWithProperties` so that it doesn't throw an exception when used in read-only mode
- #7904 ๐Ÿ†• Add new (internal) ephemeral node concept for situations where a cloned node is intentionally decoupled from the editor state for mutations that will only have a local effect

Examples:
- ๐Ÿ†• #7879 New sveltekit ssr example demonstrating the use of @lexical/headless/dom

React:
- โœ… #7899 LexicalMenu guard against undefined option when list shrinks

Collab:

- ๐Ÿ†• #7616 #7903 #7907 #7908 Initial implementation of collab v2

List

- ๐Ÿ†• #7892 Keep list marker for markdown round-trip

Rich Text:

- โœ… #7902 Fix up/down arrows for node selection

Clipboard/Playground:
- โœ… #7900 ImageNode caption support for exportDOM and importDOM
- โœ… #7906 Export ParagraphNode as div role="paragraph" when it contains block DOM (such as the `<figure>` from ImageNode captions)

Headless
- ๐Ÿงน #7909 Update to happy-dom v20 to address CVE reports (lexical's usage was not susceptible)

## What's Changed
* v0.36.2 by @etrepum in https://github.com/facebook/lexical/pull/7894
* Update examples for v0.36.2 by @etrepum in https://github.com/facebook/lexical/pull/7896
* [examples] Feature: sveltekit ssr example by @etrepum in https://github.com/facebook/lexical/pull/7879
* [lexical-react] Bug Fix: LexicalMenu guard against undefined option when list shrinks by @MRADULTRIPATHI in https://github.com/facebook/lexical/pull/7899
* [lexical-yjs][lexical-react] Feature: initial implementation of collab v2 by @james-atticus in https://github.com/facebook/lexical/pull/7616
* [lexical-list][lexical-markdown] Feature: Keep list marker for markdown round-trip by @lytion in https://github.com/facebook/lexical/pull/7892
* [lexical-rich-text] Bug fix: up/down arrows for node selection by @fantactuka in https://github.com/facebook/lexical/pull/7902
* [lexical][lexical-clipboard][lexical-playground] Feature: ImageNode caption support for exportDOM and importDOM by @Kepron in https://github.com/facebook/lexical/pull/7900
* [lexical-yjs][lexical-react] Feature: commands for diffing two yjs snapshots in collab v2 by @james-atticus in https://github.com/facebook/lexical/pull/7903
* [lexical][lexical-clipboard][lexical-html][lexical-selection] Feature: Add an internal ephemeral node concept by @etrepum in https://github.com/facebook/lexical/pull/7904
* [lexical-playground] Bug Fix: Export ParagraphNode as div role="paragraph" when it contains block DOM by @etrepum in https://github.com/facebook/lexical/pull/7906
* [lexical-react] Chore: make __shouldBootstrapUnsafe prop optional by @james-atticus in https://github.com/facebook/lexical/pull/7907
* [lexical-yjs] Chore: fix imports of Yjs XML types by @james-atticus in https://github.com/facebook/lexical/pull/7908
* [lexical-headless] Chore: Update to happy-dom v20 by @etrepum in https://github.com/facebook/lexical/pull/7909

## New Contributors
* @MRADULTRIPATHI made their first contribution in https://github.com/facebook/lexical/pull/7899
* @Kepron made their first contribution in https://github.com/facebook/lexical/pull/7900

**Full Changelog**: https://github.com/facebook/lexical/compare/v0.36.2...v0.37.0