docs/solutions/logic-errors/2026-04-04-v2-editable-roots-should-own-mount-selection-sync-and-dom-commit.md
Even after the text and element primitives were packaged, every v2 proof surface was still hand-rolling the same root loop:
slate-dom-v2input / compositionendThat was already the beginning of an Editable.
slate-react-v2 now owns a minimal Editable root:
The v2 placeholder, inline-edge, and void-edge proof surfaces now use that component instead of each keeping a private reconciliation loop.
Root mounting, selection sync, and DOM commit are not example glue. They are the browser-facing contract of an editor surface.
If the package leaves that logic in example files, then the examples are still secretly the source of truth for the editable runtime.
Packaging the root loop is what turns the renderer stack into an actual editor-facing surface instead of a pile of useful pieces.
For slate-react-v2:
If the browser contract lives in three example files, it does not live in the package yet.