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

*Source: https://www.editorstack.cc/compare/craftjs-vs-react-page — last updated 2026-09-17. Licensed CC BY 4.0 with attribution to EditorStack.*

## Summary

- 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.

## At a glance

| Product | Type | Licence | Frameworks | Bundle (min+gzip) | Price from | Self-hosted | White label | Score |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [Craft.js](https://www.editorstack.cc/libraries/craftjs) | library | MIT | React | 29.2 kB gzip | Free (open source) | Yes | Yes | 6.6 |
| [React Page](https://www.editorstack.cc/libraries/react-page) | library | MIT | React | 377.2 kB gzip | Free (open source) | Yes | Yes | 6.4 |

## 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](/use-cases/build-vs-buy-visual-editor) 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](/research/time-to-first-editor-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](/compare/puck-vs-craftjs) 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.
