Empieza con GrapesJS
Cuéntanos qué tiene que hacer el editor y en qué aplicación encuentra, y recibe un plan de integración concreto.
Empieza con GrapesJSPageKit: el creador de sitios GrapesJS autoalojado, con el código fuente incluido. Obtener acceso anticipado
Compara dos enfoques de código abierto para construir editores visuales, creadores de páginas y experiencias de edición SaaS.Observa cómo difieren GrapesJS y Craft.js en arquitectura, integración con React, infraestructura de editores, personalización, extensibilidad, almacenamiento y desarrollo en producción.
Fundación React-primera editora
El editor es una aplicación React que diseñas tú.
Una base de editor visual más completa
El editor llega reunido; lo extiendes.
Cinco preguntas sobre tu pila, tu producción y cuánto del editor quieres poseer. El resultado nombra las respuestas que lo impulsaron, para que puedas discrepar en los detalles más que en la conclusión.
Ambos proyectos son frameworks de código abierto que instalas en una aplicación que ya posees. La diferencia está en dónde te ponen al día.
Tu aplicación es React, y el editor también es una aplicación React.
Señales
Cambias el tiempo hasta el primer editor por un modelo de edición que es tu modelo de componentes.
Lee la documentación de Craft.jsQuieres un editor visual funcional para extender en lugar de un conjunto de primitivas que ensamblar.
Señales
Cambias algo de libertad arquitectónica por un editor que ya trabaja desde el primer día.
Empieza con GrapesJSEsta es la decisión de la que cae el resto de la página. Ambos frameworks te asignan un árbol de nodos, arrastrar y soltar y serialización. Difieren en cuánto del editor alrededor de ese árbol ya existe.
React → Craft.js → tus componentes → tu editor UI
Craft.js proporciona el árbol de nodos, el comportamiento de arrastrar y soltar, el historial y la serialización. Todo lo que ve un usuario — los paneles, las barras de herramientas, los controles de propiedades, la paleta de bloques — es React que escribes tú, usando tus propios componentes. Ese es el objetivo del diseño, no un hueco en él.
Tu app → GrapesJS → tu backend
Subsistemas de editor que el framework ya incluye
GrapesJS proporciona un editor funcional: un lienzo, un modelo de componentes, una paleta de bloques, un gestor visual de estilos, un árbol de capas, un gestor de activos, un registro de comandos y una capa de almacenamiento. Lo reestilizas, reemplazas paneles y añades plugins — pero no empiezas escribiéndolos.
Craft.js te da una base React primero. GrapesJS te da una base más amplia de editor visual.
Ninguno de los dos frameworks es una plataforma. Ninguno proporciona un CMS, alojamiento, autenticación, cuentas de usuario, facturación, permisos, multi-tenencia o una pipeline de publicación. Esos pertenecen a la aplicación en ambos lados, y cualquier comparación que los ponga en una columna está midiendo lo incorrecto.
Lee las celdas, no un tic ni un cruce. "Requiere la implementación de tu editor" no es lo mismo que "falta", y "tu aplicación" no es lo mismo que "no soportada" — la mayor parte del tercio inferior de esta tabla es idéntica para ambos, porque ambos son frameworks y no productos.
| Capacidad | GrapesJS | Craft.js |
|---|---|---|
| Arquitectura primaria | Marco de edición visual | Marco de editor React |
| Dependencia de React | Opcional | Obligatorio |
| Flexibilidad del marco | Agnóstico respecto al marco | Solo React |
| Lienzo | Incorporado | Característica del marco |
| Arrastrar y soltar | Incorporado | Incorporado |
| Componentes | Incorporado | Característica del marco |
| Bloques | Incorporado | Requiere la implementación de tu editor |
| Capas | Incorporado | Paquete oficial de acompañamiento |
| Gestión de estilos | Incorporado | Requiere la implementación de tu editor |
| Activos | Incorporado | Requiere la implementación de tu editor |
| Commands | Incorporado | Implementación personalizada |
| Vista previa del dispositivo | Incorporado | Requiere la implementación de tu editor |
| Edición responsiva | Incorporado | Requiere la implementación de tu editor |
| Deshacer / volver a hacer | Incorporado | Incorporado |
| Editor personalizado UI | Integrado, totalmente personalizable | Tuyo de extremo a extremo |
| Componentes personalizados | Incorporado | Característica del marco |
| Bloques personalizados | Incorporado | Requiere la implementación de tu editor |
| Plantillas | A través de un plugin | Implementación personalizada |
| Integración de almacenamiento | Incorporado | Responsabilidad de la aplicación |
| JSON / datos de proyectos | Incorporado | Incorporado |
| Salida HTML/CSS | Incorporado | Implementación personalizada |
| Renderizado de componentes React | editor UI en React; lienzo renderiza HTML | Nativo del modelo |
| Flujos de trabajo de correo electrónico | A través de un plugin | Implementación personalizada |
| MJML | A través de un plugin | No aplicable |
| Ecosistema de plugins | Plugins más un mercado | Pequeño ecosistema |
| Extensibilidad API | Incorporado | Característica del marco |
| Autoalojamiento | Apoyado | Apoyado |
| Etiquetado blanco | Integrado, totalmente personalizable | Tuyo de extremo a extremo |
| Incrustación SaaS | Responsabilidad de la aplicación | Responsabilidad de la aplicación |
| Backend personalizado | Responsabilidad de la aplicación | Responsabilidad de la aplicación |
| Base de datos personalizada | Responsabilidad de la aplicación | Responsabilidad de la aplicación |
| Autenticación | Responsabilidad de la aplicación | Responsabilidad de la aplicación |
| Permisos | Responsabilidad de la aplicación | Responsabilidad de la aplicación |
| Publicación | Responsabilidad de la aplicación | Responsabilidad de la aplicación |
| Multi-inquilina | Responsabilidad de la aplicación | Responsabilidad de la aplicación |
Cada fila anterior se leía de la propia documentación, repositorio y entrada del registro npm de cada proyecto en 2026-09-03. Cuando una capacidad es accesible a través del propio ecosistema de un marco, la célula lo dice en lugar de marcarla como ausente.Fuentes: Resumen de Craft.js · API del editor de Craft.js · Paquete de capas Craft.js · Craft.js en npm · Documentación de GrapesJS · GrapesJS en npm
La popularidad no es un argumento técnico, y esta tabla no es un veredicto. Está aquí porque la cadencia de lanzamiento y el tamaño de la comunidad afectan cuánto tiempo esperas a una respuesta cuando algo se rompe — lo cual es un coste real de ingeniería, a diferencia de un recuento de estrellas por sí solo.
| Paquete | Última versión | Licencia | Publicado | Estrellas de repositorio |
|---|---|---|---|---|
| grapesjs | 0.23.6 | BSD-3-Clause | 2026-08-25 | 26,185 |
| @craftjs/core | 0.2.12 | MIT | 2025-02-14 | 8,738 |
Lee desde el registro npm y el GitHub API en la fecha anterior. Ninguno de los dos repositorios está archivado. Craft.js sigue en una línea 0.2.x y su versión más reciente es anterior a esta página por más de un año; existe una alfa 0.3.0 pero no se ha actualizado desde 2022. Eso es un hecho que merece la pena conocer antes de un compromiso de varios años — no es, por sí solo, una razón para descartar el proyecto, y los equipos que lo ejecutan en producción hoy no están varados. Craft.js declara React como una dependencia entre pares React 16.8 – 19. Craft.js también publica dos paquetes complementarios: @craftjs/layers y @craftjs/utils.
La columna más útil de esta página. No es una lista de lo que falta a cada marco, sino una lista de dónde encaja el trabajo.
| Capacidad | Craft.js | GrapesJS |
|---|---|---|
| Fundación de editor | Marco | Marco |
| Lienzo | Arquitectura del editor central | Incorporado |
| Modelo de componentes | Orientado a React | Incorporado |
| Bloques | Requiere la implementación de tu editor | Incorporado |
| Controles de estilo | Requiere la implementación de tu editor | Incorporado |
| Capas | Paquete oficial de acompañamiento | Incorporado |
| Gestión de activos | Requiere la implementación de tu editor | Disponible |
| Controles del dispositivo | Requiere la implementación de tu editor | Disponible |
| Commands | Arquitectura del editor central | Disponible |
| Almacenamiento | Aplicación / integración | Storage Manager |
| UI personalizado | Control total | Altamente personalizable |
"Requiere tu implementación de editor" significa que el framework te da el estado y el APIs, y tú renderizas la superficie. Para un equipo que quiere que la superficie sea suya, esa es la funcionalidad. Para un equipo que necesita un editor funcional este trimestre, es el calendario.
Ninguna de las dos columnas es un atajo. Una de ellas simplemente empieza más adelante y la otra se acerca más cerca de tu propio modelo de componentes.
Cada ventaja en esta página tiene un coste equivalente. Aquí están uno al lado del otro, en la misma forma, al mismo tamaño.
Es ideal para equipos que quieren una arquitectura nativa React y una interfaz de editor diseñada por ellos mismos.
El coste es diseñar la interfaz del editor. El retorno es un editor que se ajuste exactamente a tu arquitectura.
Es mejor para equipos que quieren que la infraestructura de editor visual funcional se extienda.
El coste es aprender una arquitectura que diseñó otra persona. El retorno es un editor que ya funciona.
La demo oficial: arrastrar bloques al lienzo, editar estilos en el gestor de estilos, cambiar el ancho de los dispositivos, inspeccionar el árbol de capas. Sin plugins, sin configuración — esto es lo que incluye el núcleo.
Cargas desde un origen de terceros
Los tres ejecutan el mismo motor de código abierto. La diferencia entre ellos es la configuración, los paneles y los plugins — que es la forma práctica de "framework extensible de editor visual". Las demos se cargan desde orígenes de terceros solo después de que decidas cargarlas.
Esta es la pregunta con la que la mayoría de los lectores realmente llegan, y la respuesta honesta se divide en la mitad.
El editor no es un componente de tu app React — es tu app React.
Señales
El lienzo representa los mismos componentes que en producción. Nada se refleja, nada se desvía.
React es una parte de tu stack y no su totalidad.
Señales
El editor UI puede ser React mientras que el lienzo sigue siendo HTML — lo que lo hace portátil.
El lienzo es la verdadera distinción. Craft.js renderiza tu árbol React dentro del editor; GrapesJS edita un documento HTML y te da los HTML y CSS resultantes. Un sistema de diseño React puede representarse en GrapesJS como componentes del editor, pero es una representación, y mantener esa representación sincronizada con la producción es un trabajo que deberías planificar.
GrapesJS puede servir como base de editor en diferentes entornos frontend, mientras que Craft.js está diseñado específicamente para React.
GrapesJS
Lee eso con precisión. El motor es una biblioteca JavaScript que se monta sobre un elemento DOM, lo que la hace utilizable desde cualquiera de los entornos frontend mencionados arriba. No significa que exista un envoltorio oficial para cada uno de ellos: hay un envoltorio oficial de React, y las integraciones Vue y Angular son patrones más que paquetes. Las páginas por framework que aparecen a continuación muestran el código real de integración.
El editor es una superficie entre varias, y es la única sobre la que ambos frameworks tienen opinión. Todo lo que lo rodea sigue siendo tuyo.
GrapesJS
Este diagrama se vería igual con Craft.js en lugar de GrapesJS. Ninguno de los dos frameworks proporciona autenticación, organizaciones, facturación, permisos ni una base de datos, y una comparación que implique lo contrario está vendiendo algo.
Seis formas que adopta la misma superficie de edición una vez que está dentro de un producto. Cada una se cubre en profundidad en su propia página.
Deja que los clientes creen y publiquen sus propios sitios dentro de tu producto, con tus componentes y tu alojamiento.
Consulta la guía del constructor SaaSPon una capa de edición visual sobre contenido que ya está en tu base de datos o un CMS sin cabeza.
Consulta la configuración CMS sin cabezaOfrece a los equipos de marketing un lienzo limitado de secciones aprobadas en lugar de una herramienta de diseño sin límites.
Consulta la construcción de la página de aterrizajeIncrusta el editor dentro de un panel en el que tus clientes ya inician sesión, en lugar de enviarlos a otro sitio.
Consulta la guía de incrustaciónDistribuye el mismo editor a muchos inquilinos con marca por inquilino, conjuntos de bloques y permisos — implementados en tu aplicación.
Ver opciones de marca blancaReutiliza el mismo motor para plantillas de marketing y correo transaccional en lugar de comprar un segundo editor.
Consulta la configuración del correo electrónicoEl editor puede convertirse en una parte nativa de tu aplicación en lugar de ser un servicio alojado separado. Ambos frameworks lo soportan; la diferencia está en cuánto de la superficie ensamblas antes de poder enviarla.
Tu solicitud
El producto al que tus usuarios ya inician sesión
Superficie de edición
El editor, montado dentro de él
Explorar pluginsPropiedad tuya
Shell de aplicación
Código abierto
Motor de edición
Propiedad tuya
Capa de datos
Ruta de solicitud
El framework de edición adecuado debería permitir construir la experiencia de edición en torno a los componentes con los que realmente trabajan tus usuarios. Ambos frameworks hacen esto; difieren en qué es un componente.
Del sistema de diseño al lienzo
Un conjunto de bloques es una decisión de producto, no una característica del marco. Estas son las secciones que la mayoría de los equipos acaban enviando primero: restringidas, con marca y seguras para entregar a un usuario no técnico.
Titular, texto de apoyo y acción principal, con un diseño bloqueado.
Planifica columnas impulsadas por tus propios datos en lugar de texto libre.
Una cuadrícula repetible donde el recuento está acotado y los iconos provienen de tu conjunto.
Una sola banda de conversión con opciones de color aprobadas por la marca.
Navegación del sitio que tus usuarios pueden poblar pero no reestructurar.
Campos conectados a tu endpoint, con validación que controlas.
Citas y atribuciones extraídas de registros en lugar de reescribirlas.
Una ficha de comercio atada a un producto real, no a una imagen de uno.
Las restricciones que tus usuarios no pueden romper valen más que un lienzo sobre el que todo es posible.
Ambos frameworks serializan su estado y te lo entregan. Ninguno lo almacena. GrapesJS proporciona un Storage Manager con llamadas de carga y almacenamiento; Craft.js te da el árbol de nodos serializado y deja el transporte a tu aplicación.
Camino de persistencia
Tu aplicación es la propietaria de la arquitectura backend. Ninguno de los dos frameworks proporciona base de datos, API, versionado, publicación o CDN, y la lista anterior es una lista de cosas que ya ejecutas — no funciones que ninguno de los dos proyectos proporcione.
El correo electrónico es el caso más claro en el que ambos frameworks no son intercambiables. GrapesJS puede extenderse para flujos de trabajo de edición de correo mediante presets que intercambian el conjunto de bloques y el formato de exportación; Craft.js no tiene un camino equivalente, porque su salida es un árbol React en lugar de un marcado.
Ruta del correo electrónico
Nada de esto es automático. Un editor de correo necesita un conjunto de bloques seguro para tablas, un paso de exportación y pruebas entre clientes — el motor elimina el problema del lienzo, no el del correo electrónico.
Ambos frameworks te permiten poseer la superficie, desde direcciones opuestas: con Craft.js la escribes, así que es tuya por defecto; con GrapesJS reemplazas la interfaz que ya proporciona el framework. Tres niveles, en el orden en que suelen llegar los equipos.
Las partes que un usuario ve en la primera pantalla.
Las palabras que tu producto ya usa para estas ideas.
Lo que cada usuario puede hacer en absoluto.
La última capa es la que ningún framework de editor proporciona. Los roles, la aprobación y la auditoría son características de aplicación en ambos lados de esta comparación.
Verificado en relación con la entrada actual del registro y el archivo de licencias de cada paquete en la fecha siguiente, porque este sitio ha publicado información de licencia inconsistente en el pasado.
| Paquete | Licencia | Fuente |
|---|---|---|
| grapesjs | BSD-3-Clause | Licencia |
| @grapesjs/react | MIT | Licencia |
| @craftjs/core | MIT | Licencia |
| GJS.Market | Términos comerciales por producto | Mercado |
Los productos del Marketplace se licencian individualmente por sus autores; los términos se muestran en cada página de producto antes de la compra. El núcleo GrapesJS y su envoltorio React tienen licencias diferentes — el núcleo no es MIT. Craft.js publica todos sus paquetes bajo una sola licencia.
Esto es una declaración sobre qué licencia publica cada paquete, no asesoramiento legal. Lee los archivos de licencias y compécalos con tu propio modelo de distribución. Licencias releyéndose 2026-09-03.
No hay una cifra de horas en esta página. "Cuarenta horas frente a trescientas veinte" depende enteramente de tu equipo, tu diseño y tu definición de hecho, y cualquier página que lo cite es una suposición. Lo que sigue es el trabajo que existe en cada lado, así que puedes valorarlo según tu propia velocidad.
Trabajo de ingeniería potencial antes de tener un editor que tus usuarios puedan usar.
Ya hay más infraestructura de editores disponible, lo que reduce cuánto de infraestructura específica del editor se implementa desde cero. No la reduce a cero.
Ambas columnas terminan en el mismo lugar: un editor que tus usuarios pueden usar, dentro de una aplicación que aún tienes que construir. La diferencia está en cuál de estas líneas escribe primero tu equipo.
Empieza por el editor principal y añade la funcionalidad que tu producto realmente necesita. Cada anuncio a continuación es un producto real, publicado actualmente: los precios se leen en directo desde el catálogo cuando se crea esta página.
Presets y componentes para equipos que montan el editor dentro de una aplicación React.
Navegar categoríaLos paneles de editor se renderizan como componentes React, así que la interfaz del editor coincide con la aplicación que los rodea.
Un punto de partida configurado para un editor alojado en React en lugar de una llamada de entrada en blanco.
Un ejemplo práctico de un componente React expuesto al lienzo como un bloque editable.
Una integración mínima para leer antes de conectar el editor a tu propio árbol React.
Presets y conjuntos de bloques que convierten el mismo motor en un editor de correo.
Navegar categoríaUn conjunto de bloques de correo responsivo, así que la primera plantilla de correo no son tablas escritas a mano.
Cambia el lienzo a un modelo de componente de correo electrónico y exporta los clientes de correo de marcado aceptados.
Un conjunto de bloques y ruta de exportación con forma de boletín para el correo de marketing.
Bloques de documento de formato largo para editores que generan páginas en lugar de páginas de destino.
Persistencia y gestión de varias páginas: las piezas que un producto necesita una vez que una persona edita.
Navegar categoríaPersiste los datos proyectados directamente en un CMS headless en lugar de un endpoint personalizado.
Cableado de almacenamiento para equipos que ya están funcionando en una base de datos de documentos alojada.
Persistencia local para borradores, edición offline y prototipos antes de que exista el API.
Proyectos de varias páginas en una sesión de editor: el punto en que una demo se convierte en un producto.
Bibliotecas de bloques, secciones y gestión de plantillas para páginas de marketing.
Navegar categoríaUna biblioteca de bloques de clase utilidad, para que la salida del lienzo coincida con un sistema de diseño existente.
Una sección de navegación configurable, que por lo demás es lo primero que todo equipo reconstruye.
La sección de zapata correspondiente, con el mismo modelo de configuración.
Puntos de partida guardados entre los que eliges los usuarios en vez de enfrentarse a un lienzo vacío.
Para un editor white-label, el punto de partida es un preset que reemplaza toda la shell en lugar de un plugin que le añade algo — las tres demos anteriores son exactamente esas, y cada una es un producto.
El catálogo tiene dos listados realmente impulsados por IA en lugar de una categoría completa de IA. Se nombran aquí en lugar de tener su propia sección: el centro de categorías de IA no tiene nada publicado detrás, así que enviar lectores allí sería un desperdicio de clic.
Empieza con el editor central y añade la funcionalidad que tu producto realmente necesita.
Catálogo verificado 2026-09-03. grapesjs-gpt-plugin · grapesjs-image-ai-thumbai
Si la comparación anterior llega a GrapesJS y el conjunto de bloques es el trabajo que tienes delante, esto es lo que hacemos.
Catorce requisitos, y el marco al que cada uno apunta. Tres de ellos apuntan a ambos, porque para esos requisitos cualquiera de los dos marcos servirá y pretender lo contrario haría que el resto de esta tabla fuera menos fiable.
| Requisito | Mejor ajustado |
|---|---|
| React-primer editor | Craft.js |
| Edición profunda de componentes React | Craft.js |
| Crea tu propia experiencia de editor | Craft.js |
| Control máximo nativo React | Craft.js |
| Editor usado solo por desarrolladores | Craft.js |
| Editor independiente del framework | GrapesJS |
| Infraestructura integrada de editor visual | GrapesJS |
| Edición visual HTML/CSS | GrapesJS |
| Creador de páginas SaaS | GrapesJS |
| Editor de correo electrónico y de página en un solo motor | GrapesJS |
| Ecosistema de editores existente | GrapesJS |
| Datos del proyecto JSON que guardas tú mismo | Cualquiera de los dos |
| Autoalojamiento sin proveedor | Cualquiera de los dos |
| Deshacer y volver a hacer desde la caja | Cualquiera de los dos |
¿Dónde se sitúa tu producto?
El editor tiene que generar un árbol de componentes React en vivo
Craft.js
Para este es el caso para que existe Craft.js. Ningún plugin de GrapesJS cambia el hecho de que su lienzo sea HTML.
Quieres diseñar cada panel y controlarte tú mismo
Craft.js
Craft.js espera que renderices la superficie, así que no hay nada que reemplazar primero.
El editor solo lo usan los desarrolladores de tu propio equipo
Craft.js
Un editor React diseñado específicamente es más barato de mantener que uno general que ya has reducido.
El editor tiene que ejecutarse fuera de React, ahora o más adelante
GrapesJS
GrapesJS se monta en un elemento DOM, por lo que es accesible desde cualquier entorno frontend.
Este trimestre necesitas un editor útil
GrapesJS
El lienzo, los bloques, los estilos, las capas y los recursos ya existen y ya funcionan juntos.
Necesitas tanto la creación de páginas como de correo electrónico
GrapesJS
Un motor cubre ambos mediante presets de correo electrónico; un árbol React no se convierte en marcado de correo electrónico.
Craft.js ofrece a los equipos de React una base flexible para construir editores personalizados. GrapesJS ofrece a los equipos una base más amplia de editores visuales que puede integrarse, personalizarse y ampliarse para aplicaciones de producción.
Cuéntanos qué tiene que hacer el editor y en qué aplicación encuentra, y recibe un plan de integración concreto.
Empieza con GrapesJSPresets, bibliotecas de bloques, adaptadores de almacenamiento y componentes de correo electrónico — las piezas que la mayoría de los equipos escribirían primero.
Explorar pluginsSistemas de diseño convertidos en bloques, almacenamiento cableado a tu API, paneles reconstruidos para adaptarse a tu producto.
Habla con un expertoElige la base del editor que se ajuste a tu arquitectura — y luego construye el producto alrededor de ella.