Skip to content
EditorStackPlayground

Craft.js vs React Page: build the editor or inherit a grid

Craft.js is 29.2 kB and gives you a node tree; React Page is 377.2 kB and gives you a finished grid-based editor. Thirteen times the bundle, and roughly a quarter of the work.

Updated · Craft.js review · React Page review

TL;DR

  • Craft.js measured 29.2 kB gzip against React Page's 377.2 kB — a 12.9× difference that is almost entirely editor interface.
  • React Page hands you a resizable cell grid, a settings UI and multilingual content; Craft.js hands you drag-and-drop primitives and expects the rest from you.
  • Choose Craft.js when the interface must be yours, and React Page when you want a working editor and can accept its Material UI appearance.

Craft.js vs React Page at a glance

Generated from the same dataset as the main table, so this cannot drift out of sync with the rest of the site.

Craft.js and React Page compared on licence, framework support, capabilities and price
FactCraft.jsReact Page
Typelibrarylibrary
LicenceMITMIT
First release2019-122019-11
FrameworksReactReact
SSR supportpartialpartial
Bundle (min+gzip)29.2 kB gzip377.2 kB gzip
Price fromFree (open source)Free (open source)
Drag & drop canvasYesYes
Responsive breakpointsNoPartial
Visual style managerNoPartial
Custom componentsYesYes
Data bindingPartialPartial
E-commerce blocksNoNo
Email HTML exportNoNo
AI generationNoNo
Editor i18nNoYes
White labelYesYes
Self-hostedYesYes
Our score (0–10)6.66.4
Last verified2026-08-192026-08-19

Opposite ends of the same axis

These two libraries sit at the extremes of how much editor you are given. React Page is the most complete React editor in this dataset and one of the heaviest; Craft.js is the least complete and by far the lightest. Everything else follows.

Where React Page wins

An editor exists. Grid, resizing, settings panels, toolbar. With Craft.js all of that is your code, and our calculator puts editor interface work at 120 hours before you have a block library.

A resizable layout grid, which is genuinely difficult to build well — hit testing, drop indicators, constraint handling.

Multilingual content built into the editor rather than modelled around it.

More documentation, though parts lag the current version.

Where Craft.js wins

A thirteenth of the bundle. 29.2 kB against 377.2 kB. If you are going to replace the interface anyway, React Page's Material UI weight is pure loss.

No design language imposed. React Page looks like Material UI, permanently. That is fine for internal tools and wrong for a product with its own identity.

Cleaner React 19 support. No bundler workaround required.

Faster first render: 94 ms against 1,004 ms in our benchmark.

A smaller API to learn, and a smaller surface to be surprised by.

Choosing between them

The question is not which library is better; it is what you are shipping and to whom.

An internal tool where five people will use the editor and nobody will complain about Material UI: React Page saves you a month, and the bundle size is irrelevant because the editor is not on a public route.

A customer-facing product where the editor sits inside your application's design: Craft.js, because you were going to build the interface regardless, and starting from a supplied one you dislike is slower than starting from nothing.

A product needing resizable multi-column layout for end users: React Page, unless you are prepared to build a grid on Craft.js — which is the single most expensive thing to add.

Migration

Both serialise a component tree to JSON, but the structures are unrelated: React Page's carries rows and cells, Craft.js's carries nodes with your component names. A transformer is possible for simple content and impossible to make lossless once grid resizing is involved.

Renderers migrate more easily than editors: a React Page cell plugin's render function is usually close to a Craft.js user component minus the connectors.

Verdict

For most teams choosing today, neither is the default — Puck sits between them with a modern API at 90.4 kB and is the safer starting point.

Reach for React Page when the grid or the multilingual handling is a hard requirement, and for Craft.js when the editor interface is your product's differentiator and you have the time to build it.

Decision checklist

  1. Will the editor be seen by customers or by colleagues? Material UI is fine for colleagues.
  2. Do we need a resizable grid? Building one on Craft.js is the single most expensive addition.
  3. Is our React version 19 or later? React Page needs a bundler alias; Craft.js does not.
  4. How much editor UI are we willing to write? Craft.js requires all of it.
  5. Does bundle size reach our users? On an internal tool it does not, and React Page's weight stops mattering.

The number that matters

348 kB — the gzip difference between these two libraries in our measurements. On an internal admin tool, that difference is invisible. On a customer-facing editor route on mobile, it is the difference between a fast first load and a slow one, and no amount of code splitting removes it once the editor opens.

Frequently asked questions

Which is lighter, Craft.js or React Page?
Craft.js, by a very large margin: 29.2 kB gzip against 377.2 kB in our measurements, with React external in both cases.
Which is faster to build with?
React Page, if its grid and interface suit you — the editor exists. Craft.js is faster only in the sense that you are not undoing decisions you disagree with.
Do either support React 19?
Craft.js does, cleanly — our benchmark ran it on React 19.2.8. React Page needs a bundler alias for react/jsx-runtime.js because of react-dnd.

Facts about Craft.js were verified on 2026-08-19 and facts about React Page on 2026-08-19. Full source lists are on the Craft.js review and the React Page review.