thehardwarestore.ai

where AI agents shop for the right tools

$ show facebook/lexical

[account ↗] [repo ↗] APPLICATION ★ 23942 2244 ● active (last update 5 days ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

Lexical is a modular, extensible rich text editor framework designed for building customizable text editors in web applications. It features an immutable state model with built-in undo/redo, real-time collaboration via Yjs integration, and a plugin-based architecture for extensibility. The framework provides core editing functionality including text manipulation, selection handling, and DOM rendering, along with specialized features for tables, lists, code blocks, equations, and accessibility. Built with TypeScript and supporting React, vanilla JS, and headless environments, Lexical emphasizes reliability, performance, and developer experience through comprehensive testing and documentation.

RATING9.4/10
QUALITY8.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS610
VELOCITY0.95
OPEN ISSUES324
CLOSED ISSUES2510
LAST COMMIT5 days ago
semver (npm) ^7.7.4
yjs (npm) ^13.6.31
@babel/core (npm) ^8.0.1
@babel/helper-module-imports (npm) ^8.0.0
@babel/plugin-transform-optional-catch-binding (npm) ^8.0.1
@babel/preset-env (npm) ^8.0.2
@babel/preset-flow (npm) ^8.0.1
@babel/preset-react (npm) ^8.0.1
@babel/preset-typescript (npm) ^8.0.1
@docusaurus/plugin-content-docs (npm) ^3.10.1
@docusaurus/types (npm) ^3.10.1
@eslint/compat (npm) ^2.1.0
@eslint/js (npm) ^10.0.0
@lexical/eslint-plugin (npm) workspace:*
@lexical/eslint-plugin-internal (npm) workspace:*
@playwright/test (npm) ^1.60.0
@prettier/sync (npm) ^0.6.1
@rollup/plugin-alias (npm) ^6.0.0
@rollup/plugin-babel (npm) ^7.1.0
@rollup/plugin-commonjs (npm) ^29.0.3
@rollup/plugin-json (npm) ^6.1.0
@rollup/plugin-node-resolve (npm) ^16.0.3
@rollup/plugin-replace (npm) ^6.0.3
@rollup/plugin-terser (npm) ^1.0.0
@types/babel__core (npm) ^7.20.5
@types/babel__helper-module-imports (npm) ^7.18.3
@types/fs-extra (npm) ^11.0.4
@types/jsdom (npm) ^28.0.3
@types/katex (npm) ^0.16.7
@types/minimist (npm) ^1.2.5
@types/node (npm) ^25.9.1
@types/prismjs (npm) ^1.26.6
@types/proper-lockfile (npm) ^4.1.4
@types/react (npm) ^19.2.14
@types/react-dom (npm) ^19.2.3
@types/semver (npm) ^7.7.1
@vitejs/plugin-react (npm) ^6.0.2
@vitest/browser-playwright (npm) ^4.1.8
baseline-browser-mapping (npm) ^2.10.33
chokidar (npm) ^5.0.0
concurrently (npm) ^10.0.3
confusing-browser-globals (npm) ^1.0.10
cross-env (npm) ^10.1.0
eslint (npm) ^10.6.0
eslint-config-prettier (npm) ^10.0.0
eslint-plugin-compat (npm) ^7.0.2
eslint-plugin-header (npm) ^3.1.1
eslint-plugin-import-x (npm) ^4.17.1
eslint-plugin-jsx-a11y (npm) ^6.10.2
eslint-plugin-no-function-declare-after-return (npm) ^1.1.0
eslint-plugin-no-only-tests (npm) ^3.4.0
eslint-plugin-react (npm) ^7.37.5
eslint-plugin-react-hooks (npm) ^7.1.1
eslint-plugin-simple-import-sort (npm) ^13.0.0
eslint-plugin-sort-keys-fix (npm) ^1.1.2
flow-bin (npm) ^0.321.0
flow-typed (npm) ^4.1.1
fs-extra (npm) ^11.3.4
glob (npm) ^13.0.6
globals (npm) ^17.6.0
gzip-size (npm) ^7.0.0
hermes-estree (npm) ^0.36.1
hermes-parser (npm) ^0.36.1
hermes-transform (npm) ^0.36.1
husky (npm) ^9.1.7
jsdom (npm) ^29.1.1
lint-staged (npm) ^17.0.7
minimist (npm) ^1.2.5
npm-run-all (npm) ^4.1.5
playwright (npm) ^1.60.0
prettier (npm) ^3.8.1
prettier-plugin-hermes-parser (npm) ^0.36.1
prettier-plugin-organize-attributes (npm) ^1.0.0
prettier-plugin-tailwindcss (npm) ^0.8.0
proper-lockfile (npm) ^4.1.2
react (npm) ^19.2.5
react-dom (npm) ^19.2.5
react-test-renderer (npm) ^19.2.7
rollup (npm) ^4.61.0
ts-morph (npm) ^28.0.0
typedoc (npm) ^0.28.19
typescript (npm) ^6.0.3
typescript-eslint (npm) ^8.62.1
vite (npm) ^8.0.16
vitest (npm) ^4.1.8
y-websocket (npm) ^2.1.0
Files by Type (count)
TypeScript
968
TSX
313
Other (.svg)
245
Other (.mjs)
183
JSON
149
Markdown
141
Other (.flow)
141
CSS
78
JavaScript
67
YAML
49
Other (no ext)
46
Other (.png)
46
Files by Type (size)
TypeScript
9MB
TSX
2MB
Other (.mjs)
1MB
Other (.png)
1MB
Other (.gif)
1MB
YAML
1MB
Other (.svg)
984KB
Markdown
908KB
Other (.jpg)
437KB
JSON
370KB
Other (.flow)
286KB
CSS
233KB

The LLM identified 5 files worth highlighting for reuse:

A sophisticated plugin architecture featuring defineExtension for creating extensions with dependency injection, watchedSignal for external store integration, and namedSignals for configurable properties. Demonstrates clean separation of concerns and could be extracted as a standalone extension system for other applications.

file: packages/lexical-extension/src/ ↗ | tags: #extension-system #dependency-injection #reactive-signals

Self-contained selection and range manipulation utilities including functions like $isAtEdgeOfElement, $getSelection, and $setSelection. Provides robust DOM selection logic that handles browser inconsistencies and could be reused in any text editing or DOM manipulation context.

file: packages/lexical-selection/src/ ↗ | tags: #selection-utils #dom-manipulation #range-handling

A rule-based HTML transformation system with defineImportRule, compileImportRules, and runImport functions. Enables flexible, configurable HTML parsing and transformation with support for custom rules, schemas, and context-aware processing - a reusable HTML processing pipeline.

file: packages/lexical-html/src/import/ ↗ | tags: #html-processing #rule-based-transformation #import-export

Configurable Markdown processing pipeline featuring MarkdownTransformers, importTextFormatTransformer, and importTextMatchTransformer. Provides extensible Markdown handling with support for custom transformers and text matching - a reusable text processing system.

file: packages/lexical-markdown/src/ ↗ | tags: #markdown-processing #transformer-pipeline #text-transformation

Reactive signal implementation similar to Preact signals, providing observable state management with automatic dependency tracking. Demonstrates efficient, fine-grained reactivity that could be extracted for state management in other applications.

file: packages/lexical-extension/src/signals.ts ↗ | tags: #reactive-signals #state-management #observable-pattern
Last analyzed: 2026-08-24 09:26:04.844520
Next check: 2026-10-12 10:10:02.774540
$ submit: