Rune for React

A React rich-text editor in one component.

Import <RuneEditor> from the React adapter, hand it a config object, and you have a fully themed editor — toolbar, slash menu, and shortcuts included. No ProseMirror, no build step, and real-time collaboration whenever you want it.

Why Rune for React
  • 01

    One component, full editor

    <RuneEditor> renders the toolbar, bubble menu, and slash menu from your config. Pass content and an onChange handler and you're done.

  • 02

    Config-driven, not plumbing

    Every block, mark, and plugin is a boolean in one file. Turn things off and the React component's toolbar and menus update with them.

  • 03

    Zero dependencies

    The React adapter wraps the same zero-dependency core — nothing from ProseMirror or Slate in your bundle.

$npm install @parityfox/rune-editor
@parityfox/rune-editor/react
import { RuneEditor } from '@parityfox/rune-editor/react';
import config from './rune.config.js';
import '@parityfox/rune-editor/styles';

export default function App() {
  return (
    <RuneEditor
      extensions={config.extensions}
      content="<p>Hello</p>"
      onChange={(html) => console.log(html)}
    />
  );
}

Questions

How do I add a rich text editor to React with Rune?
Install @parityfox/rune-editor, import RuneEditor from '@parityfox/rune-editor/react', import the styles, and render <RuneEditor extensions={config.extensions} content="…" onChange={…} />.
Does the React adapter support real-time collaboration?
Yes. Rune's opt-in Yjs collaboration layer works with the React adapter — add live presence, comments, and tracked changes when you enable it.
Is there a useRune hook?
Yes. Alongside the <RuneEditor> component, the React adapter exposes a useRune hook for imperative access to the editor instance.

Add it to your React app.

Install the package and render one component — you'll have a configurable editor running in minutes.