Capa de aplicación
React / Next.js
Tu interfaz de aplicación, autenticación, enrutamiento, facturación, usuarios, permisos y APIs. El editor es una ruta dentro de él, no todo el producto.
PageKit: el creador de sitios GrapesJS autoalojado, con el código fuente incluido. Obtener acceso anticipado
Crea un constructor de páginas visual embebible con React y GrapesJS. Empieza con el núcleo del editor de código abierto, luego añade bloques, controles responsivos, almacenamiento, plantillas y capacidades de correo a través de plugins.
Bloques
Tu página
Estilos
26k+
GitHub estrellas
100+
Plugins en GJS.Market
1.4M+
Descargas de npm por mes
$0
Tasa de licencia de editor
El editor de código abierto sin modificar. Esta es la base sobre la que se basa todo lo demás en esta página: lienzo, bloques, gestor de estilos, cambio de dispositivo, deshacer/rehacer, exportar.
Carga un editor en vivo desde una web de demostración de terceros. Nada se carga hasta que lo pides.
Un creador de páginas React es una interfaz visual de edición integrada en una aplicación React que permite a los usuarios crear, modificar y organizar el contenido de páginas sin necesidad de escribir HTML y CSS a mano.
La palabra importante es embedded. Un creador de páginas React no es un sitio web separado que visitan tus usuarios: es una ruta dentro de tu producto, detrás de tu inicio de sesión, escribiendo en tu base de datos.
Tres capas hacen el trabajo, y pertenecen a tres propietarios diferentes. Confundirlas es la razón más común por la que un proyecto de creador de páginas se estanca.
Capa de aplicación
Tu interfaz de aplicación, autenticación, enrutamiento, facturación, usuarios, permisos y APIs. El editor es una ruta dentro de él, no todo el producto.
Capa de edición
El lienzo visual, los componentes, los bloques, el estilo, arrastrar y soltar, comandos y serialización. La parte que llevaría meses escribir y años reforzarse.
Capa de persistencia
Almacenamiento de proyectos, usuarios, permisos, publicación y lógica de negocio. El editor te entrega JSON y HTML; dónde va y quién puede verlo es tuyo.
Un lienzo sobre el que puedes dejar una caja es un fin de semana. Todo lo que hay a continuación es lo que convierte ese prototipo en algo que puedes poner delante de clientes que pagan — y cada elemento de la lista es un subsistema que alguien tiene que construir, probar y seguir funcionando.
Construir el primer prototipo de arrastrar y soltar es relativamente fácil. Construir todo lo que hace que un editor sea fiable en producción es la parte cara.
Hay una buena razón para escribir tu propio editor: tu modelo de edición es realmente diferente a cualquier cosa que exista. Aparte de eso, esto es lo que cada una de las tres rutas realmente pide a tu equipo.
Eres dueño de cada capa, incluidas las que no tienen nada que ver con tu producto.
Implementas y mantienes
Cada uno de estos es un subsistema que puede retroceder, y ninguno diferencia tu producto.
Adopta una base de edición y construye tu aplicación alrededor de ella.
Implementas
El editor deja de ser un proyecto. Se convierte en una dependencia que configuras.
Consulta el códigoAñade capacidades especializadas sin tocar la arquitectura del editor.
Tú instalas
Las características que habrías escrito a continuación ya están publicadas, con precios y se pueden instalar.
Explorar pluginsNo construyas un editor visual desde cero. Construye tu producto React sobre una base de editor probada.
Cada capa tiene una función. Mantenlas separadas y todo queda reemplazable — incluido el editor, que es el objetivo de usar uno estándar.
GrapesJS
Lienzo, componentes, bloques, estilos, comandos, serialización. Código abierto, autoalojado, sin cuota de licencia.
React / Next.js
Tu panel de control, autenticación, enrutamiento, facturación y APIs. El editor es una ruta dentro de tu app.
GJS.Market
Las capacidades que desarrollarías a continuación — páginas, plantillas, almacenamiento, correo electrónico, SEO.
Tu creador de páginas React
El mismo núcleo del editor, apuntando a cinco productos diferentes. Lo que cambia entre ellos son los bloques, el modelo de almacenamiento y la salida — no el editor.
Deja que tus clientes creen y personalicen páginas dentro de tu SaaS, bajo tu marca y en tu infraestructura.
Crea un creador de páginas SaaSOfrecer a los responsables de marketing una superficie visual para las landing pages, para que los cambios en la campaña dejen de llegar como tickets de ingeniería.
Crea un generador de páginas de aterrizajeSitios de varias páginas con edición visual, plantillas compartidas, navegación y ajustes por página.
Crea un creador de páginas webCreación visual de correo electrónico con salida MJML, para que lo que diseñe tu usuario sobreviva al contacto con clientes de correo reales.
Crea un generador de correos ReactAñade edición visual a un sistema de contenido existente sin reemplazar el modelo de contenido que ya tienes.
Añadir edición visual a un CMSInterfaces de edición de contenido y páginas para equipos dentro de tu empresa, donde una plataforma alojada no es una opción.
Consulta el catálogo de pluginsEsta es la parte que sorprende a los equipos que evalúan plataformas alojadas: no hay un segundo sistema que mantener sincronizado, porque no hay un segundo sistema.
Los datos fluyen hacia abajo: tu app monta el editor, el editor devuelve un proyecto, tu backend lo almacena.
Cinco herramientas que se describen todas como editores visuales para React y que no son intercambiables. Cada celda de abajo se toma de la propia documentación de cada proyecto o de sus metadatos publicados en el paquete.
| Capacidad | GrapesJS | Puck | Craft.js | Builder.io | Plasmic |
|---|---|---|---|---|---|
| Integración de React | Envolvente oficial | API nativa React | API nativa React | React SDK | React SDK + código |
| Licencia | BSD-3-Clause core, MIT React wrapper | MIT | MIT | MIT SDK, hosted platform | MIT |
| Auto-hospeda al editor | ✓ — se ejecuta completamente en tu app | ✓ | ✓ | — plataforma alojada | Parcial — El autoalojamiento del estudio está documentado |
| Incrusta en tu propia interfaz de aplicación | ✓ | ✓ | ✓ | Mediante integración | Enterprise — etiquetado blanco e incrustación |
| Lienzo visual | ✓ | ✓ — iframe de mismo origen | ✓ — tú suministras la interfaz de usuario que lo rodea | ✓ | ✓ |
| Arrastrar y soltar | ✓ | ✓ | ✓ | ✓ | ✓ |
| Componentes personalizados | ✓ — tipos de componentes personalizados | ✓ — configuración + función de renderizado | ✓ — componentes de usuario | ✓ — componentes registrados | ✓ — componentes de código |
| Tus componentes React renderizados en el lienzo | Mediante integración — el lienzo renderiza DOM | ✓ — nativo | ✓ — nativo | ✓ | ✓ |
| Interfaz de editor lista para usar | ✓ — interfaz predeterminada incluida | ✓ | — tú construyes la interfaz | ✓ — interfaz alojada | ✓ — estudio alojado |
| Gestor de estilos para CSS arbitrario | ✓ — Responsable de estilo | Costumbres | Costumbres | ✓ | ✓ |
| Edición responsiva / ventana de visión | ✓ — Gestor de dispositivos | ✓ — Ventanas de visión | Costumbres | ✓ | ✓ |
| Sigue en tu propia base de datos | ✓ — Gestor de almacenamiento + adaptadores personalizados | ✓ — tú eres el propietario de los datos | ✓ — serializar a JSON | — el contenido vive en Builder | Depende — los proyectos viven en Plasmic |
| Exportación HTML / CSS | ✓ — getHtml() / getCss() | Costumbres | Costumbres | Depende | ✓ — código |
| Ecosistema de plugins | ✓ — GJS.Market, 100+ plugins | ✓ — API de plugins | — | ✓ | ✓ |
| Marca blanca | ✓ | ✓ | ✓ | Depende del plan | Enterprise |
| Correo electrónico (MJML / boletín) | ✓ — MJML y presets del boletín | Costumbres | Costumbres | — modelos de correo electrónico obsoletos | — |
| Integra para tus propios clientes finales | ✓ | ✓ | ✓ | Depende del plan | Enterprise |
| Última versión | 0.23.6 · 2026-08-25 | 0.23.0 · 2026-08-07 | 0.2.12 · 2025-02-14 | 9.4.4 · 2026-09-02 | 2.0.26 · 2026-09-02 |
✓ = capacidad documentada. Personalizado = soportado, pero lo implementas. Mediante integración / Depende / Empresa = disponible bajo las condiciones que establece el proveedor. — = no ofrecido, o no documentado como una capacidad del propio producto.
Verificado 2026-09-02 con la documentación oficial de cada proyecto, los metadatos del registro npm y el repositorio de GitHub. Las capacidades del producto y los precios cambian con el tiempo — revisa la documentación actual antes de tomar una decisión arquitectónica.
Ninguna de estas es universalmente mejor. Son respuestas a preguntas diferentes, y la pregunta que realmente haces suele ser obvia una vez escrita.
Elíjalo cuando
Necesitas un editor visual embebido que controles de principio a fin: autoalojado, profundamente personalizable, basado en plugins, orientado a HTML/CSS y capaz de crecer en páginas, plantillas y correo electrónico. Mejor opción para productos SaaS y editores CMS.
Mira el inicio rápidoPiénsalo cuando
Tu caso de uso principal es componer y configurar componentes React que ya envías. El modelo de Puck es una configuración de componentes React con campos tipados — un ajuste sólido cuando el sistema de diseño, no el CSS libre, es la unidad de edición.
GrapesJS vs PuckPiénsalo cuando
Quieres un framework editor React de nivel básico y tienes la intención de construir la experiencia del editor tú mismo. Proporciona arrastrar y soltar y un modelo de estado de componentes; las barras de herramientas, paneles y controles de estilo son tuyos para escribir.
GrapesJS vs Craft.jsTenlos en cuenta cuando
Quieres una plataforma de edición visual gestionada y te sientes cómodo con que el contenido o proyectos vivan en el lado del proveedor. Ambos son productos sólidos; ambos intercambian cierto control arquitectónico por un camino mucho más corto hacia la primera página.
Compara las alternativasTres resultados, uno de los cuales no es GrapesJS. Si una página de comparación no puede decirte cuándo dejarlo, no es una comparación.
El editor vive detrás de tu inicio de sesión, escribe en tu base de datos y lleva tu marca. Esperas seguir extendiéndola durante años.
Si los usuarios configuran instancias de componentes que ya envías, y el estilo libre no es explícitamente deseado, un editor React primero se sentirá más natural que un editor visual general.
El modelo de contenido decide el editor, no al revés. Elegir un editor antes de saber qué es una "página" en tu producto es la forma más común en que estos proyectos acaban reescribiéndose.
Dos paquetes y un componente. El envoltorio no incluye la biblioteca central, así que instala ambos. El ejemplo siguiente se ejecuta tal y como está escrito — el envoltorio @grapesjs/react requiere que el núcleo se pase explícitamente, que es el paso que la mayoría de los tutoriales de terceros omiten.
npm i grapesjs @grapesjs/react'use client';
import grapesjs, { type Editor } from 'grapesjs';
import GjsEditor from '@grapesjs/react';
import 'grapesjs/dist/css/grapes.min.css';
export default function PageBuilder() {
const onEditor = (editor: Editor) => {
// The full GrapesJS API is yours from here: Blocks, Pages,
// DeviceManager, Commands, StorageManager.
editor.Blocks.add('hero', {
label: 'Hero',
category: 'Sections',
content: '<section class="hero"><h1>Headline</h1></section>',
});
};
return (
<GjsEditor
// Required. The wrapper does not bundle the core library.
grapesjs={grapesjs}
options={{
height: '100vh',
// Persistence is wired separately — see the storage step below.
storageManager: false,
}}
onEditor={onEditor}
/>
);
}Qué hace cada pieza
La superficie de edición visual. Renderiza el DOM dentro de un iframe, por eso los estilos no pueden filtrarse desde tu aplicación.
La paleta de la que los usuarios arrastran. Registra aquí las secciones de tu producto y se convierten en contenido editable.
Persiste los proyectos en tu propio backend. Los adaptadores locales y remotos vienen integrados; los adaptadores personalizados soportan una carga y un método de almacenamiento.
La superficie de extensión. Todo, desde bloques Tailwind hasta el correo MJML, llega así, sin hacer fork del editor.
El almacenamiento es donde los prototipos se detienen y empiezan los productos. GrapesJS ofrece almacenamiento local y remoto y te permite registrar un adaptador totalmente personalizado con dos métodos asincrónicos — así que el editor nunca necesita saber cómo es tu backend.
// Persist projects to your own API. GrapesJS ships `local` and `remote`
// storage; `Storage.add` registers a fully custom adapter.
// Docs: grapesjs.com/docs/modules/Storage.html
const onEditor = (editor: Editor) => {
editor.Storage.add('api', {
async load() {
const res = await fetch(`/api/pages/${pageId}`);
return res.json(); // → the project JSON GrapesJS restores from
},
async store(project) {
await fetch(`/api/pages/${pageId}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(project),
});
},
});
};
// …then point the editor at it:
options={{
storageManager: { type: 'api', autosave: true, stepsBeforeSave: 5 },
}}El editor te devuelve HTML y CSS. Lo que haces con ellos es una decisión de aplicación: renderizarlos desde una ruta Next.js, enviarlos a una CDN o enviarlos por correo electrónico. El editor no está en la ruta de servicio.
// Editor output → a production page.
// getHtml/getCss return the exact markup the canvas rendered.
const html = editor.getHtml();
const css = editor.getCss();
await fetch('/api/publish', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ slug, html, css }),
});
// Your app renders it wherever you control — a Next.js route, a CDN
// object, an email send. The editor is not in the serving path.Verificado frente a @grapesjs/react 0.23.6, que apunta a React 18/19 y Next.js 15. Una advertencia que vale la pena saber desde el principio: el envoltorio React construye tu interfaz around el lienzo — no renderiza tus componentes React inside. Si renderizar componentes React en vivo en el lienzo es un requisito estricto, un editor React primero es una mejor opción, y esta página lo dice en la comparación anterior.
// app/editor/page.tsx — the editor is client-only.
// GrapesJS measures the DOM on init, so it must never render on the server.
import dynamic from 'next/dynamic';
const PageBuilder = dynamic(() => import('@/components/page-builder'), {
ssr: false,
loading: () => <EditorSkeleton />,
});
export default function EditorRoute() {
// Auth, params and data fetching stay on the server side of your app.
return <PageBuilder />;
}Notas prácticas
El editor es una hoja del árbol, no el tronco.
Monta el editor
Integra GrapesJS en una ruta en tu aplicación React. En este punto tienes un lienzo funcional y la interfaz predeterminada: un día de trabajo, no de un cuarto de céntimos.
Define tu modelo de contenido
Decide qué página es en tu producto, qué pueden crear los usuarios y qué no deben tocar. Esta decisión limita todo lo que viene después, así que hazlo antes de escribir bloques.
Añadir bloques y componentes
Convierte las secciones de tu producto en bloques y tipos de componentes personalizados. Aquí es donde el editor empieza a sentirse parte de tu producto en lugar de una herramienta genérica.
Conectar almacenamiento
Registra un adaptador de almacenamiento en tu propia API, con guardado automático y recuperación. Los proyectos ahora pertenecen a los usuarios, y los borradores sobreviven en una pestaña cerrada.
Publicar
Convierte los proyectos guardados en páginas de producción — una ruta Next.js, un objeto CDN, un envío por correo electrónico. El editor se mantiene fuera de la ruta de servicio.
La mayoría de las conversaciones de "tenemos que reemplazar a nuestro editor" acaban girando en torno a una capacidad que falta. Sustituir a un editor cuesta una moneda; añadir una capacidad cuesta una tarde.
El wrapper oficial monta GrapesJS como componente React y te entrega la instancia del editor. Los packs de inicio y de interfaz React van más allá.
Plugins ReactMJML y los presets del boletín convierten el mismo editor en un generador de correos, con resultados que sobreviven a los clientes reales de email.
Plugins de correo electrónicoLos paquetes de bloques ofrecen a los usuarios algo que arrastrar el primer día, en lugar de una paleta vacía y un ticket de backlog.
Plugins de bloquesLos gestores de plantillas y de proyectos añaden puntos de partida guardados, gestión de múltiples proyectos y ajustes por página.
Plugins de plantillasLos packs de bloques Tailwind permiten que el editor emita clases utilitarias que coinciden con el resto de tu base de código.
Plugins TailwindLos adaptadores de almacenamiento cubren IndexedDB, Firestore y endpoints REST personalizados — o escribe el tuyo propio en unas veinte líneas.
Plugins de almacenamientoLa generación de contenido, las herramientas de imagen y los auditores de accesibilidad/SEO se conectan al mismo editor sin necesidad de bifurcación.
Consulta el catálogoNo cambies el editor solo porque falta una función. Extiende el editor.
Empieza por el núcleo del editor y añade la funcionalidad que tu producto realmente necesita. Los precios, nombres y miniaturas que aparecen a continuación vienen directamente del catálogo, así que nada aquí puede desviarse de lo que está a la venta.
Starters, capas de interfaz React y presets de componentes para equipos que montan el editor dentro de una app React o Next.js.
Navegar categoríaUna integración React funcional desde la que empezar en lugar de un archivo en blanco.
Componentes de interfaz React para los paneles alrededor del lienzo.
Un preajuste orientado a React, para que el editor llegue configurado en lugar de vacío.
Una interfaz de editor completa al estilo shadcn — la prueba más clara de hasta dónde puede avanzar la interfaz.
Qué arrastran los usuarios y dónde están las páginas: paletas de bloques, manejo de varias páginas, plantillas y puntos de interrupción.
Navegar categoríaLa paleta de bloques iniciales, para que los usuarios tengan algo que arrastrar el primer día.
Proyectos de varias páginas con navegación y ajustes por página.
Plantillas guardadas entre las que los usuarios eligen en lugar de empezar vacías.
Puntos de ruptura personalizados que coincidan con tu sistema de diseño, no con los valores predeterminados.
La pieza que falta a cada prototipo. Gestión de proyectos, almacenamiento offline, adaptadores en la nube y recuperación de fallos.
Navegar categoríaVarios proyectos por usuario, listados, cargados y cambiados.
Persistencia local-first en el navegador, útil para borradores y edición offline.
Un adaptador de almacenamiento ya hecho para productos respaldados por Firestore.
Guardado automático y recuperación, así que una pestaña perdida no es una tarde perdida.
Dónde crece un creador de páginas: salida de email, flujos de trabajo de clase utilitaria y auditoría de accesibilidad/SEO.
Navegar categoríaMJML componentes en el lienzo, compilados en vivo — correo electrónico que se renderiza en clientes reales.
Paquete de bloques de correo electrónico responsivo para flujos de trabajo de boletines y campañas.
Tailwind bloque establecido, para que la salida del editor coincida con el resto de tu base de código.
Auditoría de accesibilidad y SEO dentro del editor, antes de publicar.
Tres listas de la compra en lugar de un volcado de catálogo. Cada una es lo que una versión funcional de ese producto suele necesitar más allá del núcleo libre.
Para desarrolladores orientados al cliente dentro de tu producto
Para la creación de sitios web de varias páginas
Para la creación visual de correos electrónicos
Precios de catálogo en vivo. Una pila es una sugerencia, no un paquete — compra las piezas que necesitas.
La licencia de editor rara vez es el número que importa. Estos son los centros de coste que crea cada ruta — deliberadamente sin cifras inventadas, porque las tarifas y el alcance de tu equipo son los únicos insumos que harían real un número.
La primera construcción es la mitad pequeña.
Centros de costes
Cada solicitud futura de función recae en el equipo que posee al editor — que eres tú.
Llega el editor; el trabajo de producto permanece.
Centros de costes
No hay tasa de licencia por el núcleo, y el mantenimiento aguas arriba es trabajo de otra persona.
Compra las secciones que ibas a programar.
Centros de costes
Cada plugin elimina una línea de la hoja de ruta en lugar de añadir una.
Ver precios del catálogoLa parte cara de un creador de páginas no es la primera demo. Es todo lo necesario para que el editor esté listo para producción.
Aquí está todo el argumento en una sola pantalla. La columna de la izquierda es trabajo que solo tú puedes hacer, porque es tu producto. Las otras dos son trabajos que ya existen.
La parte cara de un creador de páginas no es la primera demo. Es todo lo necesario para que el editor esté listo para la producción — y casi nada de eso es lo que tus clientes te pagan.
Cuatro equipos llegan a esta página con el mismo requisito y limitaciones muy diferentes.
Necesitas un editor visual dentro de tu producto, en tu dominio, bajo tu marca — y no puedes enviar a los clientes a una plataforma de terceros para editar su propio contenido.
La edición visual es una característica en una hoja de ruta llena de ellas. La necesitas para lanzarse sin convertirte en un equipo interno permanente de plataforma.
Construyes la misma superficie de edición para cliente tras cliente. Una base reutilizable y autoalojada vale más que cualquier proyecto individual.
Quieres un núcleo de editor extensible y control total sobre la aplicación que lo rodea, sin heredar las decisiones de producto de otros.
Tres preguntas. Dos de las cuatro respuestas no son GrapesJS.
¿Necesitas que el editor visual esté dentro de tu propia aplicación?
Cada camino a un vistazo
Cada uno de estos va considerablemente más allá de la matriz anterior — modelos de datos, rutas de migración y los casos en los que la otra herramienta gana.
Dos modelos de datos diferentes: un árbol JSON de props de componentes React, frente a un documento de componentes tipados con CSS. Una guía para saber cuál se ajusta a tu contenido.
Lee la comparaciónUn editor con baterías contra un marco para construir el tuyo propio. Incluye lo que realmente tienes que escribir en cada caso.
Lee la comparaciónEl campo más amplio — plataformas alojadas, editores React-first y componentes WYSIWYG — con el compromiso que cada uno te pide aceptar.
Ver todas las alternativasEmpieza con GrapesJS, intégralo con React y amplía tu editor con la funcionalidad que tu producto necesita.
Abre un editor en vivo, luego toma el inicio rápido y monta uno en tu propia app de React.
Prueba GrapesJSBloques, páginas, plantillas, adaptadores de almacenamiento, correo MJML y herramientas SEO — precios por capacidad.
Explora los plugins GJS.MarketRevisión de arquitectura, una compilación personalizada de un editor o una segunda opinión antes de comprometerte con una pila.
Habla con un experto en GrapesJSConstruye tu producto. No tu infraestructura de editor.