Changelog
Dated log of data corrections, new entries, methodology changes and benchmark runs on EditorStack. Corrections are published rather than quietly applied.
TL;DR
- Every substantive change to the data, the methodology or a published number is recorded here with its date.
- Corrections are published rather than silently applied, because a reference that edits its history is not a reference.
2026-09-24 — Editor Finder, no overall score, new dataset fields
The single overall score is gone. It was the mean of five editorial axes and read like a measurement. The table, comparisons and markdown mirrors now show benchmark status instead — measured numbers with a run id, or "Not benchmarked". Per-axis editorial ratings remain on the product pages of the eight products we have run hands-on. See the methodology.
New fields for all 34 products: editor_kinds, capabilities.collaboration,
capabilities.html_export, capabilities.json_output, and demo_url for the 12 products with an
official live demo. Values we could not confirm are null, and the site shows them as unverified.
New pages: the Editor Finder, benchmarks, the category index and embeddable page builders. Comparison pages now open with a data-generated "best fit by requirement" list, and "Verdict" sections were renamed and reworded as conditional guidance — no comparison declares an overall winner.
2026-09-17 — Rich-text editors, GrapesJS guides and two corrections
Dataset grew from 30 to 34 products. Added CKEditor 5, TinyMCE, BlockNote and Quill, and a new rich-text editor category that also includes Tiptap, Lexical, Plate and Editor.js. Licences, first-publish dates and versions were read from the npm registry; licensing terms and prices from each vendor's own licensing and pricing pages, recorded as vendor-published. Six new head-to-head comparisons and a TinyMCE alternatives guide were published.
Measurement run bundles-2026-09-17. Twelve libraries measured, up from eight. New entries:
Quill 2.0.3 at 58.7 kB gzip, CKEditor 5 48.5.1 at 161.2 kB, BlockNote 0.54.2 at 386.1 kB and
TinyMCE 8.9.1 at 393.9 kB, which is now the heaviest in the set; the spread is 13.5×. Existing entries
re-measured at the versions npm resolved today:
- Lexical 0.49.0 → 0.50.0: 97.1 → 104.9 kB.
- Tiptap 3.30.2 → 3.31.3: 125 → 123.3 kB.
- React Page 5.4.6, same version: 375.5 → 377.2 kB, from dependency drift.
- GrapesJS 0.23.5 → 0.23.6: 294.5 → 294.6 kB.
- Editor.js 2.31.6 → 2.31.7: unchanged at 64.3 kB.
- Craft.js, Puck and Plate: unchanged versions and sizes.
Every bundle figure quoted in prose was updated, including superlatives that stopped being true: React Page is no longer the largest bundle and GrapesJS is no longer the second largest.
BlockNote install workaround recorded. Its documented npm install failed with ERESOLVE on npm
10.8.2 over optional peer dependencies; both measurement scripts now install it with
--legacy-peer-deps and say so next to the result.
Time to first editor: four applications built, no timings published. Benchmark applications for
the four new editors are in the repository and their screenshots appear on their reviews. Their
timings were taken on a different machine from run tte-2026-08-20; re-timing the eight published
applications on that machine gave medians 1.1 to 3.7 times faster than published, so the results
cannot be combined. The published run is unchanged, the calibration data is in
data/measurements/time-to-editor-calibration-2026-09-17.json, and the four new products carry no
scores until they are timed alongside the others. The measurement script now launches Playwright's own
Chromium when the original Linux browser path is absent, and gained a merge mode that refuses to run
without calibration references.
Correction — this changelog's 2026-08-20 entry drifted. Three figures in it were rendered from the live dataset, so the dated entry had started to state today's product count, bundle spread and scored count. They are now fixed at their values on that date: 30 products, 12.9×, eight scored.
New section: GrapesJS guides. Ten practical tutorials: React, Next.js and Vue
integration, saving projects to a database, custom blocks, Tailwind CSS, S3 uploads, HTML and CSS
export, an MJML email builder and AI section generation. Every guide states the GrapesJS version its
code ran against (0.23.5). The code on each page is a file from examples/guides/ in the repository;
CI bundles each example, runs it in headless Chromium with assertions on what happened, and fails if
a code block on a guide page no longer matches the file it came from.
Findings recorded in the guides rather than smoothed over. In GrapesJS 0.23.5, remote storage
rejects every non-2xx response with a TypeError instead of the response body; isParsedNode
receives upper-case tag names from the default browser parser, unlike the documentation's example;
@grapesjs/react 2.0.0 declares a peer range that excludes 0.23.x; and an AWS SDK presigned PUT URL
signs only the host header unless told otherwise.
Correction — GrapesJS and server rendering in Next.js. The
Next.js use case said GrapesJS touches window at import
time and therefore cannot be imported from a server-rendered module. Building GrapesJS 0.23.5 with
Next.js 15.5.4, a client component that imports it directly was pre-rendered without error. The
answer now says so; we still recommend next/dynamic with ssr: false, for bundle and HTML reasons.
Code blocks are now syntax-highlighted at build time, with no added client JavaScript.
2026-08-20 — Six products added, benchmarks re-run, two corrections
Dataset grew to 30 products. Added Tiptap and Lexical, the two rich-text frameworks most often shortlisted alongside Plate and Editor.js, and four platforms that come up in agency evaluations: Brizy, Duda, Sitejet and Wix Studio. Licences, first-publish dates and versions for the two npm-distributed additions were read from the registry; the four platforms carry vendor-published pricing and no scores.
Measurement run bundles-2026-08-20. Eight libraries measured. New entries: Tiptap 3.30.2 at
125 kB gzip, Lexical 0.49.0 at 97.1 kB. The other six were unchanged at the same versions, and the
spread across the set remained 12.9×.
Measurement run tte-2026-08-20. Time to first editor re-run across all eight applications on the
same machine. Every median moved, because these are wall-clock measurements on shared hardware:
GrapesJS 438 → 309 ms, Editor.js 100 → 70 ms, Puck 879 → 852 ms, Craft.js 118 → 94 ms, Plate
252 → 209 ms, React Page 1,057 → 1,004 ms. New: Tiptap 171 ms in 11 lines, Lexical 159 ms in 25.
Every figure quoted in prose was updated to match; the ordering did not change.
Correction — Silex was scored without being run. Silex carried a full set of verdict scores while its own review stated we had not run it hands-on. That contradicts our rule that only products we have run are scored, so the scores were removed rather than the sentence. Scored products then numbered eight, exactly matching the set in our benchmarks.
Correction — the launch entry's category breakdown was wrong. It described the 24 launch records as "eight embeddable libraries, seven commercial SDKs, four headless CMSs and three platforms", which totals 22 rather than 24 and misstated three of the four counts. Every aggregate quoted in prose is now computed from the dataset at build time rather than typed by hand, so this class of error cannot recur.
2026-09-17 — Automated metric refresh
The daily sync recorded a change of more than 10% in at least one tracked metric:
beefree-sdk: npm_weekly_downloads null → 105382, github_stars null → 30, last_commit null → 2026-09-17, open_issues null → 24, contributors null → 21, latest_version 11.6.1 → 11.7.0 [significant]
blocknote: npm_weekly_downloads null → 545506, github_stars null → 10185, last_commit null → 2026-09-17, open_issues null → 213, contributors null → 129 [significant]
builder-io: npm_weekly_downloads null → 80352, github_stars null → 8835, last_commit null → 2026-09-17, open_issues null → 150, contributors null → 111, latest_version 9.4.2 → 9.4.6 [significant]
ckeditor: npm_weekly_downloads null → 893935, github_stars null → 10496, last_commit null → 2026-09-17, open_issues null → 737, contributors null → 209 [significant]
contentful-studio: npm_weekly_downloads null → 23625, github_stars null → 18, last_commit null → 2026-09-17, open_issues null → 28, contributors null → 40 [significant]
craftjs: npm_weekly_downloads null → 64907 [significant]
directus: npm_weekly_downloads null → 15509, github_stars null → 37948, last_commit null → 2026-09-17, open_issues null → 401, contributors null → 582, latest_version 12.3.0 → 12.3.1 [significant]
editorjs: npm_weekly_downloads null → 288930, latest_version 2.31.6 → 2.31.7 [significant]
grapesjs: npm_weekly_downloads null → 269998, github_stars null → 26245, last_commit null → 2026-08-26, open_issues null → 41, contributors null → 227, latest_version 0.23.5 → 0.23.6 [significant]
grapesjs-studio-sdk: npm_weekly_downloads null → 11068, latest_version 1.1.1 → 1.2.1 [significant]
lexical: npm_weekly_downloads null → 4577452, github_stars null → 23866, last_commit null → 2026-09-17, open_issues null → 295, contributors null → 622, latest_version 0.49.0 → 0.51.0 [significant]
plasmic: npm_weekly_downloads null → 9503, github_stars null → 7022, last_commit null → 2026-09-17, open_issues null → 45, contributors null → 88, latest_version 2.0.20 → 2.0.23 [significant]
plate: npm_weekly_downloads null → 100638, github_stars null → 16599, last_commit null → 2026-09-17, open_issues null → 16, contributors null → 268 [significant]
puck: npm_weekly_downloads null → 146091, github_stars null → 13332, last_commit null → 2026-09-17, open_issues null → 197, contributors null → 87 [significant]
quill: npm_weekly_downloads null → 6600547, github_stars null → 47348, last_commit null → 2025-07-25, open_issues null → 658, contributors null → 161 [significant]
react-page: npm_weekly_downloads null → 4544, github_stars null → 9538, last_commit null → 2026-07-28, open_issues null → 11, contributors null → 65 [significant]
sanity: npm_weekly_downloads null → 664282, github_stars null → 64, last_commit null → 2026-09-10, open_issues null → 61, contributors null → 39, latest_version 6.0.4 → 6.1.2 [significant]
silex: npm_weekly_downloads null → 159, github_stars null → 2973, last_commit null → 2026-09-16, open_issues null → 62, contributors null → 50, latest_version null → 3.0.0-alpha.17 [significant]
storyblok: npm_weekly_downloads null → 106460, github_stars null → 68, last_commit null → 2026-09-17, open_issues null → 70, contributors null → 135, latest_version 7.3.0 → 7.3.1 [significant]
teleporthq: npm_weekly_downloads null → 1165, github_stars null → 1116, last_commit null → 2026-09-17, open_issues null → 55, contributors null → 39, latest_version 0.43.52 → 0.43.65 [significant]
tinymce: npm_weekly_downloads null → 1025945, github_stars null → 16298, last_commit null → 2026-09-16, open_issues null → 420, contributors null → 330 [significant]
tiptap: npm_weekly_downloads null → 13973443, github_stars null → 38426, last_commit null → 2026-09-17, open_issues null → 846, contributors null → 529, latest_version 3.30.2 → 3.31.3 [significant]
unlayer: npm_weekly_downloads null → 196459, github_stars null → 5223, last_commit null → 2026-09-16, open_issues null → 245, contributors null → 13 [significant]
23 record(s) updated, including a significant move.
2026-09-24 — Automated metric refresh
The daily sync recorded a change of more than 10% in at least one tracked metric:
beefree-sdk: npm_weekly_downloads 105382 → 92529 [significant]
blocknote: npm_weekly_downloads 545506 → 411440, github_stars 10185 → 10223, last_commit 2026-09-17 → 2026-09-24, open_issues 213 → 202, contributors 129 → 130, latest_version 0.54.2 → 0.55.0 [significant]
builder-io: npm_weekly_downloads 80352 → 55406, github_stars 8835 → 8846, last_commit 2026-09-17 → 2026-09-24, open_issues 150 → 153, latest_version 9.4.6 → 9.4.7 [significant]
ckeditor: npm_weekly_downloads 893935 → 697330, github_stars 10496 → 10498, last_commit 2026-09-17 → 2026-09-24, open_issues 737 → 731, latest_version 48.5.1 → 48.5.2 [significant]
contentful-studio: npm_weekly_downloads 23625 → 19644, last_commit 2026-09-17 → 2026-09-23 [significant]
craftjs: npm_weekly_downloads 64907 → 49038 [significant]
directus: npm_weekly_downloads 15509 → 11621, github_stars 37948 → 37958, last_commit 2026-09-17 → 2026-09-24, open_issues 401 → 409, contributors 582 → 584, latest_version 12.3.1 → 12.4.1 [significant]
editorjs: npm_weekly_downloads 288930 → 209267 [significant]
grapesjs: npm_weekly_downloads 269998 → 255830, github_stars 26245 → 26265, last_commit 2026-08-26 → 2026-09-21, open_issues 41 → 44, contributors 227 → 228
grapesjs-studio-sdk: npm_weekly_downloads 11068 → 7359 [significant]
lexical: npm_weekly_downloads 4577452 → 3551371, github_stars 23866 → 23892, last_commit 2026-09-17 → 2026-09-24, open_issues 295 → 305, contributors 622 → 625 [significant]
plasmic: npm_weekly_downloads 9503 → 6044, github_stars 7022 → 7041, last_commit 2026-09-17 → 2026-09-24 [significant]
plate: npm_weekly_downloads 100638 → 80795, github_stars 16599 → 16613, last_commit 2026-09-17 → 2026-09-23, open_issues 16 → 18 [significant]
puck: npm_weekly_downloads 146091 → 109176, github_stars 13332 → 13355, last_commit 2026-09-17 → 2026-09-21, open_issues 197 → 196 [significant]
quill: npm_weekly_downloads 6600547 → 5075564, github_stars 47348 → 47360, open_issues 658 → 659 [significant]
react-page: npm_weekly_downloads 4544 → 2966, contributors 65 → 64 [significant]
sanity: npm_weekly_downloads 664282 → 484782, last_commit 2026-09-10 → 2026-09-23, open_issues 61 → 65 [significant]
silex: npm_weekly_downloads 159 → 35, github_stars 2973 → 2980, last_commit 2026-09-16 → 2026-09-22, open_issues 62 → 66, contributors 50 → 51 [significant]
storyblok: npm_weekly_downloads 106460 → 90357, last_commit 2026-09-17 → 2026-09-24, open_issues 70 → 78, contributors 135 → 136 [significant]
teleporthq: npm_weekly_downloads 1165 → 815, github_stars 1116 → 1117, last_commit 2026-09-17 → 2026-09-21, open_issues 55 → 54, latest_version 0.43.65 → 0.43.67 [significant]
tinymce: npm_weekly_downloads 1025945 → 801283, github_stars 16298 → 16301, last_commit 2026-09-16 → 2026-09-23, open_issues 420 → 421, latest_version 8.9.1 → 8.9.2 [significant]
tiptap: npm_weekly_downloads 13973443 → 10993131, github_stars 38426 → 38509, last_commit 2026-09-17 → 2026-09-23, open_issues 846 → 833, contributors 529 → 537 [significant]
unlayer: npm_weekly_downloads 196459 → 171641, github_stars 5223 → 5230, last_commit 2026-09-16 → 2026-09-23 [significant]
23 record(s) updated, including a significant move.
2026-10-18 — Automated metric refresh
The daily sync recorded a change of more than 10% in at least one tracked metric:
beefree-sdk: npm_weekly_downloads 92529 → 66898, last_commit 2026-09-17 → 2026-10-16, open_issues 24 → 28, latest_version 11.7.0 → 11.7.2-BEEPRO-9678.0 [significant]
blocknote: npm_weekly_downloads 411440 → 486740, github_stars 10223 → 10305, last_commit 2026-09-24 → 2026-10-16, open_issues 202 → 193, contributors 130 → 129, latest_version 0.55.0 → 0.56.0 [significant]
builder-io: npm_weekly_downloads 55406 → 35578, github_stars 8846 → 8865, last_commit 2026-09-24 → 2026-10-15, open_issues 153 → 161, latest_version 9.4.7 → 9.4.9 [significant]
ckeditor: npm_weekly_downloads 697330 → 536502, github_stars 10498 → 10510, last_commit 2026-09-24 → 2026-10-16, open_issues 731 → 722, latest_version 48.5.2 → 49.0.0 [significant]
contentful-studio: npm_weekly_downloads 19644 → 14438, last_commit 2026-09-23 → 2026-10-18, open_issues 28 → 24, latest_version 3.8.10 → 4.0.1 [significant]
craftjs: npm_weekly_downloads 49038 → 38047 [significant]
directus: npm_weekly_downloads 11621 → 12061, github_stars 37958 → 38573, last_commit 2026-09-24 → 2026-10-16, open_issues 409 → 368, contributors 584 → 589, latest_version 12.4.1 → 12.5.0
editorjs: npm_weekly_downloads 209267 → 185190 [significant]
grapesjs: npm_weekly_downloads 255830 → 272287, github_stars 26265 → 26309, last_commit 2026-09-21 → 2026-10-15, open_issues 44 → 31, contributors 228 → 230, latest_version 0.23.6 → 0.23.8
grapesjs-studio-sdk: npm_weekly_downloads 7359 → 5945 [significant]
lexical: npm_weekly_downloads 3551371 → 3163234, github_stars 23892 → 23962, last_commit 2026-09-24 → 2026-10-18, open_issues 305 → 331, contributors 625 → 638, latest_version 0.51.0 → 0.52.0 [significant]
plasmic: npm_weekly_downloads 6044 → 6573, github_stars 7041 → 7110, last_commit 2026-09-24 → 2026-10-18, open_issues 45 → 49, latest_version 2.0.23 → 2.0.24
plate: npm_weekly_downloads 80795 → 57907, github_stars 16613 → 16659, last_commit 2026-09-23 → 2026-10-18, open_issues 18 → 20, contributors 268 → 275 [significant]
puck: npm_weekly_downloads 109176 → 153705, github_stars 13355 → 13483, last_commit 2026-09-21 → 2026-10-16, open_issues 196 → 198, contributors 87 → 88 [significant]
quill: npm_weekly_downloads 5075564 → 3828693, github_stars 47360 → 47374, open_issues 659 → 663 [significant]
react-page: npm_weekly_downloads 2966 → 6030, github_stars 9538 → 9534 [significant]
sanity: npm_weekly_downloads 484782 → 425728, github_stars 64 → 68, last_commit 2026-09-23 → 2026-10-17, open_issues 65 → 68, latest_version 6.1.2 → 6.1.3 [significant]
silex: npm_weekly_downloads 35 → 49, github_stars 2980 → 3008, last_commit 2026-09-22 → 2026-10-09, open_issues 66 → 63, contributors 51 → 53 [significant]
storyblok: npm_weekly_downloads 90357 → 68708, last_commit 2026-09-24 → 2026-10-16, open_issues 78 → 75, contributors 136 → 138 [significant]
teleporthq: npm_weekly_downloads 815 → 66, last_commit 2026-09-21 → 2026-10-15, contributors 39 → 36, latest_version 0.43.67 → 0.43.75 [significant]
tinymce: npm_weekly_downloads 801283 → 604688, github_stars 16301 → 16316, last_commit 2026-09-23 → 2026-10-14, open_issues 421 → 423, contributors 330 → 332, latest_version 8.9.2 → 8.10.0 [significant]
tiptap: npm_weekly_downloads 10993131 → 11204603, github_stars 38509 → 38760, last_commit 2026-09-23 → 2026-10-17, open_issues 833 → 902, contributors 537 → 545, latest_version 3.31.3 → 3.32.0
unlayer: npm_weekly_downloads 171641 → 135030, github_stars 5230 → 5246, last_commit 2026-09-23 → 2026-10-14, open_issues 245 → 247, latest_version 2.1.2 → 2.1.3 [significant]
23 record(s) updated, including a significant move.
2026-10-27 — Automated metric refresh
The daily sync recorded a change of more than 10% in at least one tracked metric:
beefree-sdk: npm_weekly_downloads 66898 → 154210, last_commit 2026-10-16 → 2026-10-22, open_issues 28 → 29, contributors 21 → 22, latest_version 11.7.2-BEEPRO-9678.0 → 11.7.2 [significant]
blocknote: npm_weekly_downloads 486740 → 334292, github_stars 10306 → 10338, last_commit 2026-10-16 → 2026-10-27, open_issues 193 → 202, contributors 129 → 132 [significant]
builder-io: npm_weekly_downloads 35578 → 66060, github_stars 8866 → 8874, last_commit 2026-10-15 → 2026-10-26, open_issues 161 → 167, latest_version 9.4.9 → 9.4.10 [significant]
ckeditor: npm_weekly_downloads 536502 → 1151046, github_stars 10513 → 10519, last_commit 2026-10-19 → 2026-10-27, open_issues 718 → 707, latest_version 49.0.0 → 49.0.1 [significant]
contentful-studio: npm_weekly_downloads 14438 → 27117, last_commit 2026-10-18 → 2026-10-26 [significant]
craftjs: npm_weekly_downloads 38047 → 52705 [significant]
directus: npm_weekly_downloads 12061 → 22468, github_stars 38605 → 38645, last_commit 2026-10-19 → 2026-10-26, open_issues 369 → 344, contributors 589 → 593, latest_version 12.5.0 → 12.5.1 [significant]
editorjs: npm_weekly_downloads 185190 → 272042 [significant]
grapesjs: npm_weekly_downloads 272287 → 248844, github_stars 26311 → 26345, last_commit 2026-10-15 → 2026-10-21, open_issues 32 → 33, contributors 230 → 231
grapesjs-studio-sdk: npm_weekly_downloads 5945 → 7877 [significant]
lexical: npm_weekly_downloads 3163234 → 3575911, github_stars 23961 → 23984, last_commit 2026-10-19 → 2026-10-27, open_issues 330 → 388, contributors 639 → 646 [significant]
plasmic: npm_weekly_downloads 6573 → 11972, github_stars 7117 → 7130, last_commit 2026-10-19 → 2026-10-27, open_issues 48 → 45, latest_version 2.0.24 → 2.0.25 [significant]
plate: npm_weekly_downloads 57907 → 99810, github_stars 16659 → 16673, last_commit 2026-10-19 → 2026-10-27, open_issues 17 → 107, contributors 275 → 268 [significant]
puck: npm_weekly_downloads 153705 → 90006, github_stars 13485 → 13534, last_commit 2026-10-16 → 2026-10-27, open_issues 198 → 197, contributors 88 → 91 [significant]
quill: npm_weekly_downloads 3828693 → 3848254, github_stars 47376 → 47371, open_issues 663 → 664
react-page: npm_weekly_downloads 6030 → 4228, github_stars 9534 → 9536 [significant]
sanity: npm_weekly_downloads 425728 → 568195, last_commit 2026-10-18 → 2026-10-27, open_issues 68 → 66, contributors 39 → 40, latest_version 6.1.3 → 6.2.0 [significant]
silex: npm_weekly_downloads 49 → 43, github_stars 3009 → 3020, last_commit 2026-10-18 → 2026-10-25, open_issues 59 → 60, contributors 55 → 56 [significant]
storyblok: npm_weekly_downloads 68708 → 95041, github_stars 68 → 69, last_commit 2026-10-19 → 2026-10-27, open_issues 74 → 77, contributors 138 → 139, latest_version 7.3.1 → 7.4.0 [significant]
teleporthq: npm_weekly_downloads 66 → 1782, github_stars 1117 → 1116, last_commit 2026-10-15 → 2026-10-26, open_issues 54 → 52, latest_version 0.43.75 → 0.44.11 [significant]
tinymce: npm_weekly_downloads 604688 → 1117184, github_stars 16317 → 16319, open_issues 424 → 423 [significant]
tiptap: npm_weekly_downloads 11204603 → 9850190, github_stars 38773 → 38877, last_commit 2026-10-17 → 2026-10-27, open_issues 903 → 909, contributors 545 → 549 [significant]
unlayer: npm_weekly_downloads 135030 → 209359, github_stars 5247 → 5246, last_commit 2026-10-14 → 2026-10-26, open_issues 247 → 249, contributors 13 → 14 [significant]
23 record(s) updated, including a significant move.
2026-08-19 — Launch
Dataset. First publication of 24 product records: eight embeddable libraries, seven commercial SDKs, four headless CMS platforms with visual editing, two self-hosted products and three hosted platforms included as build-versus-buy reference points.
Primary-source verification. Licences, first-publish dates and current versions for every npm- distributed product were read from the npm registry rather than from vendor websites.
Pricing. Recorded from vendors' published pricing pages and labelled vendor-published. Where a vendor publishes no price — Contentful Studio's add-on, the GrapesJS Studio SDK's paid tiers, Zillapage — the field is null rather than an estimate.
Measurement run bundles-2026-08-19. Six open-source libraries measured: Craft.js 0.2.12 at
29.2 kB gzip, Editor.js 2.31.6 at 64.3 kB, Puck 0.20.2 at 90.4 kB, Plate 48.0.5 at 150.8 kB,
GrapesJS 0.23.5 at 294.5 kB, React Page 5.4.6 at 375.5 kB.
Measurement run tte-2026-08-19. Time to first editor measured across the same eight libraries,
from 70 ms (Editor.js) to 1,004 ms (React Page), with lines of code and dependency counts.
Known issue recorded, not hidden. @react-page/editor cannot be bundled against React 19
without aliasing react/jsx-runtime.js, because its react-dnd dependency imports a path React 19
no longer exports. Recorded in the benchmark results as a workaround rather than omitted.
Correction before publication. Our first benchmark run reported that Craft.js, Puck and Plate failed against React 19. That was wrong: the cause was two React copies in our own build, not a library incompatibility. The build was fixed and all eight libraries measured successfully. It is recorded here because the incorrect finding would have been the most eye-catching claim on the site.
How this log works
Entries are added when a fact changes, a measurement is re-run, a product enters or leaves the
dataset, or the methodology changes. Metric refreshes from the automated daily sync are not listed
individually — each record carries its own last_verified date and metrics.updated_at for that.
Written by the EditorStack Research Team. How we test and what we refuse to publish is on the methodology page.