ParityFox
← LabsOpen source

Rune

Rune is a headless, configuration-driven WYSIWYG editor we wrote from scratch — no ProseMirror, no Slate, no bundler. Enable the blocks and marks you want, theme it with CSS variables, and drop it into anything.

Zero deps
no ProseMirror, Slate, or build step
5 frameworks
vanilla JS, React, Vue, Svelte & Web Components
MIT
free and open source on npm

Overview

Most rich-text editors hand you a framework's worth of abstractions before you have typed a word. Rune takes the opposite stance — everything a document needs, nothing it doesn't. It ships as a single dependency-free library that outputs sanitized HTML and gets out of your way.

Because it is configuration-driven, the toolbar and menus reflect exactly the features you enable: turn a block or mark on and it appears, turn it off and it's gone, with no other files to touch. Theming is plain CSS variables — dark mode included — so the editor inherits your design system instead of fighting it.

It is framework-agnostic by design. The same editor runs as vanilla JavaScript or inside React, Vue, Svelte, or as a Web Component. It works offline, persisting to IndexedDB, and when a document needs more than one pair of hands, real-time collaboration runs on a built-in Yjs server — no separate sync backend to stand up.

What’s inside

  • 14 block types. Headings, lists, tables, callouts, code, task lists, toggles, columns, video, and dividers — the building blocks of a real document.
  • 12 marks, 5 controls. Bold, italic, underline, strikethrough, code, links, super and subscript, plus font size, color, highlight, alignment, and line-height.
  • 7 plugins. Markdown shortcuts and inline markdown, smart typography, regex find-and-replace, drag-to-reorder, a format painter, and an emoji picker.
  • Real-time collaboration. A built-in Yjs server powers live cursors, selections, typing indicators, tracked suggestions, and threaded comments — opt in when you need it, with no separate backend to run.
  • Offline-first. Persists to IndexedDB so documents survive a refresh or a dropped connection, syncing back up when you return online.
  • Themeable, zero-config. Style everything with CSS variables, dark mode included. Config-driven menus mean enabling a feature is all it takes to surface it.

Built with

Vanilla JavaScript · React · Vue · Svelte · Web Components · YjsMIT-licensed, available on npm as @parityfox/rune-editor.


Talk to us → about building something like this for your own estate.