docs/solutions/performance-issues/2026-04-11-slate-react-rerender-breadth-is-mostly-local-and-useSlate-is-the-only-broad-hook-left.md
The next roadmap decision depended on one question:
Is slate-react still broadly invalidating on edits and selection changes, or
is the remaining huge-document typing gap already downstream of something else?
Without a real breadth lane, that question was still hand-wavy.
5000 and 10000 huge-document typing still lagged legacy chunking#5131, #3656, and #4141 familiesuseSlate() complaints as proof that the whole runtime still had
broad invalidationAdd a kept breadth lane in
slate-react-rerender-breadth-benchmark.tsx
and wire it as
pnpm bench:react:rerender-breadth:local.
The lane measures three issue families:
#5131 selection-driven breadth#3656 many-leaf breadth inside one block#4141 deep ancestor breadth on one low-level editMeasured result:
20 selection changes -> 20 useSlate() rerenders20 selection changes -> 20 useSlateSelection() rerenders0100100The benchmark separates two different stories that were getting lumped together:
useSlate(), it is asking for whole-editor reactivity.
The selection lane proves that still happens.That means the runtime is no longer failing on the old breadth complaints in the way legacy Slate did.
useSlate() rerenders as hook-contract debt, not automatic proof that
the whole runtime is still broadly invalidating