docs/editor-benchmarks/2026-04-03-performance-doc-benchmark-plan.md
Plan a production-grade Performance doc under content/ that makes strong
claims only where the benchmark design is honest enough to survive scrutiny.
This is not a marketing page with benchmark glitter. It needs to read like an engineering artifact that happens to be public.
Do not lead with “Plate vs every popular editor.”
Lead with:
That is the Daishi-style move: benchmark the real decision, isolate the axes, and refuse one giant vanity score.
Right now we have good performance evidence, but it is scattered across:
nodeId investigationsThat is useful for us and weak as public documentation.
The new doc should answer:
Current source material already exists:
That means the doc should not invent a new benchmark universe. It should productize the one we already trust.
The benchmark design habits worth copying are not “state libraries are fast.” They are the way Daishi frames the problem.
In react-redux-benchmarks, each library gets the same benchmark app shape and
the same stressor. The harness compares implementations, not vibes.
Useful pattern for us:
Do not compare Plate rich plugins against a stripped baseline in another editor and call it fair.
Daishi’s benchmark repos split scenarios by what they stress:
Useful pattern for us:
Do not publish one “Plate is X% faster” number without saying at what.
will-this-react-global-state-work-in-concurrent-rendering is not a speed
benchmark first. It is a correctness-under-pressure benchmark.
Useful pattern for us:
affinity, nodeId, selection, and table behaviorDaishi-style repos tend to expose:
Useful pattern for us:
The strongest Daishi-inspired lesson is restraint:
For editor benchmarks, this is critical. The fastest way to lose credibility is to benchmark rich-text editors like generic text inputs.
These are the right inspiration sources:
dai-shi/react-redux-benchmarks
dai-shi/will-this-react-global-state-work-in-concurrent-rendering
dai-shi/lets-compare-global-state-with-react-hooks
This is the public core story.
Compare:
Why:
Primary workloads:
nodeId init and duplicate-paste costsThis is the benchmark that should carry the headline.
This is the optional secondary matrix.
Compare only if each editor gets an honest equivalent implementation:
But only on narrow interoperable workloads:
Do not try to force:
nodeIdinto the cross-editor headline.
That matrix should be explicitly labeled as:
“cross-editor reference workloads on a shared minimal feature set”
not:
“full editor benchmark”
This is where Plate earns credibility.
Show:
nodeIdnodeIdnodeId tax separated from non-nodeId winsThis is the best antidote to “the benchmark hid the real bottleneck.”
Target path:
content/(guides)/performance.mdxOptional later:
content/(guides)/performance.cn.mdxRecommended sections:
What we benchmark
How we benchmark
Primary results: Plate vs Slate
nodeIdWhere the wins come from
nodeIdCross-editor reference matrix
How to reproduce
Caveats
Large document mount
1k, 5k, 10kTyping latency
nodeId
Plugin tax
BlockquotePluginHeadingPluginBoldPluginCodePluginHighlightPlugin / StrikethroughPlugin as current red lanesOnly after fairness proof exists:
Do we compare all popular editors?
My answer: yes, but not in the headline and not all at once.
Do it in phases:
Publish Plate vs Slate first.
This is the defensible benchmark story right now.
Add a cross-editor appendix or second section with:
on the narrow shared workload set.
If the appendix is stable and honest, it can graduate into a stronger public story later.
But do not block the Performance doc on building all five engines perfectly on day one.
Write the benchmark contract first:
Turn existing Plate vs Slate evidence into:
Build one narrow shared benchmark with:
If that survives contact with reality, widen later.
Write content/(guides)/performance.mdx.
Do not write the Chinese version until the English benchmark story is stable.
Think like Daishi, not like marketing:
So the first doc should be:
Performance
Plate vs Slate on real editor workloads, with an internal breakdown showing exactly where the wins come from.
Then, if we still want broader editor comparison, add it as a second, explicitly narrower benchmark layer.
That is the strongest, most credible move.