Sourced from @lexical/link's releases.
v0.48.0 is a maintenance release focused on bug fixes across Markdown, tables, lists, links, and selection. It's headlined by a fix for a v0.46.0 regression that broke native text drag-and-drop (#8842) and a couple of notable security hardening fixes. It also adds a handful of new features, including an
MdastHtmlExtensionwith examples for authoring custom Markdown constructs (collapsibles,kbd, alerts, footnotes), a customizable Yjs shared-type root name for collaborative editing, and new table row manipulation helpers.New APIs & Features
@lexical/table— Added$moveTableRowfor reordering table rows, plus the previously missing$unmergeCellNodeexport (#8833)@lexical/yjs/@lexical/react— The Yjs shared-type root name is now customizable, so Lexical can share a Yjs document with other content that uses a different root key (#8841)@lexical/extension/@lexical/mdast— AddedMdastHtmlExtensionand Markdown custom-construct examples (collapsible sections,kbd, alerts, footnotes) demonstrating how to extend the Markdown ↔ mdast pipeline. See the Markdown & mdast serialization guide (#8826)Notable Fixes
Drag & drop (fix for v0.46.0 regression)
- Don't cancel
dragoverfor text drags, so native drops work again (#8842)Security
LinkNode.sanitizeUrl()now fails closed on unparseable URLs, preventing a potential XSS vector (#8846)- Fixed a
serialize-javascriptdependency vulnerability (#8803)Markdown & code
- Roundtrip overlapping inline formats correctly through mdast/Markdown (#8825)
- Force re-tokenization after an async language load so highlighting appears once the grammar is ready (#8830)
Tables
- Auto-scroll while drag-selecting cells past the visible edge (#8822)
- Enable table copy in read-only mode (#8845)
Lists & character limit
- Backspace at the start of a list item now outdents or converts to a paragraph (#8829)
- Merge adjacent
OverflowNodes inuseCharacterLimit(#8831)- Count block separators when wrapping character-limit overflow (#8840)
Links & selection
- Disable link opening for disabled autolinks (#8839)
- Skip
scrollIntoViewIfNeededwhen the selection rect is above the editor, fixing a Safari RTL caret jump (#8848)What's Changed
- [lexical-mdast][lexical-markdown] Bug Fix: Roundtrip overlapping inline formats by
@etrepumin facebook/lexical#8825- [lexical-table][lexical-playground] Bug Fix: Auto-scroll while drag-selecting cells past the visible edge by
@JohnJuniorin facebook/lexical#8822- [lexical-code-shiki] Bug Fix: force re-tokenize after async language load by
@ochevallierin facebook/lexical#8830- [lexical-react] Bug Fix: Merge adjacent OverflowNodes in useCharacterLimit by
@mayrangin facebook/lexical#8831- Open playground links in a new tab by
@potatowagonin facebook/lexical#8837- [lexical-rich-text][lexical-plain-text] Bug Fix: don't cancel dragover for text drags so native drops work again by
@etrepumin facebook/lexical#8842- [lexical-link] Bug Fix: disable link opening for disabled autolink in… by
@ochevallierin facebook/lexical#8839- [lexical-table] Feature: Add $moveTableRow function & Add missing export for $unmergeCellNode by
@hamo-oin facebook/lexical#8833- [lexical-list] Bug Fix: Backspace at start of list item outdents or converts to paragraph by
@mayrangin facebook/lexical#8829
... (truncated)
Sourced from @lexical/link's changelog.
v0.48.0 (2026-07-16)
- lexical-reactlexical-table Bug Fix Enable table copy in read-only mode (#8845) mayrang
- lexical-extensionlexical-mdastdev-mdast-editor-example Feature Add MdastHtmlExtension and Markdown custom-construct examples (collapsible, kbd, alerts, footnotes) (#8826) Bob Ippolito
- Fix fail closed in LinkNode.sanitizeUrl() on unparseable URLs (XSS) (#8846) xiezhenjia-meta
- lexical Chore Fix serialize-javascript package dependency vulnerability (#8803) vijay ojha
- lexical-react Bug Fix Count block separators in character limit overflow wrapping (#8840) mayrang
- lexical-yjslexical-react Feature Customizable Yjs shared-type root name (#8841) mayrang
- lexical-list Bug Fix Backspace at start of list item outdents or converts to paragraph (#8829) mayrang
- lexical-table Feature Add moveTableRow function Add missing export for unmergeCellNode (#8833)
- lexical-link Bug Fix disable link opening for disabled autolink in (#8839) Olivier Chevallier
- lexical-rich-textlexical-plain-text Bug Fix dont cancel dragover for text drags so native drops work again (#8842) Bob Ippolito
- Open playground links in a new tab (#8837) Sherry
- lexical-react Bug Fix Merge adjacent OverflowNodes in useCharacterLimit (#8831) mayrang
- lexical-code-shiki Bug Fix force re-tokenize after async language load (#8830) Olivier Chevallier
- lexical-tablelexical-playground Bug Fix Auto-scroll while drag-selecting cells past the visible edge (#8822) Oleksandr Trukhnii
- lexical-mdastlexical-markdown Bug Fix Roundtrip overlapping inline formats (#8825) Bob Ippolito
- v0.47.0 (#8821) Bob Ippolito
- v0.47.0 Lexical GitHub Actions Bot
v0.47.0 (2026-07-10)
- lexicallexical-rich-text Bug Fix Fix formatText toggle direction and add SETTEXTFORMATCOMMAND (#8807) mayrang
- scripts Bug Fix Let npm prompt for OTP when publishing bootstrap stubs (#8820) Bob Ippolito
- lexical-playground Bug Fix Clear inline font-size when converting to heading (#8800) mayrang
- lexical-tablelexical-playground Feature setTableRowIsHeader and setTableColumnIsHeader utilities (#8815) mayrang
- lexical-website Documentation Update Rewrite testing guide (#8811) mayrang
- lexical-mdastlexical-rich-text Feature lexicalmdast, a micromarkmdast-based alternative to lexicalmarkdown (#8794) Bob Ippolito
- Make dependency-check resilient to transient registry errors (#8818) Gerard Rovira
- lexical Refactor Move event module globals into per-editor InputState (#8809) mayrang
- lexical Bug Fix getDocument() should fall back to the global document when there is no active editor (#8813) Sherry
- lexical-playground Bug Fix Keep cell background color modal open on first click (#8806) sahir
- lexical-playground Bug Fix Use consistent default maxWidth for markdown-imported images (#8810) mayrang
- lexical-devtoolslexical-playground Chore Update flow, hermes, and babel packages to latest (#8795) Bob Ippolito
- Add a 7-day pnpm minimumReleaseAge to match the Dependabot cooldown (#8808) Gerard Rovira
- lexical Chore Fix tmp package dependency vulnerability (#8802) vijay ojha
- lexical Chore Add missing Flow type declarations (#8799) mayrang
- lexical-markdown Feature Add generateNodesFromMarkdownString (#8789) mayrang
- lexicallexical-playground Chore Refactor IME composition test infrastructure and add browser-level coverage (#8793) mayrang
- lexical-playground Bug Fix Use viewBox dimensions for unsized Excalidraw output (#8798) mayrang
- lexical-table Bug Fix Export insertTableRowAtNode and insertTableColumnAtNode (#8791)
- lexical-playgroundlexical-website Feature Add Vercel Analytics and Speed Insights (#8796) Gerard Rovira
- lexicallexical-eslint-plugin Feature Add getDocument() API and Shadow DOM lint enforcement (#8788) mayrang
- scripts Bug Fix strip misplaced pure annotations from prod builds (#8786) Bob Ippolito
- lexical Bug Fix deleteCharacter overwrites X11 PRIMARY selection via Selection.modify (#8774) Bob Ippolito
- lexical-playground Bug Fix Support Unicode URLs in autolink matcher (#8787) mayrang
- lexical-table Feature Spread pasted TSV text across table cells (#8780) mayrang
- Breaking Changelexical Bug Fix Preserve DOM element when composing on segmented TextNode middle (#8784) mayrang
- Breaking Changelexical-reactlexical-devtools-core Chore Drop React 17 support, baseline is now React 18 (#8782) Bob Ippolito
- lexical-playgroundlexical Feature Ruby annotation node with floating editor (#8741) mayrang
... (truncated)
284b749
v0.48.0365516c
Fix: fail closed in LinkNode.sanitizeUrl() on unparseable URLs (XSS) (#8846)7156232
[lexical-link] Bug Fix: disable link opening for disabled autolink in…
(#8839)e4b7cc3
v0.47.0 (#8821)a7666ab
[*][lexical-devtools][lexical-playground] Chore: Update flow, hermes,
and bab...e649ab2
[lexical][lexical-eslint-plugin] Feature: Add $getDocument() API and
Shadow D...7b76175
[lexical-playground] Bug Fix: Support Unicode URLs in autolink matcher
(#8787)62a4b30
[lexical][*] Feature: registerEventListener / registerEventListeners DOM
help...d04ea9e
[lexical-a11y][lexical-react][lexical-playground][lexical-website]
Feature: @...51d47b7
[lexical] Bug Fix: Clean up trailing shadow root after select-all delete
(#8751)