Skip to content

npm(deps): bump @lexical/code from 0.49.0 to 0.52.0 - #464

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/lexical/code-0.52.0
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/lexical/code-0.52.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 26, 2026

Copy link
Copy Markdown
Contributor

Bumps @lexical/code from 0.49.0 to 0.52.0.

Release notes

Sourced from @​lexical/code's releases.

v0.52.0 is an ad-hoc release targeting a few fixes to mobile text input, but carries a number of other updates accumulated in the past week as we move towards Lexical 1.0. We did a pass to modernize the documentation focusing on the latest features. @lexical/mdast now uses one configurable MdastExtension for import and export, headless editors can be built entirely from extensions, and selection notifications have a consistent timing contract. There are also fixes for deletion, horizontal caret scrolling, drag-and-drop and mobile input.

Breaking Changes

  • lexical — SELECTION_CHANGE_COMMAND consistently runs before DOM reconciliation, inside the pending writable update. This includes automatic NodeSelection and TableSelection notifications that previously ran after reconciliation. $getSelection() returns the pending selection; $getPreviousSelection() returns the last committed selection. Eligible programmatic changes now notify without waiting for a native selectionchange event. Listener edits join the same commit, and handlers that change the selection must converge. A listener that throws can now abort the whole pending update, including the edit that triggered the notification, and listeners inherit that update's tags, so content edits made during a COLLABORATION_TAG or HISTORIC_TAG update are not synced to Yjs peers. Move DOM-dependent work such as element lookup, focus checks and floating UI positioning into $onUpdate(() => editor.read('latest', () => { /* ... */ })), reading selection and nodes inside that callback. Use registerUpdateListener for UI that must respond to every commit, including content-only changes (#9219, selection timing guide)
  • lexical / @lexical/html — Default HTML export now honors DOMRenderExtension $createDOM overrides. This affects nodes that inherit LexicalNode.exportDOM or call super.exportDOM(editor), including text and paragraphs. If an override was intended only for the live editor, review the HTML it now exports. Custom exportDOM implementations that create their own elements can still bypass this hook; $updateDOM and $decorateDOM remain reconciliation-only, and $exportDOM handles export-specific changes (#9231)
  • lexical — LexicalNode.getCommonAncestor is removed. Use $getCommonAncestor(a, b)?.commonAncestor ?? null. This is not quite a direct substitution: the removed method first replaced non-element arguments with their parents, while the function compares the supplied nodes and can return a text node when both arguments are that node. Pass the parents of non-element nodes if you need the old behavior, and use type guards instead of the old unchecked generic type argument (#9238)

Deprecations

  • @lexical/mdast — MdastImportExtension and MdastExportExtension are deprecated aliases of MdastExtension. Move configuration to MdastExtension and replace MdastImportExtensionOutput / MdastExportExtensionOutput with MdastExtensionOutput. The package is experimental, and these aliases are intended to remain for only one release (#9198)

New APIs & Features

  • @lexical/mdast — Unified Markdown configuration and inherited export rules. MdastExtension owns both import and export, and feature extensions include it automatically. Export rules accept a node class or type string and apply to subclasses, with more specific rules taking precedence. A TextNode rule can therefore handle tabs and custom text subclasses without separate registrations (#9198)
  • @lexical/mdast — Import/export middleware through context.next(). Delegate conversion of the same node to the remaining handlers, then return or modify their output. Export chains try remaining same-type rules before ancestor rules. Use context.next() to delegate: null retains its existing meaning of default export or omitted import, while [] omits content in either direction. Formatted text from middleware participates in text merging; custom structure or metadata is preserved as-is (#9198)
  • @lexical/headless — HeadlessExtension works with buildEditorFromExtensions for server-side processing and tests. It marks the editor as headless and prevents attaching a DOM root. Unlike createHeadlessEditor, it keeps listener registration methods available, so extensions that register root listeners can still be used (#9249)

Notable Fixes

Selection & editing

  • Backspace over all text in the first block preserves the empty block and its type (#9236); select-all deletion restores an editable paragraph when the root still contains slots such as footnotes (#9240); line deletion correctly resolves endpoints inside text-bearing inline decorators (#9247)
  • Dropping dragged text on the edge of its own selection no longer deletes it (#9241); persistent selection highlights retain coverage across mixed font sizes and partially overlapping rectangles (#9196)
  • Lexical-controlled caret moves reveal the caret horizontally in code blocks and other scrolling containers, including table wrappers. Horizontal scrolling respects scroll-padding, with updated playground styling to keep the caret clear of the code gutter (#9215)
  • Focus commands triggered during DOM selection synchronization no longer produce spurious read-only warnings; dispatching commands from an explicit read context still warns (#9230)

Mobile input & recovery

  • iOS tracks explicit Shift key events so Shift+Enter can insert a line break without treating automatic capitalization as Shift. Ordinary Enter continues to insert paragraphs; when capitalization has already highlighted Shift, it must be toggled off and on to request a line break (#9242)
  • The input-suppression workaround after handled Backspace or select-all is limited to macOS Chromium, preventing legitimate text input from being discarded on other platforms (#9251)
  • setEditorState with a childless root warns and recovers to an empty paragraph in production. Development builds still report the invalid state through onError (#9183)

Performance & signals

  • Writable nodes are cached during pending updates, reducing repeated node-map lookups (#9169)
  • @lexical/extension raises its @preact/signals-core dependency to ^1.14.4, fixing stale computed values after a batch changes a signal and restores its original value (#9248)

Playground & docs

  • Getting-started guides now use module-level root extensions, with five live editors, examples drawn directly from runnable source, and Open in StackBlitz buttons. Custom-feature examples demonstrate $config schemas, NodeState, and HTML import/export through extensions (#9237)
  • The introduction, Concepts and Serialization guides have been rewritten around current APIs, with Mermaid diagrams, an interactive update lifecycle explanation and a dedicated comparison with ProseMirror. Older setup and serialization APIs remain documented in Legacy sections (#9249)
  • Numerous API names, snippets and lifecycle descriptions have been corrected throughout the docs, most of them by @​potatowagon. API reference links now point to the right GitHub source paths and resolve external types (#9204, #9220)
  • Playground Find & Replace calculates offsets correctly across decorators and slots (#9186)

What's Changed

... (truncated)

Changelog

Sourced from @​lexical/code's changelog.

v0.52.0 (2026-09-27)

  • lexical Bug Fix Track explicit Shift state for iOS line breaks (#9242) Bob Ippolito
  • lexicallexical-headlesslexical-website Documentation Update Rewrite the introduction and modernize the Concepts, Serialization docs and examples (#9249) Bob Ippolito
  • lexical-extension Chore Update signals-core to 1.14.4 (#9248) Bob Ippolito
  • lexical-playground Chore Harden nested editor selection ownership test (#9243) Bob Ippolito
  • lexical Bug Fix Limit handled selection input suppression to macOS Chrome (#9251) Bob Ippolito
  • lexical Bug Fix resolve line deletion endpoints inside inline decorators (#9247) Maxim Gagiev
  • lexical-website Documentation Update Document ErrorBoundary configuration for PlainTextExtension (#9182) dvd233
  • lexical Bug Fix Handle select-all deletion with root slots (#9240) Bob Ippolito
  • lexical Breaking change Remove LexicalNode.getCommonAncestor (#9238) mayrang
  • lexical-clipboard Bug Fix Keep dragged text when it is dropped on the edge of its own selection (#9241) Alexandre Kohler
  • lexical-selectionlexical-utils Bug Fix Preserve selection coverage across mixed typography (#9196) Minwook Shin
  • lexical Bug Fix Preserve first block after backward range deletion (#9236) Abdul Azhar Jamesh
  • lexicallexical-code-corelexical-playground Bug Fix reveal the caret in code blocks and other containers that scroll sideways (#9215) om singhal
  • benchmarks Chore Migrate benchmarks to vitest 5 and add type checking in CI (#9235) Bob Ippolito
  • lexicallexical-tablelexical-playgroundlexical-website Breaking Change Standardize selection notification timing (#9219) Bob Ippolito
  • lexical-compiler Bug Fix Normalize temporary paths in watcher tests (#9195) Minwook Shin
  • lexical-website Documentation Update document the full update-listener payload and the cascade guard (#9227) Sherry
  • lexicallexical-html Breaking Change honor createDOM overrides in default DOM export (#9231) Bob Ippolito
  • lexical Bug Fix Avoid read-only warnings for commit-time focus commands (#9230) Bob Ippolito
  • lexical-website Bug Fix resolve external API links and shorten submodule labels (#9220) Bob Ippolito
  • lexical-website Documentation Update point the selection guide at NodeCaret (#9229) Sherry
  • lexical-website Documentation Update setEditorState warns and recovers in production, it does not always throw (#9228) Sherry
  • lexical-website Documentation Update correct five stale facts in the maintainers guide (#9226) Sherry
  • lexical-website Documentation Update fix the collaboration snippets and two stale playground references (#9225) Sherry
  • lexical-website Documentation Update correct DOMExportOutput, DOMConversion priority, and the HeadingNode examples (#9223) Sherry
  • lexical-website Documentation Update fix seven incorrect API references in the DOM import guide (#9222) Sherry
  • lexical-website Documentation Update fix two extension names that do not exist (#9210) Sherry
  • lexical-website Documentation Update add HMRExtension and KeyboardShortcutsExtension to the included list (#9213) Sherry
  • lexical-website Documentation Update call the system Lexical Extensions, not Lexical Builder (#9212) Sherry
  • lexical-website Documentation Update fix the broken snippets in the extensions migration guide (#9211) Sherry
  • lexical-website Documentation Update re-sync the TabIndentationExtension snippet with its source (#9209) Sherry
  • lexical-website Documentation Update correct four claims in the extension lifecycle guide (#9208) Sherry
  • lexical-website Documentation Update fix the test path in the traversals maintenance comment (#9207) Sherry
  • lexical-website Documentation Update correct the shadow-DOM support table and two API references (#9206) Sherry
  • lexical-website Documentation Update show initialEditorState, not a function passed to createEditor (#9205) Sherry
  • lexical-website Documentation Update fix two nodes.mdx snippets that do not compile (#9200) Sherry
  • lexical-mdast Feature Unify MdastExtension and inherit export rules (#9198) Bob Ippolito
  • lexical-code-corelexical-code-prismlexical-code-shiki Refactor move the duplicated updateCodeGutter into lexicalcode-core (#9164) om singhal
  • lexical-website Documentation Update fix syntax errors, outdated APIs, and broken links in Node Transforms guide (#9197) Jaideep krishna A
  • lexical-website Bug Fix Include packages in API docs GitHub source links (#9204) Bob Ippolito
  • lexical-website Documentation Update node-replacement config uses nodes, not nodes (#9203) Sherry
  • lexical-website Documentation Update clone is synthesized for config nodes, and fix a setSomeData typo (#9202) Sherry
  • lexical-website Documentation Update useReactDecorators, and the three missing TextNode formats (#9201) Sherry
  • lexical-website Documentation Update the deserialization hook is importJSON, not importFromJSON (#9199) Sherry
  • lexical-playground Bug Fix Fix Find Replace offsets across decorators and slots (#9186) Monier Ayman
  • lexical Bug Fix recover from an empty editor state instead of throwing (#9183) Sherry
  • lexical-website Documentation Update fix insertList argument in the commands guide (#9188) Sherry
  • lexical-website Documentation Update seed the editor state with setEditorState, not registerRichText (#9189) Sherry

... (truncated)

Commits
  • b2af316 v0.52.0
  • c9aea68 v0.51.0 (#9178)
  • a02c61b [lexical][*] Feature: node JSON serialization schemas, with compact export (#...
  • 7e3f5f5 [lexical-code] Breaking change: drop the deprecated prism re-exports and the ...
  • 737b3af [*] Breaking change: Publish ESM only to npm and keep the CommonJS build for ...
  • c3b629d v0.50.0 (#9110)
  • e60171a v0.49.0 (#8893)
  • See full diff 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/code](https://github.com/facebook/lexical/tree/HEAD/packages/lexical-code) from 0.49.0 to 0.52.0.
- [Release notes](https://github.com/facebook/lexical/releases)
- [Changelog](https://github.com/facebook/lexical/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/lexical/commits/v0.52.0/packages/lexical-code)

---
updated-dependencies:
- dependency-name: "@lexical/code"
  dependency-version: 0.52.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 Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies, npm. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@github-actions

Copy link
Copy Markdown
Contributor

📦 Extension Build Ready (Universal VSIX)!

Download the extension (works on all platforms):

Download datalayer-jupyter-vscode.vsix ⬇️

💡 This universal VSIX includes native binaries for all platforms (macOS Intel, macOS ARM, Windows, Linux) and works everywhere!

📥 View artifact in workflow run →


📖 Installation Instructions

Method 1: VS Code UI

  1. Download the .vsix file from the link above
  2. Open VS Code
  3. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  4. Click ... menu → "Install from VSIX..."
  5. Select the downloaded file

Method 2: Command Line

code --install-extension datalayer-jupyter-vscode-{version}.vsix

Method 3: Drag & Drop

  1. Download the .vsix file
  2. Drag it into the VS Code Extensions sidebar

✅ Universal build: This extension includes native modules (zeromq) with pre-built binaries for all platforms via @vscode/zeromq.

Build successful • Commit d6453d742c8dd8f7fe25669bebbad5dbd2d96618 • View workflow run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant