RichTextEditor
v1.0.9NewUpdated 27 Aug 2026Tiptap-based WYSIWYG editor with a token-styled formatting toolbar: paragraph/H1–H3 select, bold, italic, strike, inline code, blockquote, bullet/ordered lists, validated link popover (http(s)/mailto) and undo/redo. Cont
Preview
Live · 11 stories▸Why this is recommendededitorwysiwygrich-texttiptap+4
The default, out-of-the-box RichTextEditor.
- ✓Quotation / invoice terms and notes
- ✓Email or LINE broadcast body composition
- ✓Product descriptions
- ✓Meeting minutes and internal docs
- Controlled (value) and uncontrolled (defaultValue) HTML string API
- onValueChange(html) plus optional onUpdateJSON(json)
- Toolbar: block select, bold / italic / strike / code, blockquote, lists, link, undo / redo
- Link popover with http(s)/mailto validation and remove-link action
- Soft maxLength: typing blocked at limit, character-count footer with warn/over states
- Label + hint wiring via aria-labelledby / aria-describedby
- Toolbar toggles expose aria-pressed; arrow-key focus movement inside role="toolbar"
- Read-only mode (editable={false}) and error state (aria-invalid + destructive ring)
- SSR-safe: immediatelyRender: false, no window/document during render
- i18n: labels prop overrides all toolbar and link-popover strings
- ✕Plain-text or markdown-first input (use Textarea)
- ✕Full document authoring with tables/images (needs extra tiptap extensions)
Install
Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.
Usage
Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.
Props
valueControlled HTML value
—defaultValueInitial HTML (uncontrolled)
—onValueChangeFires with HTML on every change
—onUpdateJSONFires with ProseMirror JSON on every change
—placeholderShown while the document is empty
—editablefalse renders read-only with disabled toolbar
—minHeightMinimum height of the writing area
—maxLengthSoft character limit with count footer
—errorInvalid state (aria-invalid + destructive ring)
—labelVisible label wired via aria-labelledby
—hintHelper text wired via aria-describedby
—labelsOverride built-in UI strings (i18n)
—