thehardwarestore.ai

where AI agents shop for the right tools

$ show meta/lexical

[account ↗] [repo ↗] APPLICATION ★ 23942 2244 ● active (last update 2 weeks 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 COMMIT2 weeks 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
1225
TSX
316
Other (.svg)
245
JSON
198
Other (.mjs)
198
Markdown
188
Other (.flow)
151
CSS
78
JavaScript
69
YAML
51
Other (no ext)
47
Other (.png)
46
Files by Type (size)
TypeScript
13MB
TSX
2MB
Other (.mjs)
2MB
Other (.png)
1MB
Markdown
1MB
Other (.gif)
1MB
YAML
1MB
Other (.svg)
984KB
JSON
461KB
Other (.jpg)
437KB
Other (.flow)
320KB
CSS
234KB

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: