docs/research/sources/editor-architecture/react-19-2-external-store-and-background-ui.md
Compile the React 19.2 primitives that matter to the Slate v2 perf-architecture question.
useSyncExternalStore is the React-native primitive for stable external-store
subscription.useTransition marks non-blocking background work and lets urgent input
interrupt it.useDeferredValue lets non-urgent derived UI lag behind the urgent value.Activity preserves state and DOM for hidden UI while letting hidden work run
at lower priority.Activity hidden mode as hiding
children, unmounting effects, and deferring updates until React has idle
capacity.For editor-adjacent UI, React now has the right primitives for:
That is enough to make a React-native editor runtime architecture credible.
React can schedule and subscribe. It does not invent child-scoped document mapping, dirty-node reconciliation, or view-model separation for us.
If the editor core still recomputes too broadly, React 19.2 only makes the surrounding UI smarter, not the engine magically better.
Local Slate v2 already uses the React 19.2-friendly posture:
useSlateSelector(...)useSlateAnnotations(...)useSlateWidgets(...)useSlateProjections(...)Activity for hidden panes in the large-document overlay exampleThat means the repo is not missing the React side of the architecture. It is missing only the deeper invalidation proof if it wants to beat the best non-React or custom-runtime engines.
useSyncExternalStore as the subscription backboneThe official React 19.2 release page confirms the relevant runtime facts:
Activity supports visible and hidden modes.This keeps the Slate v2 conclusion intact: React 19.2 is strong enough for the projection and surrounding UI scheduler, but the editor still needs its own dirty-node, dirty-source, and transaction/commit runtime. If selection movement or typing dirties broad React trees, React 19.2 will expose the problem more clearly; it will not make that architecture correct.