[Breaking Change][lexical] Feature: Generalize captured selection via setDOMUnmanaged({captureSelection}) + root _lexicalKey* stash (#8588)
An extensible text editor framework that provides excellent reliability, accessibility and performance.
Documentation | Getting Started | Playground | Gallery
npm install lexical @lexical/react
import { $getRoot, $getSelection } from 'lexical'; import { LexicalComposer } from '@lexical/react/LexicalComposer'; import { PlainTextPlugin } from '@lexical/react/LexicalPlainTextPlugin'; import { ContentEditable } from '@lexical/react/LexicalContentEditable'; import { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin'; import { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary'; const initialConfig = { namespace: 'MyEditor', onError: (error) => console.error(error), }; function Editor() { return ( <LexicalComposer initialConfig={initialConfig}> <PlainTextPlugin contentEditable={<ContentEditable />} ErrorBoundary={LexicalErrorBoundary} /> <HistoryPlugin /> </LexicalComposer> ); }
Try it yourself:
# Install dependencies pnpm install # Start playground dev server pnpm run start # Run tests pnpm run test-unit pnpm run test-e2e-chromium # Lint and type check pnpm run ci-check
See CONTRIBUTING.md for detailed development guidelines.
We welcome contributions! Please read our Contributing Guide to learn about our development process and how to propose bugfixes and improvements.
MIT License Copyright ©2026 Meta Platforms, Inc.
An extensible text editor framework that provides excellent reliability, accessibility and performance.
Documentation | Getting Started | Playground | Gallery
Features
Quick Start
Try it yourself:
Development
See CONTRIBUTING.md for detailed development guidelines.
Documentation
Community & Support
Browser Support
Contributors
We welcome contributions! Please read our Contributing Guide to learn about our development process and how to propose bugfixes and improvements.
License
MIT License Copyright ©2026 Meta Platforms, Inc.