All comparisons

Engine ↔ Product

SpineEditor vs TinyMCE

TinyMCE is one of the longest-running rich text editor products on the web — a turnkey WYSIWYG with toolbar, dialogs, and dozens of plugins out of the box. It sits at the product layer; its internal model is contentEditable + DOM mutation. SpineEditor sits at the engine layer below — a different architectural slot with different concerns.

Where they sit

  • TinyMCE = product. A finished editor: toolbar, plugins, dialogs, themes, hosted services. The model is contentEditable + DOM event handlers.
  • SpineEditor = engine. A deterministic Intent → Plan → Transaction pipeline that owns state separately from the DOM. The toolbar, plugins, and hosted services are yours to design.

What TinyMCE does well

  • Turnkey editing experience. A complete WYSIWYG toolbar, dialogs, and styling out of the box. Works the moment you mount it.
  • Massive plugin catalog. Tables, images, media embeds, mentions, link checking, spell check — most commercial editor features ship as plugins.
  • Accessibility certified. Section 508 / WCAG 2.1 AA conformance reports published by Tiny.
  • Long-term stability. Two decades of releases, a well-known migration story between major versions.
  • Tiny Cloud. Hosted real-time collaboration, AI Assistant, accessibility checker, advanced tables — commercial subscription.

What SpineEditor does at the engine layer

  • State separated from the DOM. TinyMCE edits the contentEditable DOM directly; the model is the DOM. SpineEditor owns engine state independently and treats the DOM as a projection of committed state.
  • Explicit Plan stage. Every Intent compiles into a Plan artifact before any mutation; readable, loggable, vetoable.
  • Determinism contract. The same edit produces the same plan, transaction, and committed state every time.
  • TypeScript-first. Strict types throughout the public surface.

Architectural comparison

Architectural layer

TinyMCE
Product
SpineEditor
Engine

Source of truth

TinyMCE
contentEditable DOM
SpineEditor
Engine state

Edit primitive

TinyMCE
DOM mutation + commands
SpineEditor
Intent → Plan → Transaction

Explicit plan artifact

TinyMCE
SpineEditor
First-class

Built-in trace / replay

TinyMCE
Event-level only
SpineEditor
Per-stage trace tags

License (core)

TinyMCE
MIT
SpineEditor
MIT

Code: insert text at the caret

TinyMCE:

editor.insertContent("Hello");

SpineEditor:

engine.dispatch({
  kind: "typeText",
  text: "Hello",
});

Choose TinyMCE if

  • You want a complete WYSIWYG product, not an engine to build on.
  • You want a turnkey toolbar, dialogs, and plugin catalog.
  • You need certified accessibility conformance with vendor-provided reports.
  • You want hosted collaboration, AI, or accessibility features and are comfortable with Tiny Cloud.

Choose SpineEditor if

  • You're building an editor and want to own the engine layer.
  • You want every edit to produce an inspectable Plan artifact before mutation.
  • You need engine state separated from the DOM, with deterministic, replayable edits.
  • You want a fully MIT-licensed engine with no premium tier.