Skip to main content
Version: Next

React Examples

React integration examples for controlled editing, plugin composition, and multi-instance validation.

Baseline editor

import { useMemo, useState } from "react";
import { EditoraEditor } from "@editora/react";
import { BoldPlugin, ItalicPlugin, HistoryPlugin } from "@editora/plugins";
import "@editora/plugins/styles.css";
import "@editora/themes/themes/default.css";

export default function EditorScreen() {
const [value, setValue] = useState("<p>Start writing...</p>");
const plugins = useMemo(() => [BoldPlugin(), ItalicPlugin(), HistoryPlugin()], []);

return (
<EditoraEditor
value={value}
onChange={setValue}
plugins={plugins}
floatingToolbar
/>
);
}

Full-feature pattern

  • Start with stable plugin arrays (useMemo)
  • Add advanced plugins incrementally
  • Lazy-load heavier plugins when route/context requires
  • Keep theme CSS at app-shell scope to avoid duplicate style injection

Content management patterns

  • Controlled mode (value, onChange) for app-state syncing
  • Uncontrolled mode (defaultValue) for lightweight local editing
  • Debounce large-content updates before persistence

Multi-instance checklist

  • Spell-check/comments sidebars are instance-scoped
  • Floating toolbar positions per active selection
  • Toolbar commands do not affect sibling editors
  • Status counters update only for focused editor

Readonly and security checklist

  • Readonly mode blocks all mutating commands
  • Selection and copy behavior still works
  • Sanitization settings align with app security policy

Performance checklist

  • Large documents keep acceptable input latency
  • Mutation-heavy plugins do not freeze UI
  • History operations stay responsive after long sessions

API Surface

SurfaceTypeNotes
EditoraEditorReact component APIPrimary editor wrapper surface
value/defaultValue, onChangeContent APIControlled and uncontrolled content flows
onInit, onDestroyLifecycle APIAttach/detach runtime integrations cleanly
plugins={[...]}Plugin composition APIFeature selection through plugin factory arrays
toolbar, statusbar, floatingToolbarUI behavior APIControls toolbar and status surfaces
autosave, security, performance, accessibilityRuntime config APIOperational controls from React props

Config Matrix

ConcernReact Config Surface
Content syncvalue/defaultValue, onChange
Feature setplugins
UI behaviortoolbar, statusbar, floatingToolbar
Runtime behaviorautosave, security, performance, accessibility

Validation Checklist

  • Controlled and uncontrolled modes behave correctly
  • Plugin sidebars/dialogs stay instance-scoped
  • Theming remains consistent during runtime switches
  • Readonly mode blocks all mutating flows