v0.43.0
Expensify/Appv0.43.0Apr 9, 2026by etrepum
AI Summary
Monthly release featuring a new React hook for signal values, CSS theme options for Yjs collaboration cursors, and a refreshed lexical.dev website with modern examples. Includes one breaking change related to editor delegation.
Key Highlights
- New `useExtensionSignalValue` hook for reading signal values in React
- CSS theme options for Yjs collaboration cursor elements
- Refreshed lexical.dev website with modern examples
- Breaking change: Asynchronous parent editor delegation in nested editors
- Excluded Android WebView from IS_SAFARI browser detection
Breaking Changes
- Asynchronous parent editor delegation in @lexical/react nested editors
New Features
- New `useExtensionSignalValue` React hook
- Yjs collaboration cursor styling options
- Modern website examples (agent-example, website examples)
- Improved performance for large file diff rendering
- Enhanced markdown import with hard line break preservation
Full Release Notes
v0.43.0 is a monthly release with a minor breaking change, new features, and a number of bug fixes across selection, tables, markdown, and extensions. Notable highlights include a new `useExtensionSignalValue` hook, and CSS theme options for Yjs collaboration cursors. Outside of the release artifact, we've refreshed the [lexical.dev](https://lexical.dev) website thanks to @m-santanna (and inspired by design mockups from @ixahmedxi). Importantly this refresh includes a set of modern examples (`examples/website-*` and `examples/agent-example`) that are embedded on the front page and showcase current best practices. ## Breaking Changes ### Asynchronous parent editor delegation [#8308](https://github.com/facebook/lexical/pull/8308) `@lexical/react` nested editors now use asynchronous parent editor delegation when needed to match pre-0.42.0 legacy behavior. ## New APIs ### `@lexical/react` - `useExtensionSignalValue` [#8286](https://github.com/facebook/lexical/pull/8286) A new `@lexical/react/useExtensionSignalValue` module is available for reading signal values from extension output within React components ## Highlights Core: * ⚠️ #8308 Use asynchronous parent editor delegation when needed in nested editors * ✅ #8267 Exclude Android WebView from `IS_SAFARI` browser detection * ✅ #8273 Fix merging `TextNode`s when `__state` contains a different number of default values * ✅ #8266 Replace `$insertNodes` with `$insertNodeIntoLeaf` for consistent `DecoratorNode` behavior inside `MarkNode` Code: * ✅ #8254 Remove usage of `skipTransforms` in `CodeHighlighterPrism` and `CodeHighlighterShiki` Extension: * 🆕 #8286 Add `@lexical/react/useExtensionSignalValue` module for reading signals from React Examples: * 🆕 #8281 Add a new agent example using a local LLM (Transformers.js / in-browser) * 🆕 #8258 Add additional website examples Headless: * ✅ #8274 Use `window.happyDOM.close()` to ensure proper cleanup Link: * ✅ #8309 Preserve cursor position when merging adjacent identical links Markdown: * ✅ #8265 Preserve hard line breaks during import when newlines are preserved Playground: * ✅ #8260 Use `isExactShortcutMatch` for Dvorak keyboard compatibility Selection: * ✅ #8261 Make `$getSelectionStyleValueForProperty` direction-independent Table: * ✅ #8259 Infer column header state from position during DOM import Utils: * ✅ #8276 Fix `$insertNodeIntoLeaf` edge case; update `@preact/signals-core`, hermes, and flow dependencies Yjs: * 🆕 #8271 Add CSS classes to collaboration cursor elements Infrastructure: * 🧹 #8287 Upgrade ESLint 8 → ESLint 10 with flat configuration * 🧹 #8307 Upgrade Vite to `^7.3.2` * 🧹 #8248 Update GitHub CI workflows and run with Node 24 * 🧹 #8253 Update `flow-bin` to 0.306.0 and add incompatible-variance workaround * 🧹 #8277 #8315 Bump Flow and replace legacy Flow syntax with modern equivalents * 🧹 #8243 Update unit tests with extensions to use explicit resource management (`using`) ## What's Changed * v0.42.0 by @etrepum in https://github.com/facebook/lexical/pull/8245 * build(deps): bump next from 15.5.11 to 15.5.14 in /scripts/__tests__/integration/fixtures/lexical-esm-nextjs by @dependabot[bot] in https://github.com/facebook/lexical/pull/8242 * [examples] Chore: Update examples for v0.42.0 by @etrepum in https://github.com/facebook/lexical/pull/8246 * [*] Chore: Update unit tests with extensions to use explicit resource management (using) by @etrepum in https://github.com/facebook/lexical/pull/8243 * [*] Chore: Github CI workflows action updates and run with node 24 by @etrepum in https://github.com/facebook/lexical/pull/8248 * [*] Chore: Update flow-bin to 0.306.0 and add incompatible-variance workaround by @etrepum in https://github.com/facebook/lexical/pull/8253 * [lexical-code-prism][lexical-code-shiki] Bug Fix: Remove usage of skipTransforms in CodeHighlighterPrism and CodeHighlighterShiki by @etrepum in https://github.com/facebook/lexical/pull/8254 * build(deps): bump astro from 5.18.0 to 5.18.1 in /scripts/__tests__/integration/fixtures/lexical-esm-astro-react by @dependabot[bot] in https://github.com/facebook/lexical/pull/8262 * [lexical-selection] Bug Fix: Make $getSelectionStyleValueForProperty direction-independent by @Sathvik-Chowdary-Veerapaneni in https://github.com/facebook/lexical/pull/8261 * [lexical-table] Bug Fix: Infer column header state from position during DOM import by @Sathvik-Chowdary-Veerapaneni in https://github.com/facebook/lexical/pull/8259 * build(deps): bump happy-dom from 20.0.11 to 20.8.8 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8264 * [lexical-playground] Bug Fix: Use isExactShortcutMatch for Dvorak keyboard compatibility by @Sathvik-Chowdary-Veerapaneni in https://github.com/facebook/lexical/pull/8260 * [lexical] Fix: exclude Android WebView from IS_SAFARI browser detection by @kzroo in https://github.com/facebook/lexical/pull/8267 * [examples] Feature: Added examples (for the website) by @m-santanna in https://github.com/facebook/lexical/pull/8258 * [lexical] Fix : Replaced the function $insertNodes with $insertNodeIntoLeaf for consistent behavior of Decorator Node within MarkNode by @Jynx2004 in https://github.com/facebook/lexical/pull/8266 * build(deps): bump happy-dom from 20.8.8 to 20.8.9 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8269 * [lexical-website] Feature: ui improvement in the homepage of lexical.dev by @m-santanna in https://github.com/facebook/lexical/pull/8216 * [lexical] Fix: merge TextNodes when __state contains different number of default values by @james-atticus in https://github.com/facebook/lexical/pull/8273 * [lexical-headless] Bug Fix: Use window.happyDOM.close() to ensure proper cleanup by @etrepum in https://github.com/facebook/lexical/pull/8274 * Bump flow and replace legacy flow syntax with modern ones by @SamChou19815 in https://github.com/facebook/lexical/pull/8277 * [lexical-markdown] Bug Fix: Preserve markdown hard line breaks during import when newlines are preserved by @joshjryan in https://github.com/facebook/lexical/pull/8265 * [lexical-website] Chore: community page updates by @etrepum in https://github.com/facebook/lexical/pull/8270 * [lexical-utils][lexical-extension][*] Bug Fix: Fix $insertNodeIntoLeaf edge case and update @preact/signals-core, hermes, and flow related dependencies by @etrepum in https://github.com/facebook/lexical/pull/8276 * build(deps): bump lodash-es from 4.17.22 to 4.18.1 by @dependabot[bot] in https://github.com/facebook/lexical/pull/8279 * [lexical-yjs] Feature: Add CSS classes to collaboration cursor elements by @m-brtn in https://github.com/facebook/lexical/pull/8271 * [example] Feature: Add a new agent-example using a local LLM by @etrepum in https://github.com/facebook/lexical/pull/8281 * [lexical-react] Feature: Add @lexical/react/useExtensionSignalValue module for reading signals by @etrepum in https://github.com/facebook/lexical/pull/8286 * [lexical-website] Documentation Update: clarify Yjs custom node property syncing by @Vedthakar in https://github.com/facebook/lexical/pull/8288 * [lexical] Chore: Upgrade ESLint 8 to ESLint 10 with flat configuration by @etrepum in https://github.com/facebook/lexical/pull/8287 * [*] Chore: Upgrade vite to ^7.3.2 by @etrepum in https://github.com/facebook/lexical/pull/8307 * [Breaking Change][lexical] Bug Fix: Use asynchronous parent editor delegation when needed by @etrepum in https://github.com/facebook/lexical/pull/8308 * [lexical-link] Bug Fix: Preserve cursor position when merging adjacent identical links by @Sathvik-Chowdary-Veerapaneni in https://github.com/facebook/lexical/pull/8309 * [*] Fix: Replace legacy Flow syntax with modern equivalents in .flow … by @potatowagon in https://github.com/facebook/lexical/pull/8315 ## New Contributors * @Sathvik-Chowdary-Veerapaneni made their first contribution in https://github.com/facebook/lexical/pull/8261 * @kzroo made their first contribution in https://github.com/facebook/lexical/pull/8267 * @joshjryan made their first contribution in https://github.com/facebook/lexical/pull/8265 * @m-brtn made their first contribution in https://github.com/facebook/lexical/pull/8271 * @Vedthakar made their first contribution in https://github.com/facebook/lexical/pull/8288 **Full Changelog**: https://github.com/facebook/lexical/compare/v0.42.0...v0.43.0