Command Palette

Search for a command to run...

position in category
#20

Extensible JavaScript text editor framework for the web with a focus on reliability, accessibility, and performance. Attaches to a contentEditable element and exposes declarative APIs so you can build rich editing experiences without wrestling with DOM edge cases. The core package stays minimal: about 22kb min+gzip, with a modular plugin system so you only load what you need.

Developed by Meta and widely adopted for complex text editing in production. Stands out from alternatives like Slate or Draft.js through a smaller footprint, immutable state model suited for time-travel and undo, and built-in WCAG-compliant accessibility. Framework-agnostic at its core with official React bindings, and available as a Swift framework for native iOS.

Key features:

  • Plugin-based architecture with optional rich-text features, toolbars, and markdown support
  • Immutable editor state with built-in undo and redo
  • Real-time collaborative editing via Yjs integration
  • Import and export from JSON, Markdown, and HTML
  • Tables, lists, code blocks, images, and custom node types
  • TypeScript with comprehensive type definitions, cross-browser support for modern browsers

Use cases include blog and CMS editors, in-app notes and comment systems, collaborative document editing, and chat interfaces that need rich formatting. The minimal core and lazy-loadable plugins fit well in apps where a full WYSIWYG would be overkill: documentation sites, admin panels, and embedded editors where performance matters.

GitHub Repositories
57
-5%
Trending down this week
Removed in 3 repos