Skip to content

Build(deps): Bump lexical from 0.52.0 to 0.53.0 in /catalog/ui - #3984

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/catalog/ui/lexical-0.53.0
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/catalog/ui/lexical-0.53.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 13, 2026

Copy link
Copy Markdown
Contributor

Bumps lexical from 0.52.0 to 0.53.0.

Release notes

Sourced from lexical's releases.

v0.53.0 is the monthly release and collects a month of work since v0.52.0. It removes the extensions deprecated as of v0.52.0 and the unchecked node type arguments, starts a curated CHANGELOG.md with migration notes, and adds several opt-in, experimental building blocks for structured documents and collaboration: declarative node structure in $config, stable block ids, set-valued NodeState with a wrapper-free MarkStateExtension, and GFM tables in @lexical/mdast. Fixes cover IME composition, spellcheck, inline decorators, iOS taps and drops, tables, Markdown, and the ordering of commit listeners that collaboration depends on.

Breaking Changes

  • All packages: extensions deprecated as of v0.52.0 are removed (#9316). Migrate as follows:
    • CodeImportExtension (@lexical/code-core): use CodeExtension
    • CodeHighlighterShikiExtension, CodeHighlighterShikiConfig (@lexical/code-shiki): use CodeShikiExtension with {tokenizer}
    • HorizontalRuleImportExtension (@lexical/html): use HorizontalRuleExtension plus any extension that brings in CoreImportExtension
    • LinkImportExtension, ListImportExtension, RichTextImportExtension, TableImportExtension: use LinkExtension, ListExtension, RichTextExtension, TableExtension
    • MdastImportExtension, MdastExportExtension and their *Output types (@lexical/mdast): use MdastExtension and MdastExtensionOutput
    • The *ImportRules arrays are not extensions and remain.
  • @lexical/mdast (experimental): table column alignment is no longer stored in the mdastTableAlign NodeState. Alignment is now the element format of the paragraph in each cell, so editor states serialized with the old state lose their column alignment on load (#9478)
  • lexical: The deprecated unchecked type arguments on node traversal and key lookup are removed from TypeScript and Flow: getParent<T>(), getParentOrThrow<T>(), getChildren<T>(), getFirstChild<T>(), getNextSibling<T>(), $getNodeByKey<T>() and the rest of that family. Runtime behavior is unchanged. Remove the type argument and narrow the result with a node guard such as $isListItemNode (#9479)
  • lexical: ElementNode.reconcileObservedMutation (@internal) restores the DOM of the element's committed children from the latest reconciled state, not the children of the update it is called in. Code that called it inside an update to render that update's children must place those children's DOM itself (#9329)

New APIs & Features

  • lexical / @lexical/extension (experimental): Declarative node structure in $config. New optional keys inline, children, mergeAdjacent, and a derived flag on fields and states describe what an element may hold and when adjacent siblings are the same thing, so importers, serializers and storage layers can read rules that used to live only in transforms. getDeclaredNodeStructure(klass) reads them, and the opt-in NodeStructureExtension enforces them (#9452)
  • @lexical/extension / @lexical/html (experimental): Stable block ids. BlockIdExtension gives blocks an id that survives serialization, reloads, undo/redo, the clipboard and collaboration, stored as NodeState ("$": {"blockId": "…"}), so agents and server pipelines can address blocks directly. BlockIdHTMLExtension, imported from @lexical/html/BlockIdHTMLExtension, carries the ids through HTML (#9421, #9474)
  • lexical / @lexical/mark (experimental): Set-valued NodeState and MarkStateExtension. arraySetValue(item) declares a state whose value is a canonical (sorted, deduplicated, frozen) set of strings. MarkStateExtension uses it to store mark ids on the leaves they cover instead of in MarkNode wrappers, so overlapping comments need no tree restructuring and ids travel with the text (#9380)
  • @lexical/mdast (experimental): GFM tables. MdastTableExtension imports tables the way GFM renders them and exports any table as a GFM table, using <br> for multi-block cells and padding merged or ragged cells (#9478)
  • @lexical/clipboard: Clipboard import middleware can replace the data and selection for the remaining handlers with $next(data?, selection?), the equivalent of ProseMirror's transformPastedHTML, so off-the-shelf HTML cleanup can be plugged in (#9312)
  • @lexical/link: ClickableLinkExtension accepts getWindow(editor), so iframe editors can navigate in their own window or leave the click unhandled (#9360)
  • @lexical/react: LexicalAutoEmbedPlugin accepts $disableMenuFor to suppress the embed menu where a block embed does not belong, such as inline-only slots (#9365)
  • Changelog with migration notes: CHANGELOG.md is now built from changesets, with Breaking changes (each with Migration: and Detect:), Behavior changes, Deprecations and the full commit list for every release, and it ships in the lexical package at node_modules/lexical/CHANGELOG.md for people and tools upgrading across versions (#9357)
  • Continuous builds: every PR and main commit is published to pkg.pr.new, so a fix can be tried before the next release with npm i https://pkg.pr.new/lexical@main (npm only; see the PR for pnpm and yarn) (#9385, #9387, #9394)

Notable Fixes

Security

  • Links opened in a new tab by registerClickableLink / ClickableLinkPlugin no longer get window.opener, closing a reverse-tabnabbing path (#9303)
  • Markdown export escapes literal brackets and significant < and &, so literal text no longer turns into HTML, character references or links when the Markdown is parsed again. Import decodes escapes and character references in a single pass (#9481)

Input, composition & spellcheck

  • Composing into a TextNode subclass with an IME or a dead key no longer replaces it with a plain TextNode, so it keeps its type, key and NodeState (#9291); cancelled macOS Pinyin compositions in desktop WebKit finish, so the next Enter works (#9362)
  • Chromium keeps spellcheck underlines when Lexical rewrites a text node (#9354); Markdown shortcuts work in iframe editors (#9352); selectionchange events from unfocused inputs and textareas no longer clear pending formatting (#9477); copy, cut and paste inside a decorator's own input are left to that input (#9288)

Selection & editing

  • Mouse drags select across inline decorators such as images, equations and mentions (#9329); line deletion keeps the line break before a line starting with an inline decorator and preserves decorators across soft wraps (#9301, #9321)
  • Selected text and formatting are preserved at range boundaries, and $patchStyleText now styles the selection it is given (#9261); caret mutations, endpoint repair and cross-parent moves no longer corrupt sibling links, throw, or misorder the DOM (#9262, #9263, #9302)
  • Selections and deletions stay inside slot boundaries (#9373); root text content stays correct after repeated slot edits and for custom getTextContent() overrides (#9283, #9260)
  • Enter splits a heading correctly after a line break or inline decorator (#9295); removing a list keeps a caret that sits after an inline decorator (#9300); HISTORY_PUSH_TAG always pushes its own undo entry (#9218); setting a NodeState key still held in unknownState no longer leaves the stale JSON value behind (#9468)

iOS

  • Tapping a decorator no longer scrolls the page to the top of the editor (#9325); double-tapping an empty table cell stays in the cell (#9267); native text-file drops insert their text (#9320)

... (truncated)

Changelog

Sourced from lexical's changelog.

v0.53.0 (2026-10-28)

Breaking changes

  • lexical, @​lexical/clipboard, @​lexical/selection, @​lexical/table: Let mouse drags select across inline decorators; ElementNode.reconcileObservedMutation restores the committed children's DOM (#9329)

    A drag over an inline decorator (an image, equation or mention) now moves the selection past it, and clicks beside such a decorator at a line break land on the right line.

    Migration: ElementNode.reconcileObservedMutation (@internal) puts back the DOM of the element's committed children, from the latest reconciled state, rather than the children of the update it is called in. Code that calls it inside an update to render that update's children must place those children's DOM itself, for example from editor.getElementByKey().

    Detect: calls to reconcileObservedMutation.

    Codemod: none.

  • @​lexical/mdast: MdastTableExtension reads and writes GFM tables, and stores column alignment as the cell paragraphs' format instead of the mdastTableAlign NodeState (#9478)

    Import pads or truncates body rows to the header row's cell count, reads \| and raw <br> in cells, and turns column alignment into the element format of each cell's paragraph. Export writes any table as a GFM table: multi-block cells as lines joined by <br>, merged and ragged cells padded, blocks with no inline form after the table, and pipes escaped.

    Migration: read and set column alignment through the element format of the paragraphs in the column's cells instead of the mdastTableAlign NodeState. Editor states serialized with mdastTableAlign lose their column alignment on load; re-import them from Markdown to recover it.

    Detect: uses of mdastTableAlign, or stored editor state JSON containing mdastTableAlign.

    Codemod: none.

  • @​lexical/code-core, @​lexical/code-shiki, @​lexical/html, @​lexical/link, @​lexical/list, @​lexical/mdast, @​lexical/rich-text, @​lexical/table: Remove the extensions deprecated in v0.52.0 and earlier (#9316)

    The deprecated import and alias extensions are removed. The *ImportRules arrays, including HorizontalRuleImportRules, stay.

    Migration: replace each removed export with its successor.

    Removed Use instead
    CodeImportExtension (@lexical/code-core) CodeExtension
    CodeHighlighterShikiExtension, CodeHighlighterShikiConfig (@lexical/code-shiki) CodeShikiExtension with {tokenizer}
    HorizontalRuleImportExtension (@lexical/html) HorizontalRuleExtension plus an extension that brings in CoreImportExtension
    LinkImportExtension (@lexical/link) LinkExtension
    ListImportExtension (@lexical/list) ListExtension
    RichTextImportExtension (@lexical/rich-text) RichTextExtension
    TableImportExtension (@lexical/table) TableExtension
    MdastImportExtension, MdastExportExtension (@lexical/mdast) MdastExtension
    MdastImportExtensionOutput, MdastExportExtensionOutput (@lexical/mdast) MdastExtensionOutput

    Detect: imports of any name in the table above.

    Codemod: none; each is a rename of an import and its use.

  • lexical: Remove the deprecated unchecked type arguments from node traversal and key lookup (#9479)

    The generic overloads that let callers claim an arbitrary node subclass without checking it are removed from TypeScript and Flow. The methods themselves and their runtime behavior are unchanged, and safe generics whose inputs establish the result type remain.

... (truncated)

Commits
  • 0985b7a v0.53.0
  • dca29f2 [lexical][lexical-website] Chore: Changesets-based CHANGELOG with migration n...
  • 8a573d1 [lexical] Breaking Change: Remove deprecated unchecked node type arguments (#...
  • e7baf73 [lexical-plain-text][lexical-rich-text] Bug Fix: Leave a copy, cut or paste i...
  • f477e2d [lexical] Bug Fix: Setting a NodeState key that is still in unknownState no l...
  • 6588f38 [lexical] Bug Fix: Ignore text-control selectionchange events (#9477)
  • 1928e6f [lexical][lexical-compiler][lexical-fast-check][lexical-mark][lexical-website...
  • 4a7b21c [lexical][lexical-code-core][lexical-devtools][lexical-extension][lexical-lin...
  • 2574fa8 [lexical] Bug Fix: Finish cancelled desktop WebKit compositions (#9362)
  • 468d6a9 [lexical][lexical-rich-text][lexical-playground] Bug Fix: Keep selections and...
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [lexical](https://github.com/facebook/lexical/tree/HEAD/packages/lexical) from 0.52.0 to 0.53.0.
- [Release notes](https://github.com/facebook/lexical/releases)
- [Changelog](https://github.com/meta/lexical/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/lexical/commits/v0.53.0/packages/lexical)

---
updated-dependencies:
- dependency-name: lexical
  dependency-version: 0.53.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/catalog/ui/lexical-0.53.0 branch November 13, 2026 09:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant