docs/analysis/slate-v2-gap-matrix.md
This file tracks the major unresolved gaps surfaced by the Slate issue corpus and ongoing comparison research.
It is the missing bridge between:
The goal is not to dump every bug family into one list.
The goal is to keep a disciplined answer to:
slate-v2 priority now, a later slate-v2 concern, or really a plate-v2 concern?provedstructural-nextresearch-nextlaterbetter-fit-for-plate-v2Status: research-next
Primary package owners:
slate-react-v2slate-v2slate-dom-v2Why it matters:
Current evidence:
#5987, #3354, #3352, #3383, #2465, #4477Current proof status:
slate-react-v2 proves selector-first runtime and id-backed subscriptionsBest references to analyze:
LexicalProseMirrorTiptapslate-reactLikely fit:
adopt-later-for-slate-v2Notes after research:
useSyncExternalStore.Status: research-next
Primary package owners:
slate-dom-v2slate-v2Why it matters:
Current evidence:
#1971#2597#5760#4839#6034Current proof status:
slate-dom-v2 proves identity-backed DOM lookup and editor containmentBest references to analyze:
SlateProseMirrorLexicaledixEditContext APILikely fit:
adopt-later-for-slate-v2Notes after research:
Status: structural-next
Primary package owners:
slate-dom-v2slate-v2Why it matters:
data-slate-fragment couplingCurrent evidence:
#5233#5328#5630#1024#4440Current proof status:
Best references to analyze:
ProseMirroredixTiptapslate-domLikely fit:
adopt-now-for-slate-v2Notes after research:
view package and exposes explicit serializer/parser transform hooks.Status: better-fit-for-plate-v2
Primary package owners:
plate-v2Why it matters:
Current evidence:
#5944Current proof status:
slate-v2 proof stackBest references to analyze:
PretextPremirrorProseMirror only as document truth substrateLikely fit:
better-fit-for-plate-v2Notes after research:
prepare -> layout split gives deterministic text sizing without DOM reflow.slate-v2, not inside the core/runtime packages.Status: research-next
Primary package owners:
slate-react-v2plate-v2 view layersWhy it matters:
Current evidence:
#790#4056#5216#5131Current proof status:
Best references to analyze:
LexicalProseMirrorPretext / Premirroredix only as a lightweight contrastLikely fit:
adopt-later-for-slate-v2 for renderer fundamentalsbetter-fit-for-plate-v2 for full productized huge-doc experiencesNotes after research:
plate-v2 than near-term Slate core work.Status: research-next
Primary package owners:
slate-v2plate-v2Why it matters:
Current evidence:
Current proof status:
Best references to analyze:
ProseMirrorTiptapLexicalurqlPlateNotes after research:
filterTransaction, appendTransaction, and plugin-owned state fields.plate-v2 than the next slate-v2 package seam.Status: research-next
Primary package owners:
slate-react-v2slate-history-v2Why it matters:
Current evidence:
Best references to analyze:
LexicalProseMirrorLikely fit:
adopt-later-for-slate-v2Likely fit:
adopt-later-for-slate-v2 for core middleware seamsbetter-fit-for-plate-v2 for rich extension UXNotes after research:
slate-react-v2 React 19.2+ choice.Status: better-fit-for-plate-v2
Primary package owners:
plate-v2Why it matters:
Best references to analyze:
VS CodeLanguage Server ProtocolTanStack DBurqlLikely fit:
better-fit-for-plate-v2Notes after research:
plate-v2 grows a semantic-service layer, it should probably look like
normalized projection stores plus exchange-like execution stages, with per-feature registries and protocol-shaped service boundaries instead of ad hoc plugin soup.Status: research-next
Primary package owners:
plate-v2Why it matters:
Current proof status:
Best references to analyze:
use-editablerich-textareamarkdown-editorLikely fit:
better-fit-for-plate-v2Notes after research:
use-editable is the current lower bound:
a tiny hook, mutation rollback, selection repair, and a plain-text-first API.plate-v2.slate-v2 into DOM-owned text editing.rich-textarea is the strongest positive reference in this lane:
native textarea truth plus mirrored decoration layer is a much cleaner fit for lightweight text surfaces.markdown-editor is mostly the cautionary example:
manual contenteditable projection with character-count and layout invariants gets brittle fast.InputRange, CSS highlights, suggestions, and mask primitives would let many “rich enough” surfaces stay native.These should stay out of the gap list unless new evidence reopens them:
slate-v2 transaction-first coreslate-dom-v2 identity-backed DOM lookup and containmentslate-react-v2 selector-first runtime and controlled replacementslate-history-v2 transaction-aware undo unitsTo improve this matrix honestly:
slate-v2 synthesisplate-v2 action memoThat order keeps pressure on the unresolved product and extension seams without drifting into random repo tourism.