react-brain
Browse decisions
React & language foundations 3App architecture 9UI 12Platform & native 9Build, test, observe, secure 6AI in React apps 3stack composerdecision recordscensusstaleness bencharchitecturechangelogmethodologyroadmap

entriesui · verified 2026-07-09 · react + react-native

Rich-text & content editors

draftedconfidence: lowearly: 1/12 of this tier graded so far (0 overturned) — the public scorecard →

re-verified 3× — 2026-07-13 · 2026-07-09 · 2026-07-06 · changelog

recommendation

Most React apps → TipTap (ProseMirror power with React ergonomics); large-scale / custom-node-heavy → Lexical; maximum control → ProseMirror directly; deeply custom React schemas → Slate/Plate; Notion-style blocks → BlockNote. React Native → react-native-enriched for rich-text input, react-native-enriched-markdown for (streaming) Markdown display. Lightly vetted (confidence: low) — prototype against your real document model before committing.

  • standard rich text with extensions → TipTap
  • Meta-scale performance / custom nodes → Lexical
  • block-based (Notion-like) UX → BlockNote
  • full control of the editing pipeline → ProseMirror
  • RN rich-text input → react-native-enriched (native views, no WebView; pre-1.0 — pin)
  • RN Markdown display, esp. streaming AI-chat output → react-native-enriched-markdown

Low confidence — fast-moving or lightly-vetted domain: treat the pick as a vetted lead and prototype before committing.

Options & tradeoffs

the field considered — and why each one isn’t the default here

optiontradeoffevidence
TipTapheadless editor on ProseMirror with first-class React bindings; rich extension ecosystem; the common React defaultships in 5/34
ProseMirrorthe powerful low-level toolkit (document model, transforms, plugins); max control, steeper curve; underpins TipTap/BlockNoteships in 2/34
Lexical (Meta)extensible, performance-focused editor framework from Meta; strong for large docs + custom nodes4.1M/wk · ships in 2/34
Slate / PlateReact-first customizable framework (Slate); Plate adds a batteries-included plugin system on top2.2M/wk · ships in 1/34
BlockNoteNotion-style block editor on ProseMirror/TipTap; fast to adopt for block-based UXships in 1/34
react-native-enriched (Software Mansion)RN rich-text EDITOR on native UITextView/EditText (not a WebView); v0.8 adds EnrichedText for HTML rendering + experimental web; pre-1.0, moving fast55k/wk
react-native-enriched-markdown (Software Mansion)native RN Markdown renderer/editor with STREAMING support (GFM tables/math, mentions) — built for AI-chat output; v0.7, pre-1.055k/wk

evidence: npm weekly downloads (signals snapshot) · “ships in n/D” = adoption across the production-app census, honest denominators

npm weekly downloads (from the corpus's last signals run): lexical 4.1M · slate 2.2M · react-native-enriched 55k · react-native-enriched-markdown 146k

Verified notes

NEW entry (2026-06-25): rich-text/content editing is a common, hard React need with real library choices and was previously uncovered. Most React editors build on ProseMirror (TipTap, BlockNote) or stand alone (Lexical, Slate). RN SIDE ADDED 2026-07-09: Software Mansion's react-native-enriched family — surfaced in four consecutive Native Weekly issues (v0.3→v0.8 across Feb–Jun 2026) — finally gives RN a native (non-WebView) rich-text editor and a streaming Markdown renderer (both verified vs npm + the SWM repos; both pre-1.0). Lightly vetted (confidence: low) — prototype before committing.

Canonical reading

Editorial annotations on why each piece matters — the articles themselves are the originals; read them there.

The Unreasonable Effectiveness of the ProseMirror Model in Rich Text TransformationShane Friedman (Storyteller)

Teaches ProseMirror's core abstractions (nodes, marks, positions, mappings) through a real parse→transform→serialize pipeline. Durable conceptual grounding for the document model under most React editors.

Sources

Related in ui: styling · component-libs · animation · lists · a11y · i18n · charts · svg · maps · calendars · polish