A ProseMirror alternative that's batteries-included.
ProseMirror is a powerful toolkit — you assemble the schema, plugins, and UI yourself, across many packages. Rune gives you the finished editor from a single zero-dependency package and one config object, with collaboration built in.
Rune vs ProseMirror
| rune | ProseMirror | |
|---|---|---|
| Zero runtime dependencies | Yes | No — many prosemirror-* packages |
| No build step required | Yes | No |
| Headless / CSS-variable theming | Yes | Partial — bring your own CSS |
| Config-driven toolbar & menus | Yes | No — you build the UI |
| Works without a framework | Yes | Yes |
| Real-time collaboration | Built in (Yjs) | Add-on (collab module) |
| License | MIT | MIT |
What you gain with Rune.
- 01
Batteries included
ProseMirror is a toolkit: you wire schema, plugins, and UI. Rune ships a working editor with a toolbar, bubble menu, and slash menu from one config.
- 02
One package, zero dependencies
ProseMirror spreads across many prosemirror-* packages. Rune is a single zero-dependency package.
- 03
Collaboration ready
ProseMirror's collaboration is a low-level module you implement around. Rune's Yjs layer is opt-in and complete.
Migrating from ProseMirror
ProseMirror gives you primitives — a schema, a state, and a view — to build an editor. Rune gives you the finished editor from a config object.
import { EditorState } from 'prosemirror-state'
import { EditorView } from 'prosemirror-view'
import { schema } from 'prosemirror-schema-basic'
import { exampleSetup } from 'prosemirror-example-setup'
const state = EditorState.create({
schema,
plugins: exampleSetup({ schema }),
})
new EditorView(document.querySelector('#editor'), { state })import { createFromConfig } from '@parityfox/rune-editor'
import config from './rune.config.js'
import '@parityfox/rune-editor/styles'
const editor = createFromConfig('#editor', config, {
content: '<p>Hello</p>',
onChange: (html) => console.log(html),
})When to choose ProseMirror instead
ProseMirror is the gold standard when you need total control of the document model and schema — it powers many production editors, including Tiptap. If you're building something highly custom on the most battle-tested foundation, ProseMirror is the right tool.
Questions
- Is Rune built on ProseMirror?
- No. Rune has its own document model and zero runtime dependencies. ProseMirror is a separate toolkit Rune does not use.
- Do I have to build the UI like with ProseMirror?
- No. Rune renders the toolbar, bubble menu, and slash menu from config. ProseMirror leaves the UI to you.
- How does collaboration compare?
- Both can use Yjs. ProseMirror exposes a low-level collab module; Rune ships a complete opt-in collaboration layer.
Try the batteries-included alternative.
Skip assembling a toolkit — Rune is a complete editor from one config object.