| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-28 | 37.1 kB | |
| v0.45.0 source code.tar.gz | 2026-05-28 | 5.8 MB | |
| v0.45.0 source code.zip | 2026-05-28 | 6.8 MB | |
| Totals: 3 Items | 12.6 MB | 0 | |
v0.45.0 is a monthly release with several breaking changes around selection and reconcile semantics, a major new experimental DOMImportExtension API for composable HTML import that replaces importDOM, a generalized DOMSlot and DOM render override surface, new HistoryExtension ergonomics (canUndo/canRedo signals, maxDepth), notable reconciler/selection performance work, and a wide range of bug fixes across IME, mobile keyboards, list/code/table editing, and markdown round-tripping.
Breaking Changes
lexical — Shadow root inclusion in $getReconciledDirection (#8479)
$getReconciledDirection now walks through shadow roots when resolving the reconciled dir attribute on a node, so nested ShadowRoot-style elements (e.g. tables) inherit direction consistently with regular elements. Callers that relied on direction inheritance stopping at shadow roots will need to update.
lexical / @lexical/rich-text — Backspace at block start preserves the current block (#8493)
Pressing Backspace at the start of a non-empty block previously merged the current block into the previous block, which discarded the current block's type/format. The new behavior merges the previous block's children into the current block instead, preserving the current block's type (heading, list item, quote, etc.). A new $mergeBlockBackward helper on RangeSelection is exposed for custom command handlers that want the same behavior.
lexical — Selection adjustment in removeFromParent callers (#8501)
LexicalNode.replace, insertBefore, insertAfter, and related callers that move a node between parents now correctly adjust the current selection to follow the moved node instead of leaving the selection pointing at the (now empty) original slot. This may change selection state observed by transforms or update listeners that previously relied on the stale offsets.
@lexical/markdown — Apply markdown shortcuts on composition-committed triggers (#8503)
Markdown shortcuts (e.g. *, _, ~) typed via IME composition now trigger after the composition is committed, not just on raw beforeinput. This fixes shortcuts being silently dropped during Japanese / Korean / Chinese input but may also fire shortcuts in some flows that previously didn't.
@lexical/extension / @lexical/rich-text / @lexical/plain-text — NormalizeInlineElementsExtension (#8497)
registerRichText and registerPlainText now register a transform that removes empty inline elements (e.g. LinkNode, formatted TextNode wrappers with no children) instead of leaving them in the tree. The transform is also exported as NormalizeInlineElementsExtension from @lexical/extension for use with extension-based setups. Editors that intentionally kept empty inline wrappers will need to disable the extension or override the transform. See Included Extensions.
lexical / @lexical/extension / @lexical/rich-text / @lexical/plain-text — NormalizeTripleClickSelectionExtension (#8520)
The "triple-click selects the whole paragraph including the trailing newline" normalization has moved out of LexicalEvents and into a new NormalizeTripleClickSelectionExtension registered by both rich-text and plain-text. The core LexicalEditor no longer performs this normalization on its own, so editors that bypass registerRichText / registerPlainText (or the equivalent extensions) need to register the extension explicitly to keep the previous behavior. See Included Extensions.
lexical / @lexical/html / @lexical/selection / @lexical/utils / @lexical/playground — Generalized DOMSlot and DOMRenderExtension override surface (#8519)
DOMSlot is now generalized so child slots can be expressed for arbitrary DOM containers (not just the direct child element), and $createDOM, $updateDOM, $exportDOM, $getDOMSlot etc. all flow through the new override surface. The previously-exported AutocompleteNode in the playground has been replaced by a VisibleLineBreakExtension that demonstrates the new override surface, and markSelection in @lexical/utils has been rewritten on top of the generalized slot API. Custom nodes that override getDOMSlot to return a non-element wrapper now have a real way to express that. See the DOMRenderExtension docs.
New APIs
@lexical/html — DOMImportExtension (experimental) (#8528)
A new DOMImportExtension replaces the legacy node-class importDOM static method with a composable middleware-style API. Rules declare a CSS-selector-style matcher, an optional schema for child handling, and a DOMImportFn that builds Lexical nodes from the matching DOM. Many helpers ship alongside it: $distributeInlineWrapper, ImportSession, DOMPreprocessFn for source-specific cleanup (Word, VS Code, etc.), and full TypeScript types for rules, captures, and contexts. A new dev-examples/dom-import showcase wires it up to a Word/VS Code paste flow. The legacy importDOM continues to work; new code can opt in to DOMImportExtension for richer composition and explicit ordering. The companion ClipboardDOMImportExtension (in @lexical/clipboard) routes text/html pastes through the new pipeline. See the DOMImportExtension guide and the "Migrating from importDOM" section.
@lexical/html / @lexical/playground — Conditional DOM render overrides (#8575)
domOverride now supports disabledForEditor and disabledForSession predicates so render overrides can be conditionally skipped on a per-editor or per-session basis (e.g. only apply during export, or only when a feature flag is on). Useful when one extension provides multiple overrides whose applicability depends on context that isn't known at registration time. See the DOMRenderExtension docs.
lexical — ElementNode import/export of data-lexical-indent (#8536)
ElementNode now uniformly imports and exports the data-lexical-indent attribute so any subclass round-trips its indent level through HTML without having to override exportDOM / importDOM (fixes the long-standing [#7729] regression around indented headings/paragraphs).
lexical — Infinite recursion detection in update listeners (#8542)
Update listeners and update transforms that re-trigger themselves are now caught by a runtime guard that throws a descriptive error after a configurable number of nested updates, instead of hanging the tab. See Updates and Listeners.
@lexical/history — canUndo / canRedo ReadonlySignals (#8465)
HistoryExtension's output now exposes canUndo and canRedo as ReadonlySignal<boolean>s so toolbar buttons can subscribe directly without polling historyState or duplicating the priority/state bookkeeping. See Extension Signals.
@lexical/history — maxDepth option (#8537)
HistoryExtension accepts a new maxDepth option that bounds the undo stack. Older entries are evicted FIFO when the depth is exceeded. See the new "Tuning HistoryExtension for memory and long sessions" docs.
@lexical/markdown — $convertSelectionToMarkdownString (#8395)
Counterpart to $convertToMarkdownString that serializes only the current selection (or any caller-provided range) to a markdown string, useful for "copy as markdown" toolbar actions and for selection-scoped AI prompts.
lexical / @lexical/list — $setFormatFromDOM (#8460)
A new $setFormatFromDOM helper extracts text-align / dir from a DOM element and applies it to an ElementNode. ListItemNode.importDOM now uses it to correctly import alignment for list items pasted from external sources.
@lexical/list — ListNode.createListItemNode (#8427)
ListNode exposes a createListItemNode factory that is now used by children-normalization, so ListNode subclasses can supply a custom ListItemNode subclass without monkey-patching the normalizer.
@lexical/rich-text — escapeFormatTriggers on RichTextExtension (#8383)
RichTextExtension now accepts an escapeFormatTriggers config (a ReadonlySignal<EscapeFormatTriggerConfig>) that opts text-format escape behavior in/out per trigger (enter, click, arrow, space, tab). With it enabled, typing at the boundary of a formatted text node "escapes" the active format (bold, italic, code, etc.), matching the typing experience in Google Docs / Notion. Disabled by default. See Included Extensions.
@lexical/extension / @lexical/playground — ClickAfterLastBlockExtension (#8549)
New ClickAfterLastBlockExtension inserts a fresh paragraph when the user clicks below the last block (and places the caret in it), so single-block editors and short documents don't strand the user with no easy way to start a new line.
@lexical/code-prism / @lexical/code-shiki — null Tokenizer.defaultLanguage (#8553)
Tokenizer.defaultLanguage may now be null to indicate that code blocks without an explicit language should round-trip through markdown without injecting a default language tag (e.g. ```javascript). Preserves CommonMark's "no fence info" form on export.
@lexical/code-core / @lexical/code-shiki / @lexical/code-prism — Outdent space-indented code lines (#8445)
Shift+Tab in a code block now correctly outdents space-indented lines (not just tab-indented), respecting the tokenizer's configured indent width.
@lexical/react — Optional async onClose for LexicalTypeaheadMenuPlugin (#8489)
LexicalTypeaheadMenuPlugin's onClose may now return a Promise, useful for handlers that need to await network or animation work before tearing down the menu.
@lexical/clipboard — GetClipboardDataExtension export (#8431)
GetClipboardDataExtension is now exported from @lexical/clipboard for use as a peer dependency from custom clipboard handlers.
@lexical/website — Server-rendered "Copy page" Markdown button (#8570)
Every docs page now has a server-rendered "Copy page as Markdown" button (and a matching ?raw URL) so AI assistants and humans can grab the raw markdown without scraping the rendered HTML.
Highlights
Core:
- ⚠️ [#8479] Include shadow root in
$getReconciledDirection - ⚠️ [#8493] Backspace at block start now preserves the current block (heading / list item / quote)
- ⚠️ [#8501] Adjust selection when
LexicalNodecallers move a node out of its parent - ⚠️ [#8519] Generalize
DOMSlotand add DOMRenderExtension override surface;markSelectionrewritten on top - ⚠️ [#8520] Move triple-click selection normalization to
NormalizeTripleClickSelectionExtension - 🆕 [#8536]
ElementNodeimport/export ofdata-lexical-indent - 🆕 [#8542] Detect infinite recursion in update listeners and transforms
- ⚡ [#8422] Defer DOM Selection property reads in
$updateDOMSelection - ⚡ [#8474] Cache
RangeSelection.isBackward()on the instance - ⚡ [#8481] Adopt GenMap copy-on-write for
NodeMapand reconcilerkeyToDOMMap - ⚡ [#8482] Children fast path with suffix-incremental cache update in
$reconcileChildren - ⚡ [#8505] Centralize replace-area selection mapping + bulk splice across list/selection/link
- ⚡ [#8548] Cache last-child kind for trailing-
<br>reconcile - ✅ [#8412] Import
dirattribute inimportDOM - ✅ [#8417] Workarounds for buggy browser behavior around macOS text replacements
- ✅ [#8428] Respect CSS
displaystyle inisBlockDomNode/isInlineDomNode - ✅ [#8441] Reuse DOM when reconciling cross-parent node moves
- ✅ [#8466] Resolve
--lexical-indent-base-valuevia CSSvar()instead of pre-computing in JS - ✅ [#8470] Preserve queued updates and tags through
setRootElement - ✅ [#8475] Handle iOS 10-key Korean IME
deleteContentBackwardwithtargetRange - ✅ [#8486] Keep caret above the on-screen keyboard after Enter
- ✅ [#8517] Handle triple-click overselection in
$setBlocksType - ✅ [#8547] Migrate away from legacy Flow syntax in flow definitions
- ✅ [#8558] Cursor stuck before leading inline
DecoratorNode - ✅ [#8564] Skip
$reconcileChildrenfast path during full reconcile - ✅ [#8569] Correct children fast-path text size for cross-parent-moved elements
- ✅ [#8577] Prevent
MOVE_TO_END/MOVE_TO_STARTcrash on decorator-only elements - ✅ [#8581] Restore Shift+Cmd+Arrow selection expansion for
MOVE_TO_END/MOVE_TO_START
HTML / DOM:
- 🆕 [#8528]
DOMImportExtension— composable replacement forimportDOMwith rule-based matchers and DOM preprocessing - 🆕 [#8575]
disabledForEditor/disabledForSessionpredicates ondomOverride
Code:
- 🆕 [#8445] Outdent space-indented code lines on Shift+Tab
- 🆕 [#8553] Allow
nullTokenizer.defaultLanguageto preserve markdown ``` round-trip - ✅ [#8487] Detect nested
<br>elements in pasted code - ✅ [#8514] Externalize shiki dependencies in the published bundle
Clipboard:
- 🧹 [#8431] Export
GetClipboardDataExtension
Extension:
- 🆕 [#8497]
NormalizeInlineElementsExtension(also wired into rich/plain text) - 🆕 [#8520]
NormalizeTripleClickSelectionExtension - 🆕 [#8549]
ClickAfterLastBlockExtension - ✅ [#8510] Set the correct default
$canIndent
History:
- 🆕 [#8465]
canUndo/canRedoReadonlySignals onHistoryExtension - 🆕 [#8537]
maxDepthoption for bounding the undo stack
Link / List:
- 🆕 [#8460]
$setFormatFromDOM;ListItemNodeimports alignment from DOM - 🆕 [#8427]
ListNode.createListItemNodefactory for subclasses
Markdown:
- ⚠️ [#8503] Apply markdown shortcuts on composition-committed triggers (fixes IME-typed
*/_/~) - 🆕 [#8395]
$convertSelectionToMarkdownStringAPI - ✅ [#8402] Preserve hard line breaks in default markdown import
- ✅ [#8488] Run element-shortcut transforms on Enter
- ✅ [#8535] Fix markdown import with Unicode whitespace
React:
- 🆕 [#8489] Optional async
onCloseforLexicalTypeaheadMenuPlugin - ✅ [#8411] Pass editor context to
editorState.read()inmarkSelection - ✅ [#8472]
ExtensionComponentsupport for output components with required props - 🧹 [#8485] Make
onOpenEmbedModalForConfigprop optional inLexicalAutoEmbedPlugin
Rich Text / Plain Text:
- 🆕 [#8383] Opt-in
escapeFormatTriggersonRichTextExtension - ✅ [#8526] Insert paragraph on Enter for a block
DecoratorNodeNodeSelection
Table:
- ✅ [#8492] Attach window
pointerdownhandler when root element is set after register - ✅ [#8502] Prevent crash when moving selection with arrow key outside of nested table
Yjs:
- ✅ [#8461] Handle node state being removed on non-
TextNodes in collab v2 - 🧹 [#8527] Fix
RenderSnapshotcomment typo
Playground:
- 🆕 [#8464] New "markdown-editor split-view" example
- ✅ [#8419] [#8432] Position
FloatingLinkEditorcorrectly for multi-line / decorator-only links and near the editor's bottom edge - ✅ [#8442] Prevent crash importing
<details>with loose body content - ✅ [#8444] Allow
PagesExtensionto be disabled byActionsPlugin(HTML & markdown mode) - ✅ [#8453] Convert selection to a code block in place
- ✅ [#8480] Prevent auto-zoom when focusing in the editor on iOS Safari
- ✅ [#8496] Set
font-sizeforh2 - ✅ [#8521] Fix unawaited Playwright promises in e2e suite
- ✅ [#8534]
EquationNodeclick →NodeSelection; empty-input Backspace removes - ✅ [#8539] Normalize collapsible content children
- ✅ [#8565] Build dev playground in development mode
Website / Examples:
- 🆕 [#8570] Server-rendered "Copy page as Markdown" button
- 🆕 [#8546] "Tuning HistoryExtension for memory and long sessions" docs
- 🆕 [#8429] Clarify
editorStatenullvsundefinedand empty-state pitfall - 🆕 [#8467] Document
NodeStatein$configJSON serialization - 🆕 [#8471] TSDoc for
LexicalNodeReplacementandwithKlass - 🆕 [#8476] Add missing
@lexical/reactplugin docs - 🧹 [#8430] Inline toolbar SVG icons in examples via Vite asset handling
- 🧹 [#8403] Merge
dev-node-state-styleintoexamples/node-state-style - 🧹 [#8473] Disable
skipLibCheckinreact-richfor lib-types regression coverage (#7093) - ✅ [#8462] Add the missing links to the sandbox
- ✅ [#8463] [#8483] Fix copyright statement to pass OSS automated checkup
- ✅ [#8498]
update-team-data - ✅ [#8509] Drop Vercel Analytics inject and unwrap chat input from flex parent
- ✅ [#8516] Drop
docusaurus-plugin-internaldocs-fbpreset - ✅ [#8523] Correct links to included extensions
- ✅ [#8531] Remove
embed=1from non-iframe StackBlitz links - ✅ [#8557] Fix crash on
/docs/errorpage from undefinedprocess
Infrastructure:
- 🧹 [#8554] Publish packages from their root directory
- 🧹 [#8512] Respect
browserslist - 🧹 [#8504] Use composite actions to simplify GitHub workflows
- 🧹 [#8494] Only cancel in-progress workflows on newer commits
- 🧹 [#8499] Run extended tests on new commits to approved PRs
- 🧹 [#8508] Drop FIXME [#8348] Firefox
ArrowDownworkaround inTables.spec.mjs - 🧹 [#8522] Pin Windows e2e runners to
windows-2022 - 🧹 [#8572] Use
playwright install-depsinstead ofapt-get - 🧹 [#8582] Upgrade
@playwright/testto^1.60.0 - 🧹 [#8541] Cover bold-italic markdown round trip
- 🧹 [#8400] Fix release workflow's missing rename from
release.jstorelease.mjs - 🧹 [#8401] [#8404] [#8405] [#8406] [#8408] [#8409] [#8415] [#8540] Dependency vulnerability fixes (protobufjs, dompurify, postcss, astro, eslint, immutable, path-to-regexp, serialize-javascript)
What's Changed
- v0.44.0 by @etrepum in https://github.com/facebook/lexical/pull/8394
- [*] Bug Fix: Fix release workflow's missing rename from release.js to release.mjs by @etrepum in https://github.com/facebook/lexical/pull/8400
- [lexical] Chore: Fix protobufjs dependency vulnerability by @vishisht31 in https://github.com/facebook/lexical/pull/8401
- [lexical] Chore: Fix dompurify dependency vulnerability by @vishisht31 in https://github.com/facebook/lexical/pull/8404
- [lexical] Chore: Fix postcss dependency vulnerability by @vishisht31 in https://github.com/facebook/lexical/pull/8405
- [lexical] Chore: Fix astro dependency vulnerability by @vishisht31 in https://github.com/facebook/lexical/pull/8406
- [examples] Chore: Merge dev-node-state-style into examples/node-state-style by @etrepum in https://github.com/facebook/lexical/pull/8403
- [lexical] Chore: Fix eslint dependency vulnerability by @vishisht31 in https://github.com/facebook/lexical/pull/8408
- [lexical] Chore: Fix immutable dependency vulnerability by @vishisht31 in https://github.com/facebook/lexical/pull/8409
- [lexical][lexical-rich-text][lexical-list] Bug Fix: Import dir attribute in importDOM by @mayrang in https://github.com/facebook/lexical/pull/8412
- [lexical] Chore: Fix path-to-regexp dependency vulnerability by @vishisht31 in https://github.com/facebook/lexical/pull/8415
- [lexical-utils] Bug Fix: Pass editor context to editorState.read() in markSelection by @potatowagon in https://github.com/facebook/lexical/pull/8411
- [lexical-markdown] Feature: Add $convertSelectionToMarkdownString API by @mayrang in https://github.com/facebook/lexical/pull/8395
- [lexical] perf: defer DOM Selection property reads in $updateDOMSelection by @rhagigi in https://github.com/facebook/lexical/pull/8422
- [lexical-playground] Bug Fix: Position FloatingLinkEditor below the entire link for multi-line and decorator-only links by @mayrang in https://github.com/facebook/lexical/pull/8419
- Chore: Inline toolbar SVG icons in examples via Vite asset handling by @markselby9 in https://github.com/facebook/lexical/pull/8430
- [lexical-website][lexical-react] Documentation Update: Clarify editorState null vs undefined and empty-state pitfall by @markselby9 in https://github.com/facebook/lexical/pull/8429
- [lexical] Bug Fix: Respect CSS display style in isBlockDomNode and isInlineDomNode by @abhishekvishwakarma007 in https://github.com/facebook/lexical/pull/8428
- [lexical-clipboard] Chore: Export GetClipboardDataExtension by @ibastawisi in https://github.com/facebook/lexical/pull/8431
- [lexical-playground] Bug Fix: Prevent FloatingLinkEditor toolbar from being clipped near the editor's bottom edge by @mayrang in https://github.com/facebook/lexical/pull/8432
- [lexical][lexical-playground] Bug Fix: Add workarounds for buggy browser behavior around macOS text replacements by @nmggithub in https://github.com/facebook/lexical/pull/8417
- [lexical-markdown] Bug Fix: Preserve hard line breaks in default markdown import by @pro-vi in https://github.com/facebook/lexical/pull/8402
- [lexical][lexical-list] Bug Fix: Reuse DOM when reconciling cross-parent node moves by @mayrang in https://github.com/facebook/lexical/pull/8441
- [lexical-playground] Bug Fix: Prevent crash importing with loose body content by @markselby9 in https://github.com/facebook/lexical/pull/8442
- [lexical-playground] Bug Fix: Allow PagesExtension to be disabled by ActionsPlugin (html & markdown mode) by @etrepum in https://github.com/facebook/lexical/pull/8444
- [lexical-list] Feature: Add the
createListItemNodemethod to the ListNode and use it for children normalization by @levensta in https://github.com/facebook/lexical/pull/8427 - [lexical-rich-text] Feature: Add opt-in format escape triggers for RichTextExtension by @vishisht31 in https://github.com/facebook/lexical/pull/8383
- build(deps): bump @floating-ui/react from 0.27.16 to 0.27.19 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8448
- build(deps): bump happy-dom from 20.8.9 to 20.9.0 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8451
- [lexical-code-core][lexical-code-shiki][lexical-code-prism] Feature: Outdent space-indented code lines by @mayrang in https://github.com/facebook/lexical/pull/8445
- [lexical-playground] Bug Fix: Convert selection to a code block in place by @mayrang in https://github.com/facebook/lexical/pull/8453
- build(deps-dev): bump the dev-dependencies group across 1 directory with 30 updates by @dependabot[bot] in https://github.com/facebook/lexical/pull/8447
- build(deps): bump yjs from 13.6.27 to 13.6.30 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8449
- build(deps-dev): bump @types/jsdom from 21.1.6 to 28.0.1 in the dev-dependencies group by @dependabot[bot] in https://github.com/facebook/lexical/pull/8455
- build(deps): bump react-day-picker from 9.12.0 to 9.14.0 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8458
- build(deps): bump react-error-boundary from 6.0.0 to 6.1.1 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8456
- [lexical-yjs] Bug Fix: Handle node state being removed on non-TextNodes in collab v2 by @james-atticus in https://github.com/facebook/lexical/pull/8461
- [examples] Docs: Add the missing links to the sandbox by @levensta in https://github.com/facebook/lexical/pull/8462
- [lexical][lexical-list] Feature: Add
$setFormatFromDOMfunction and use it to import alignment for ListItem by @levensta in https://github.com/facebook/lexical/pull/8460 - build(deps): bump @chakra-ui/react from 2.10.9 to 3.35.0 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8457
- [lexical-website] Fix copyright statement to pass OSS automated checkup by @potatowagon in https://github.com/facebook/lexical/pull/8463
- [lexical] Bug Fix: Resolve --lexical-indent-base-value via CSS var() instead of pre-computing in JS by @mayrang in https://github.com/facebook/lexical/pull/8466
- [lexical-website] Documentation Update: Document NodeState in $config JSON serialization by @markselby9 in https://github.com/facebook/lexical/pull/8467
- [lexical-website] Documentation: Add missing @lexical/react plugin docs by @abhishekvishwakarma007 in https://github.com/facebook/lexical/pull/8476
- [lexical] Refactor: Cache RangeSelection.isBackward() result on the instance by @mayrang in https://github.com/facebook/lexical/pull/8474
- [examples] Chore: Disable skipLibCheck in react-rich for lib-types regression coverage (#7093) by @markselby9 in https://github.com/facebook/lexical/pull/8473
- [lexical] Documentation: Add TSDoc for LexicalNodeReplacement and withKlass by @markselby9 in https://github.com/facebook/lexical/pull/8471
- [lexical-history] Feature: Add canUndo and canRedo ReadonlySignals to HistoryExtension output by @etrepum in https://github.com/facebook/lexical/pull/8465
- [lexical-react] Bug Fix: ExtensionComponent support for output Components with required props by @etrepum in https://github.com/facebook/lexical/pull/8472
- [lexical] Perf: Adopt GenMap copy-on-write for NodeMap and reconciler keyToDOMMap by @mayrang in https://github.com/facebook/lexical/pull/8481
- [lexical] Bug Fix: Preserve queued updates and tags through setRootElement by @mayrang in https://github.com/facebook/lexical/pull/8470
- Fix: Copyright statement to match OSS automated checkup regex by @potatowagon in https://github.com/facebook/lexical/pull/8483
- [Breaking Change][lexical] Bug Fix: Include shadow root in $getReconciledDirection by @ibastawisi in https://github.com/facebook/lexical/pull/8479
- [lexical-playground] Fix: Prevent auto-zoom when focusing in the editor in iOS Safari by @levensta in https://github.com/facebook/lexical/pull/8480
- [lexical] Bug Fix: keep caret above the on-screen keyboard after Enter by @jWA86 in https://github.com/facebook/lexical/pull/8486
- [lexical-code-core] Bug Fix: detect nested br elements in pasted code by @danyalahmed1995 in https://github.com/facebook/lexical/pull/8487
- [lexical-react] Chore: Make
onOpenEmbedModalForConfigprop optional in LexicalAutoEmbedPlugin by @levensta in https://github.com/facebook/lexical/pull/8485 - [lexical-table] Bug Fix: Attach window pointerdown handler when root element is set after register by @etrepum in https://github.com/facebook/lexical/pull/8492
- [examples][lexical-website] Feature: Add markdown-editor split-view example by @etrepum in https://github.com/facebook/lexical/pull/8464
- [ci] Bug Fix: Only cancel in-progress workflows on newer commits by @etrepum in https://github.com/facebook/lexical/pull/8494
- [Breaking Change][lexical] Bug Fix: Backspace at block start preserves the current block by @mayrang in https://github.com/facebook/lexical/pull/8493
- [lexical] Bug Fix: Handle iOS 10-key Korean IME deleteContentBackward with targetRange by @kotom320 in https://github.com/facebook/lexical/pull/8475
- [lexical-website] Chore: pnpm run update-team-data by @etrepum in https://github.com/facebook/lexical/pull/8498
- build(deps): bump mermaid from 11.14.0 to 11.15.0 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8500
- [ci] Bug Fix: Run extended tests on new commits to approved PRs by @etrepum in https://github.com/facebook/lexical/pull/8499
- [lexical-playground] Bug Fix: Set font-size for h2 by @levensta in https://github.com/facebook/lexical/pull/8496
- [Breaking Change][lexical] Bug Fix: Adjust selection when removeFromParent callers move a node out of its parent by @mayrang in https://github.com/facebook/lexical/pull/8501
- [lexical] Perf: Children fast path with suffix-incremental cache update in $reconcileChildren by @mayrang in https://github.com/facebook/lexical/pull/8482
- [lexical-playground] Chore: Drop FIXME [#8348] Firefox ArrowDown workaround in Tables.spec.mjs by @markselby9 in https://github.com/facebook/lexical/pull/8508
- [Breaking Change][lexical-markdown] Bug Fix: Apply markdown shortcuts on composition-committed triggers by @mayrang in https://github.com/facebook/lexical/pull/8503
- [Breaking Change][lexical-extension][lexical-rich-text][lexical-plain-text] Feature: Remove empty inline elements by @levensta in https://github.com/facebook/lexical/pull/8497
- [lexical-table] Bug Fix: prevent crash when moving selection with arrow key outside of nested table by @randal-atticus in https://github.com/facebook/lexical/pull/8502
- [lexical][lexical-list][lexical-selection][lexical-link] Refactor: Centralize replace-area selection mapping + bulk splice by @mayrang in https://github.com/facebook/lexical/pull/8505
- [lexical-extension] Bug Fix: Set the correct default
$canIndentby @levensta in https://github.com/facebook/lexical/pull/8510 - [ci] Refactor: Use composite actions to simplify github workflows by @etrepum in https://github.com/facebook/lexical/pull/8504
- [lexical-website] Refactor: Drop docusaurus-plugin-internaldocs-fb preset by @zurfyx in https://github.com/facebook/lexical/pull/8516
- [lexical-website] Bug Fix: Drop Vercel Analytics inject and unwrap chat input from flex parent by @mayrang in https://github.com/facebook/lexical/pull/8509
- [lexical-code-shiki][nextjs-code-shiki] Bug Fix: Externalize shiki dependencies in the published bundle by @etrepum in https://github.com/facebook/lexical/pull/8514
- [lexical-website] Bug Fix: Correct links to included extensions by @duydang2311 in https://github.com/facebook/lexical/pull/8523
- [lexical-markdown] Bug Fix: run element markdown shortcuts on Enter by @abhinavgautam01 in https://github.com/facebook/lexical/pull/8488
- [lexical-react] Feature: optional async onClose for LexicalTypeaheadMenuPlugin by @abhinavgautam01 in https://github.com/facebook/lexical/pull/8489
- [lexical][lexical-yjs][lexical-playground] Chore: Respect browserslist by @levensta in https://github.com/facebook/lexical/pull/8512
- [ci] Chore: pin Windows e2e runners to windows-2022 by @etrepum in https://github.com/facebook/lexical/pull/8522
- [lexical-playground] Bug Fix: Fix unawaited playwright promises in e2e test suite by @etrepum in https://github.com/facebook/lexical/pull/8521
- [lexical-yjs] Chore: Fix RenderSnapshot comment typo by @LeSingh1 in https://github.com/facebook/lexical/pull/8527
- [lexical-rich-text] Bug Fix: Insert paragraph on Enter for a block DecoratorNode NodeSelection by @mayrang in https://github.com/facebook/lexical/pull/8526
- [Breaking Change][lexical][lexical-extension][lexical-rich-text][lexical-plain-text] Feature: Move triple click selection handling to NormalizeTripleClickSelectionExtension by @etrepum in https://github.com/facebook/lexical/pull/8520
- [lexical] Bug Fix: handle triple-click overselection in
$setBlocksTypeby @flavorjones in https://github.com/facebook/lexical/pull/8517 - [lexical-website] Bug Fix: Remove embed=1 from non-iframe StackBlitz links by @etrepum in https://github.com/facebook/lexical/pull/8531
- [lexical-markdown] Bug Fix: Fix Markdown import with Unicode whitespace by @rodrigolungui in https://github.com/facebook/lexical/pull/8535
- [lexical] Feature: ElementNode import/export support for data-lexical-indent by @etrepum in https://github.com/facebook/lexical/pull/8536
- [lexical-history] Feature: Add maxDepth option to HistoryExtension by @etrepum in https://github.com/facebook/lexical/pull/8537
- build(deps): bump serialize-javascript from 6.0.2 to 7.0.4 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8540
- [lexical-playground] Bug Fix: EquationNode click → NodeSelection + empty-input Backspace removes by @mayrang in https://github.com/facebook/lexical/pull/8534
- [lexical] Feature: Detect infinite recursion in update listeners by @mayrang in https://github.com/facebook/lexical/pull/8542
- [lexical-extension][lexical-html][lexical-utils][lexical] Chore: Migrate away from legacy flow syntax by @SamChou19815 in https://github.com/facebook/lexical/pull/8547
- [lexical-markdown] Chore: Cover bold italic markdown round trip by @rohan-patnaik in https://github.com/facebook/lexical/pull/8541
- [lexical] Bug Fix: Cache last-child kind for trailing-
reconcile by @mayrang in https://github.com/facebook/lexical/pull/8548 - [lexical-playground] Bug Fix: Normalize collapsible content children by @rohan-patnaik in https://github.com/facebook/lexical/pull/8539
- [lexical-extension][lexical-playground] Feature: Insert paragraph on click after the last block by @mayrang in https://github.com/facebook/lexical/pull/8549
- [lexical-code-prism][lexical-code-shiki][lexical-playground] Feature: Allow null Tokenizer.defaultLanguage to preserve markdown ``` round-trip by @mayrang in https://github.com/facebook/lexical/pull/8553
- [lexical][lexical-rich-text][lexical-code-core] Bug Fix: Cursor stuck before leading inline DecoratorNode by @mayrang in https://github.com/facebook/lexical/pull/8558
- [lexical] Bug Fix: Skip $reconcileChildren fast path during full reconcile by @etrepum in https://github.com/facebook/lexical/pull/8564
- [lexical-playground] Bug Fix: Build dev playground in development mode by @etrepum in https://github.com/facebook/lexical/pull/8565
- [Breaking Change][lexical][lexical-html][lexical-selection][lexical-utils][lexical-playground] Feature: Generalize DOMSlot and add DOMRenderExtension override surface by @mayrang in https://github.com/facebook/lexical/pull/8519
- [lexical-website] Bug Fix: Fix crash on /docs/error page from undefined process by @etrepum in https://github.com/facebook/lexical/pull/8557
- [lexical] Bug Fix: Correct children fast-path text size for cross-parent-moved elements by @etrepum in https://github.com/facebook/lexical/pull/8569
- [ci] Use playwright install-deps instead of apt-get by @etrepum in https://github.com/facebook/lexical/pull/8572
- [lexical-website] Feature: Server-rendered "Copy page" Markdown button by @etrepum in https://github.com/facebook/lexical/pull/8570
- [lexical-html] Feature: DOMImportExtension - replacement for importDOM by @etrepum in https://github.com/facebook/lexical/pull/8528
- [lexical-website] Documentation: Tuning HistoryExtension for long sessions by @etrepum in https://github.com/facebook/lexical/pull/8546
- [*] Refactor: Publish packages from their root directory by @etrepum in https://github.com/facebook/lexical/pull/8554
- fix: prevent MOVE_TO_END/MOVE_TO_START crash on decorator-only edits by @potatowagon in https://github.com/facebook/lexical/pull/8577
- [lexical-html][lexical-playground] Feature: Conditional DOM render overrides (disabledForEditor/disabledForSession) by @etrepum in https://github.com/facebook/lexical/pull/8575
- fix: restore Shift+Cmd+Arrow selection expansion for MOVE_TO_END/MOVE_TO_START by @potatowagon in https://github.com/facebook/lexical/pull/8581
- [ci][lexical] Bug Fix: Upgrade @playwright/test to ^1.60.0 by @etrepum in https://github.com/facebook/lexical/pull/8582
New Contributors
- @rhagigi made their first contribution in https://github.com/facebook/lexical/pull/8422
- @markselby9 made their first contribution in https://github.com/facebook/lexical/pull/8430
- @abhishekvishwakarma007 made their first contribution in https://github.com/facebook/lexical/pull/8428
- @nmggithub made their first contribution in https://github.com/facebook/lexical/pull/8417
- @danyalahmed1995 made their first contribution in https://github.com/facebook/lexical/pull/8487
- @kotom320 made their first contribution in https://github.com/facebook/lexical/pull/8475
- @duydang2311 made their first contribution in https://github.com/facebook/lexical/pull/8523
- @abhinavgautam01 made their first contribution in https://github.com/facebook/lexical/pull/8488
- @LeSingh1 made their first contribution in https://github.com/facebook/lexical/pull/8527
- @flavorjones made their first contribution in https://github.com/facebook/lexical/pull/8517
- @rodrigolungui made their first contribution in https://github.com/facebook/lexical/pull/8535
- @rohan-patnaik made their first contribution in https://github.com/facebook/lexical/pull/8541
Full Changelog: https://github.com/facebook/lexical/compare/v0.44.0...v0.45.0