PageKit — der selbst gehostete GrapesJS-Website-Builder, als Quellcode. Early Access sichern

Puck vs. GrapesJS

Puck-Alternative für Entwickler

Bauen Sie mit GrapesJS ein umfassenderes visuelles Bearbeitungserlebnis auf. Puck ist ein starker, auf React basierender Editor zum Komponieren eigener Komponenten. Wenn Ihr Produkt sich zu einem vollständigen Seiteneditor, Website-Editor, E-Mail-Builder oder kundenorientierten visuellen Editor entwickelt, bietet GrapesJS Ihnen eine breitere Editor-Grundlage, die Sie integrieren und erweitern können.

Open Source, selbst gehostetFramework-agnostischer KernEingebaute Editor-SubsystemeErweiterbares Plugin-Ökosystem
Puck

React-Komponenten sind rein, React rendert raus.

  1. React Application
  2. React Components
  3. Puck
  4. JSON
  5. React Renderer
GrapesJS

Ein visuelles Dokument, dann alles, was du daraus veröffentlichst.

  1. Application
  2. GrapesJS
  3. Canvas · Components · Blocks · Styles · Layers · Assets · Commands
  4. Project Data
  5. Your Backend / Publishing

26k+

GrapesJS GitHub-Sterne

100+

Plugins auf GJS.Market

1.4M+

GrapesJS npm Downloads pro Monat

BSD-3-Clause

GrapesJS-Kernlizenz

Zahlen zu GrapesJS und GJS.Market, geprüft am 2026-09-03. Sie beschreiben das Projekt, das diese Seite empfiehlt, und sind kein Punktestand gegen Puck — eine Sternzahl belegt nicht, dass ein Editor besser zu deinem Produkt passt.

Die kurze Antwort

Ist Puck immer noch die richtige Wahl?

Beide sind Open-Source-Editoren, die du selbst hosten und deinen Nutzern präsentieren kannst. Sie beginnen mit unterschiedlichen architektonischen Richtungen, daher ist die eigentliche Frage nicht, was besser ist – sondern ob du einen React-Komponenteneditor oder ein vollständiges visuelles Bearbeitungserlebnis baust.

Bleib bei Puck, falls

Dein Editor ist ein React-Komponenteneditor, und das sollte er auch bleiben.

Das beschreibt Ihr Produkt

  • Deine Anwendung ist stark auf React ausgerichtet.
  • Dein Editor dreht sich um deine eigenen React-Komponenten.
  • Du möchtest eine React-native Komponentenkonfigurationserfahrung.
  • Du solltest den Großteil der Editor-UX selbst kontrollieren.
  • Dein Inhaltsmodell passt natürlich zu den React-Komponenten.

Nichts auf dieser Seite ist ein Grund für eine Migration. Puck ist gut dokumentiert, aktiv entwickelt und von MIT lizenziert.

Lies die Puck-Dokumentation

Betrachte GrapesJS, wenn

Dein Editor wird zu einer eigenen Produktoberfläche, mit passenden Subsystemen.

Das beschreibt Ihre Fahrplan.

  • Du baust einen vollständigen visuellen Seitenbauer.
  • Du brauchst HTML und CSS visuelle Bearbeitung.
  • Du brauchst Blöcke, Ebenen, Stile und Assets.
  • Du brauchst einen einbettbaren Editor in einem SaaS-Produkt.
  • Du brauchst Flexibilität im Rahmen über React hinaus.
  • Du willst ein erweiterbares Editor-Ökosystem, auf das du zurückgreifen kannst.
  • Du brauchst E-Mail- oder Page-Builder-Workflows nebeneinander.
  • Dein Editor wird zu einem wichtigen Produktfeature.

Eine breitere Editor-Basis bedeutet weniger Editor-Infrastruktur, die Ihr Team entwerfen, aufbauen und warten muss.

Öffnen Sie einen Live-Editor
Signale

Wann macht es Sinn, von Puck umzusteigen?

Das sind konkrete Produktsignale, keine Behauptung darüber, was die meisten Teams tun. Wenn mehrere von ihnen Ihre Roadmap beschreiben, ist Ihr Editor aus einem Komponentenkonfigurator herausgewachsen.

Dein Editor wird mehr als nur ein Komponentenkonfigurator

Nutzer haben begonnen, nach visueller Seitenkomposition, wiederverwendbaren Blöcken, responsiven Steuerungen, Asset-Workflows, Vorlagen, Stilsteuerungen, Ebenen und mehreren Seiten zu fragen – Editor-Funktionen statt mehr Komponenten.

Ihr Produkt benötigt einen dokumentenorientierten Editor

Statt einer React-Komponente mit Requisiten, die auf JSON serialisiert sind, brauchst du eine Seite aus Abschnitten, Komponenten, Stilen, Assets und Layout – ein Dokument, das deine Nutzer bearbeiten, statt einer Konfiguration, die sie selbst ausfüllen.

Dein Editor muss mehr als React unterstützen

Wenn derselbe Editor in verschiedenen Anwendungsumgebungen wiederverwendet oder eingebettet werden muss, wo React nicht der Host ist, hört die Framework-Unabhängigkeit auf, theoretisch zu sein.

Nutzer wollen das Styling kontrollieren, nicht nur Inhalte

Eine visuelle Stilschicht ist ein großes Subsystem. Wenn "Benutzer den Abstand auswählen lassen" zu einem Roadmap-Element wird, speichert ein Editor mit bereits einem Style Manager ein Projekt.

Du brauchst HTML und CSS als Ausgabe, nicht nur React

Exporte, statische Veröffentlichungen, Drittanbieter-Einbettungen und E-Mail erfordern alle portable Markup. Das ausschließliche Rendern über React-Komponenten macht das schwieriger, als es sein müsste.

E-Mail-Vorlagen erschienen auf der Roadmap

E-Mail ist ein anderes Rendering-Ziel mit eigenen Einschränkungen. Es ist nicht das, wofür Puck dokumentiert ist, und es ist ein Workflow, den das GrapesJS-Ökosystem bereits abdeckt.

Der Editor ist jetzt ein Feature, das du verkaufst

Sobald der Editor Teil dessen ist, wofür Kunden zahlen, werden die Kosten für den Aufbau und die Wartung der Editor-Infrastruktur selbst zu einer Produktentscheidung und nicht mehr zu einem Implementierungsdetail.

Der ehrliche Fall

Wann du bei Puck bleiben solltest

Man muss nicht einfach migrieren, weil GrapesJS existiert. Puck ist ein gut dokumentierter, MIT-lizenzierter, aktiv entwickelter Editor und passt für eine ganze Produktklasse besser.

  • Dein Produkt ist komplett React

    Puck läuft innerhalb deines React-Baums, sodass deine Komponenten, der Kontext, die Hooks und das Designsystem im Editor ohne Integrationsebene verfügbar sind.

  • Dein Inhaltsmodell sind React-Komponenten

    Wenn das, was Nutzer bearbeiten, ein Komponentenbaum mit typisierten Props ist, drückt Puck das direkt aus. Ein visuelles Dokumentmodell wäre ein zusätzlicher Übersetzungsschritt.

  • Dein Editor ist relativ fokussiert

    Ein Konfigurator mit einem festen Komponentensatz benötigt keinen Style Manager, keinen Asset Manager oder einen Layer Manager. Ungenutzte Subsysteme sind weiterhin eine Oberfläche zu verbergen.

  • Du solltest den Editor UI besitzen

    Puck dokumentiert dreizehn Überschreibplätze plus Aufsatz, sodass Teams, die das gesamte Lektoraterlebnis gestalten wollen, einen klaren Weg haben.

  • Du brauchst eine enge React-Integration

    Opt-in React Server Component-Unterstützung, dynamische Props, Resolver und externe Datenquellen sind alle dokumentiert, React-native Anliegen.

  • Du brauchst kein HTML/CSS-Bearbeitungsmodell

    Wenn in deiner Roadmap nichts visuell Markup oder Stile bearbeiten muss, ist die größere Editor-Basis eine Fähigkeit, die du ohne Nutzung mitnehmen würdest.

Wenn das dein Produkt beschreibt, ist es die richtige Entscheidung, bei Puck zu bleiben – und diese Seite hat ihren Zweck erfüllt.

Vergleichst du noch? Sieh dir die vollständige Merkmalsmatrix an
Architektur

Puck und GrapesJS gehen von unterschiedlichen Modellen aus

Puck ist darauf ausgelegt, React-Komponenten zu bearbeiten und zu komponieren. GrapesJS ist auf visuelle Dokumentenbearbeitung ausgelegt, und bietet eine breitere Auswahl an Editor-Subsystemen.

Puck

Komponenten und ihre Requisiten sind das Inhaltsmodell.

  1. React
  2. Components
  3. Fields / Props
  4. Puck
  5. JSON
  6. React
GrapesJS

Ein visuelles Dokument ist das Inhaltsmodell.

  1. Application
  2. Visual Document
  3. Components · Blocks · Styles · Layers · Assets · Commands
  4. Project Data
  5. HTML / CSS / Other Outputs

Keines der beiden Modelle kann als fehlende Fähigkeiten des anderen beschrieben werden: Alles, was GrapesJS als Modul ausliefert, kann auf Puck umgesetzt werden, und alles, was Puck nativ mit React macht, kann in GrapesJS integriert werden. Der Unterschied ist der Ausgangspunkt.

Der Ausgangspunkt ändert sich, ist, wie viel Editor-Infrastruktur dein Team aufbauen muss, bevor das Produkt fertig aussieht – was die Frage ist, die die nächsten beiden Abschnitte konkret beantworten.

Keine der beiden Architekturen ist universell überlegen. Sie optimieren für verschiedene Dinge, und die richtige ist die, die zu dem passt, was deine Nutzer tatsächlich bearbeiten.

Bauen vs. übernehmen

Wie viel Editor-Infrastruktur benötigt Ihr Team?

Die eigentliche Entscheidung trifft selten "Puck oder GrapesJS". Es geht um, wie viel Editor-Infrastruktur dein Team besitzen und implementieren sollte. Diese Tabelle liest jede Fähigkeit aus der eigenen Dokumentation jedes Projekts: "Core" bedeutet ein dokumentiertes Modul, "konfigurierbar" bedeutet, dass das Projekt es durch Konfiguration oder Überschreibungen unterstützt, und "benutzerdefinierte Implementierung" bedeutet, dass dein Team es schreibt. Keine dieser Zellen bedeutet "unmöglich".

LeistungsfähigkeitPuckGrapesJS
React-KomponentenbearbeitungKernkraftIntegration – benutzerdefinierte Komponententypen oder der React-Wrapper
Visuelle LeinwandVerfügbar — iframe-VorschauKern
BlöckeKomponenten und KonfigurationKern — Block Manager
StilsystemBenutzerdefiniert und konfigurierbarKern — Style Manager
Schichten und UmrissVerfügbar und anpassbarKern — Layer Manager
AssetsIndividuelle Implementierung oder IntegrationKern — Asset Manager
Responsive BearbeitungViewports und KonfigurationKern — Device Manager
CommandsCustom, in deiner AnwendungKern — Commands
LagerungAnwendungsverantwortlichkeitKern – Storage Manager, plus deine Integration
ProjektdatenJSON von KomponentenpropsProjektdaten – Struktur, Stil, Assets und Seiten
HTML- und CSS-AusgabenNicht das primäre ModellKernanwendung
Benutzerdefinierter Editor UIHochgradig anpassbarHochgradig anpassbar
PluginsPlugin APIPlugin API und Marktplatz-Ökosystem
E-Mail-WorkflowsKein dokumentierter SchwerpunktVerfügbar über das Ökosystem

2026-09-03 wurde mit puckeditor.com/docs und grapesjs.com/docs überprüft. Eine Fähigkeit mit der Markierung "benutzerdefinierte Implementierung" für ein Projekt ist kein Fehler – es ist eine Designentscheidung darüber, was in die Bibliothek gehört und was in Ihre Anwendung gehört.

Fähigkeiten

Wenn GrapesJS besser geeignet ist

Dies sind dokumentierte Module des GrapesJS-Kerns, und sie sind das, was "eine breitere Editor-Grundlage" konkret für einen visuellen Website-Builder, SaaS-Seiteneditor, CMS-Editor, E-Mail-Builder oder White-Label-Editor bedeutet.

Visuelle Leinwand

Eine vollständige visuelle Bearbeitungsumgebung, die ein Live-Dokument rendert, keine Vorschau eines Komponentenbaums.

Komponenten

Definiere editierbare Komponententypen mit eigenem Modell, traits und Verhalten auf der Leinwand.

Blöcke

Registrieren Sie wiederverwendbare Drag-and-Drop-Blöcke, aus denen Nutzer Seiten erstellen.

Style Manager

Visuelle Steuerungen für Typografie, Abstand, Farbe, Abmessungen und mehr, abgegrenzt durch einen Selektor.

Asset Manager

Durchstöbern, laden Sie Bilder und andere Medien aus dem Editor hoch und verwenden Sie sie wieder.

Device Manager

Definiere Viewports und lass Nutzer über reaktionsfähige Breakpoints hinweg bearbeiten.

Lagerung

Verbinde Editor-Daten mit deinem eigenen Backend, mit lokalem oder entferntem Speicher und autosave.

Commands

Erweitern Sie das Verhalten eines Skripteditors und binden Sie es an Ihr eigenes UI.

Plugins

Fügen Sie Funktionalität hinzu, ohne den Kerneditor zu verändern – den Erweiterungspunkt, auf dem das Ökosystem aufgebaut ist.

HTML / CSS

Exportiere portable Markup-Modelle und Stile, die du überall rendern kannst, wo du kontrollierst.

E-Mail

Erweitere denselben Editor für HTML-E-Mail- und MJML-Workflows über Ökosystem-Plugins.

Merkmalsmatrix

Puck vs. GrapesJS

Fähigkeit für Fähigkeit, im eigenen Wortschatz jedes Projekts. Beide Projekte bewegen sich, daher spiegelt dies das wider, was ihre Dokumentation zum untenstehenden Verifizierungsdatum abdeckt. Zellen vermeiden ein klares Ja/Nein, wo die ehrliche Antwort "unterstützt, aber du konfigurierst oder implementierst es".

LeistungsfähigkeitGrapesJSPuck
ArchitekturVisueller Dokumenteditor mit eigenem KomponentenbaumReact-Komponentenbaum, bearbeitet als typisierte Props
LizenzBSD-3-Clause core, MIT React wrapperMIT — @puckeditor/core 0.23.0
Open SourceJaJa
React-AbhängigkeitKeine im Kern; offizieller React-Wrapper verfügbarErforderlich – React ist die Laufzeit
RahmenflexibilitätFramework-agnostischer KernReact-fokussiert von Design
Visuelle LeinwandCore – ein Live-Dokument in einem iframeEingebaut — iframe-Vorschau derselben Herkunft
KomponentenKomponententypen mit Modell, Ansicht und traitsKernstärke – deine eigenen React-Komponenten
BlöckeKern — Block ManagerKomponenten-Drawer; slot-Felder zum Verschachteln
Schichten / UmrissKern — Layer ManagerEingebaut — Umrissregion, ersetzbar über Übersteuerungen
StilmanagementCore — Style Manager mit visuellen CSS-SteuerungenIhr eigenes CSS und Designsystem; der Theming API gestaltet den Editor UI
Assets und MedienCore — Asset Manager mit steckbaren QuellenBenutzerdefinierte Implementierung – bereitstellen Sie ein Feld-UI oder eine externe Quelle bereit
GerätevorschauKern — Device ManagerEingebaut — Viewports
Responsive BearbeitungVisuelle Breakpoint-Bearbeitung über den Style ManagerViewport-Wechsel; responsive Regeln finden sich in deinem eigenen CSS
CommandsKern — CommandsAnwendungsverantwortung – Versand und Maßnahmen
Rückgängig machen und neu machenKern — UndoManagerEingebaut — dokumentierte Geschichte API
Rich Text EditingEingebautes RTE, erweiterbarEingebaut — richtext-Feld- und Rich-Text-Menükomponenten
Individuelle KomponentenKomponente API — addType()Core – jede React-Komponente plus ein ComponentConfig
Benutzerdefinierter Editor UIHochgradig anpassbar – Panels, benutzerdefinierte Ansichten, vollständiger UI-AustauschHochgradig anpassbar – dreizehn Override-Slots plus Komposition
VorlagenPlugin – Vorlagenmanager-ListingsAnwendungsverantwortung – Speicherung und Neuladen gespeicherter Daten
LagerungCore — Storage Manager, lokal oder Ihr BackendAnwendungsverantwortung – Sie speichern die Daten
ProjektdatenKomponenten, Stile, Assets, Seiten und Editor-ZustandJSON von Komponentenprops, unter Content und Root
HTML- und CSS-AusgabenKernanwendung — exportiert portable HTML und CSSNicht das primäre Modell – die Ausgabe wird als React gerendert
React-RenderingIntegration – React einbauen oder exportierte Markup-Daten rendernCore – eine Render-Komponente spielt die gespeicherten Daten erneut ab
React Server ComponentsClient-seitiger Editor – überprüfen Sie Ihre IntegrationsanforderungenOpt-in-Unterstützung, dokumentiert
E-Mail-WorkflowsVerfügbar über das Plugin-ÖkosystemKein dokumentierter Anwendungsfall
MJMLPlugin — MJML-Presets und ExportNicht anwendbar
PluginsPlugin API und ein öffentlicher MarktplatzPlugin API- und UI-Übersteuerungen
KI-UnterstützungNicht im Kern – benutzerdefinierte IntegrationDokumentiertes KI-Plugin und Cloud-Client
SelbsthostingJa – du leitest den EditorJa – du leitest den Editor
White-LabelAustauschbares UI, Panels und BrandingTheming API- und UI-Übersteuerungen
SaaS-EinbettungIntegrieren Sie den Editor in Ihr ProduktBinde den Editor in dein React-Produkt ein
Benutzerdefiniertes Backend und DatenbankStorage Manager spricht mit deinem eigenen APIAnwendungsverantwortung – Sie besitzen den Transport
BerechtigungenAnwendungsverantwortung – sperre die von dir bereitgestellten BefehleEingebaut — Berechtigungen API und Funktionsumschalten
VerlagswesenAnwendungsverantwortlichkeitAnwendungsverantwortlichkeit
Plugin-MarktplatzGJS.Market — 100+ pluginsCommunity-Plugin-Liste

2026-09-03 mit der offiziellen Dokumentation jedes Projekts überprüft. "Core" bedeutet ein dokumentiertes Modul der Bibliothek; "über Konfiguration" und "benutzerdefinierte Implementierung" bedeuten, dass die Funktionalität erreichbar ist, aber dein Team baut sie zusammen. Keine Zelle hier bedeutet, dass ein Projekt nichts tun kann.

Integration

Was ist, wenn dein Produkt React-first ist?

Dann sind beide spielbar. Puck passt besser, wenn React die Kern-Anwendungsarchitektur ist, Komponenten das Inhaltsmodell sind, der Editor Komponenten manipulieren sollte und dein Designsystem bereits tief mit React integriert ist. GrapesJS passt besser, wenn React eine Integrationsschicht ist und nicht die gesamte Editor-Architektur – wenn du auch HTML und CSS visuelle Bearbeitung brauchst, den Editor in verschiedenen Frontend-Umgebungen wiederverwenden möchtest oder die breiteren Editor-Subsysteme brauchst.
  1. Next.js
  2. React
  3. GrapesJS
  4. Your Components
  5. Your Backend
npm install grapesjs @grapesjs/react
Mounten Sie den Herausgeber.tsx
import { useRef } from 'react';
import grapesjs from 'grapesjs';
import GjsEditor from '@grapesjs/react';
import 'grapesjs/dist/css/grapes.min.css';

// GrapesJS runs on the client: it owns an iframe canvas and a live document.
// In Next.js, mount it from a client component.
export default function Editor() {
  return (
    <GjsEditor
      grapesjs={grapesjs}
      options={{
        height: '100vh',
        storageManager: { type: 'remote', autosave: true },
      }}
      onEditor={(editor) => {
        // Register the component types you mapped from your Puck config here.
      }}
    />
  );
}

Deine Komponenten bleiben deine. Der Editor sitzt zwischen ihnen und dem Dokument, das deine Nutzer erstellen, und speichert es in deinem eigenen Backend.

Entscheide dich

Welcher Editor passt zu Ihrem Produkt?

Eine Produktform pro Reihe, ein Urteil. Drei davon gehen direkt an Puck, und einer ist wirklich unentschieden – wenn jede Reihe in die gleiche Richtung zeigen würde, wäre die Tabelle nicht lesenswert.

Was du baustBesserer Ausgangspunkt
Ein React-KomponentenkonfiguratorPuck
Ein Editor für dein React-DesignsystemPuck
Ein hochgradig maßgeschneidertes, React-natives BearbeitungserlebnisPuck
Ein Marketing-Seiten-BuilderGrapesJS
Ein Page Builder in Ihrem SaaS-ProduktGrapesJS
Ein kundenorientierter Website-BuilderGrapesJS
Ein E-Mail-BuilderGrapesJS
Ein framework-unabhängiger visueller EditorGrapesJS
Eine visuelle Bearbeitungsfläche für einen kopflosen CMSBeide

Wenn du noch nicht sagen kannst, welche Zeile dein Produkt beschreibt, ist die Wahl eines Editors verfrüht. Schreibe die drei Dinge auf, die deine Nutzer ändern können, und die Antwort löst sich meist von selbst.

SaaS

Einen visuellen Editor in deinen SaaS einbauen?

Dies ist der Abschnitt, der verhindert, dass der Rest der Seite zu vielversprechend wird. GrapesJS stellt die Bearbeitungsebene bereit. Ihr SaaS besitzt weiterhin Authentifizierung, Autorisierung, Persistenz, Abrechnung, Veröffentlichung und Geschäftslogik – und das ist die größere Hälfte des Projekts.

Dein SaaS besitzt

8-Aufgaben

Alles, was es zu einem Produkt und nicht zu einem Editor macht.

  • Authentifizierung und Sitzungen
  • Organisationen und Teammitgliedschaft
  • Rollen und Berechtigungen
  • Abrechnung, Pläne und Ansprüche
  • Ihre Datenbank und Ihr Datenmodell
  • Veröffentlichung und Hosting dessen, was Nutzer bauen
  • Versionierung, Entwürfe und Rollback
  • Prüfungsspuren und unterstützende Werkzeuge

GrapesJS bietet

5-Aufgaben

Die Bearbeitungsebene konfiguriert man als dokumentierte Module.

  • Leinwand und Komponentenbaum
  • Blöcke, Ebenen, Stile und Assets
  • Responsive Bearbeitung und Gerätevorschau
  • Commands, rückgängig machen und neu machen
  • Projektdaten rein, Projektdaten raus

Du baust trotzdem

6-Aufgaben

Die Integration zwischen beiden – das eigentliche Projekt.

  • Deine eigene Komponente und Blockbibliothek
  • Editor UI mit deinem Produkt abgestimmt
  • Speicher mit deinem API und Mietmodell verbunden
  • Asset wird in deinen eigenen Speicher hochgeladen
  • Berechtigungsbeschränkung von Editor-Befehlen
  • Die Publizierungspipeline und die Vorschau-URLs
Designsystem

Baue den Editor um dein Design-System herum

Das ist der Teil, den Puck standardmäßig richtig macht, und der Teil, bei dem eine GrapesJS-Integration bewusst sein muss. Ihre Nutzer sollten mit den Komponenten und Blöcken arbeiten, die für Ihr Produkt sinnvoll sind, und nicht mit generischen Seitenbau-Primitiven.

  • Marketing-Abschnitte

    Die Abschnitte, aus denen eine Landingpage tatsächlich besteht.

    Blöcke im Panel

    • Hero
    • Pricing
    • CTA
    • Testimonials
  • Produktoberflächen

    Wiederverwendbare Chrom- und interaktive Teile.

    Blöcke im Panel

    • Product Card
    • Navigation
    • Forms
    • Footer
  • Handelsblöcke

    Storefront-spezifische Komponenten mit eigenen Daten.

    Blöcke im Panel

    • Collection Grid
    • Cart Summary
    • Checkout Steps
    • Badges

In GrapesJS sind das Komponententypen, die mit addType() registriert und über Block Manager freigegeben werden, wobei traits für die Requisiten, die ein Nutzer ändern kann, berücksichtigt. Die Palette auf das eigene System einzuschränken, sorgt dafür, dass die Ausgabe brandtreu bleibt, ohne sie danach zu kontrollieren.

Durchsuche Blöcke und Presets
Jenseits von Webseiten

Brauchen Sie mehr als nur einen Webseiten-Builder?

Wenn Ihre Roadmap Newsletter, CRM-Vorlagen, Marketingautomatisierung, transaktionale Vorlagen oder einen kundenorientierten E-Mail-Builder enthält, kann derselbe Editor-Kern mit E-Mail- und MJML-Tools erweitert werden. E-Mail-Rendering ist eine eigene Disziplin: Kein Editor garantiert universelle Kundenkompatibilität, und die finalen Vorlagen müssen weiterhin bei echten Kunden getestet werden.
Your SaaSGrapesJS
  • Web Page Builder
  • Email BuilderDie E-Mail-Filiale fährt fort:MJMLEmail HTML
Probier es mal

Probier GrapesJS aus, bevor du umsteigst.

Vier veröffentlichte Editoren, alle mit demselben Kern. Nichts lädt, bis man klickt, also bleibt die Seite schnell.

Vollbild öffnen

Die eigene Demo des GrapesJS-Projekts – die kostenlose Baseline mit dem vollständigen Standard-Panel-Set.

grapesjs.com/demo.htmlKostenlos

Lädt eine externe Demo in einem iframe

Ökosystem

Erweitere deinen GrapesJS-Editor

Gruppiert nach dem, was du baust. Jede Karte unten ist ein echtes Angebot – Name, Preis und Vorschaubild stammen direkt aus dem Katalog, daher kann hier nichts ein Plugin bewerben, das nicht existiert.

Bündel

Wo Teams normalerweise starten

Vier Ausgangspunkte nach Produkttyp. Jedes Angebot ist echt und bepreist live aus dem Katalog.

Die angezeigten Preise sind aktuelle Katalogpreise.

Migration

Migration von Puck zu GrapesJS

Puck und GrapesJS verwenden unterschiedliche Inhalts- und Editor-Modelle, daher ist eine Migration eine Datenmodell-Transformation und kein Paketersatz. Alles unten beschrieben diese Transformation.

Puck

Deine Konfiguration plus die Requisiten jeder platzierten Komponente.

  • Configuration
  • Component Props
  • JSON Data
GrapesJS

Ein Projektdokument, das Struktur, Stil, Medien und den Zustand des Editors abdeckt.

  • Components
  • Styles
  • Assets
  • Pages
  • Editor State
  • Storage

Bestehende Inhaltsmodelle und Editor-Konfigurationen müssen zugeordnet, nicht portiert werden. Die nächsten beiden Abschnitte zeigen die Zuordnung und die Roadmap.

Kartierung

Von Puck-Komponenten zu GrapesJS-Komponenten

Jede Seite hat ihren eigenen Vokabular für dieselbe Idee: etwas, das Nutzer platzieren können, und die Teile davon können sie bearbeiten. Eine Migration ist die Transformation zwischen beiden.

Puck
  • Component
  • Props
  • Fields
  • Render
Migrationsschicht

Eine Transformation, die man einmal pro Bauteiltyp schreibt. Es gibt keinen automatischen Konverter – das ist die Arbeit.

GrapesJS
  • Component
  • Traits
  • Attributes
  • Blocks
  • Commands
  • Storage

Was muss kartiert werden

  • Komponenten

    Jeder Puck-Komponententyp wird zu einem GrapesJS-Komponententyp.

  • Editierbare Felder

    Puck-Felder werden zu traits, Attributen oder editierbaren Kindkomponenten.

  • Requisiten und Defaults

    defaultProps werden auf die Standardwerte des Komponentenmodells abgebildet.

  • Validierung

    Feldbeschränkungen fließen in Merkmaledefinitionen oder eigene Proben ein.

  • Rendering

    Eine React-Renderfunktion wird zu Markup, das die Leinwand hosten kann.

  • Blöcke

    Was in der Konfiguration implizit war, wird zu einer expliziten Blockregistrierung.

  • Gespeicherte Inhalte

    Bestehende Puck JSON muss in Projektdaten umgewandelt werden.

  • Editor UI

    Panels, Felder und Overrides werden neu konfiguriert, nicht portiert.

Der Migrationsaufwand hängt von der Anzahl der Komponenten, deinem bestehenden Inhaltsschema, eventuellem Verhalten eines benutzerdefinierten Editors und deinen Integrationen ab. Eine Handvoll einfacher Komponenten ist eine ganz andere Aufgabe als eine große Bibliothek mit maßgeschneiderten Feld-UIs.

Beispiel

Beispiel: Migration einer hero-Komponente

Ein konzeptuelles Vorher-Nachher-Bild, vereinfacht, um die Form der Abbildung darzustellen. Behandle die exakte Feld-zu-Merkmal-Entsprechung als illustrativ und nicht als universelle automatische Umwandlung.

Puck: Konfiguration + Rendernjsx
// Puck: a component is configuration + a React render function.
// Field types are documented at puckeditor.com/docs/api-reference/fields
const config = {
  components: {
    Hero: {
      fields: {
        title: { type: 'text' },
        description: { type: 'textarea' },
        image: { type: 'text' },
      },
      defaultProps: {
        title: 'Ship faster',
        description: 'The visual editor your team already knows.',
        image: '/hero.png',
      },
      render: ({ title, description, image }) => (
        <section className="hero">
          <img src={image} alt="" />
          <h1>{title}</h1>
          <p>{description}</p>
        </section>
      ),
    },
  },
};
GrapesJS: Bauteiltyp + Blockjs
// GrapesJS: a component type owns its markup, its editable traits and how it
// is exposed to the canvas. Traits are the closest analogue to Puck fields.
editor.Components.addType('hero', {
  model: {
    defaults: {
      tagName: 'section',
      attributes: { class: 'hero' },
      traits: [
        { name: 'title', type: 'text', changeProp: true },
        { name: 'description', type: 'text', changeProp: true },
        { name: 'image', type: 'text', changeProp: true },
      ],
      components: [
        { type: 'image' },
        { tagName: 'h1', type: 'text', content: 'Ship faster' },
        { tagName: 'p', type: 'text', content: 'The visual editor…' },
      ],
    },
  },
});

// A block is what makes the type draggable from the panel. Puck derives this
// from the config; in GrapesJS it is a separate, explicit registration.
editor.Blocks.add('hero-block', {
  label: 'Hero',
  category: 'Sections',
  content: { type: 'hero' },
});

Migration von Inhalten, die du bereits hast

Die Konfiguration ist nur die Hälfte davon. Alles, was deine Nutzer bereits gespeichert haben, ist Puck JSON, und es muss durchgelaufen und in Komponenten umgewandelt werden, die deine neuen Typen verstehen.

Migration von Inhalten, die du bereits hastjs
// Existing Puck content is a JSON tree of { type, props } nodes. Migrating it
// means walking that tree and emitting the GrapesJS component definitions your
// new types understand — a transform you write once, per component type.
function puckNodeToGjs(node) {
  const map = {
    Hero: ({ title, description, image }) => ({
      type: 'hero',
      title,
      description,
      image,
    }),
    // …one entry per component type in your Puck config
  };

  const toGjs = map[node.type];
  if (!toGjs) throw new Error(`Unmapped Puck component: ${node.type}`);
  return toGjs(node.props);
}

// Puck stores content under `data.content`; `data.root` holds page-level props.
const components = puckData.content.map(puckNodeToGjs);
editor.setComponents(components);

Konzeptionelles Beispiel. Feldtypen, Eigenschaftsdefinitionen und das genaue Komponentenmodell hängen von deinen eigenen Komponenten ab.

Fahrplan

Eine praktische Migration von Puck zu GrapesJS

  1. 1
    Schritt 1

    Inventar

    Listen Sie auf, was existiert: Puck-Komponenten, deren Felder, Ihre Inhaltstypen, das gespeicherte JSON, den Renderer und den Veröffentlichungsfluss. Die meisten Überraschungen bei einer Migration finden Sie in dieser Liste.

  2. 2
    Schritt 2

    Kartenkomponenten

    Entscheide die Entsprechung, bevor du Code schreibst: Puck-Komponente zu GrapesJS-Komponententyp, Puck-Feld zu Trait, Attribut oder benutzerdefiniertes UI, Puck-Layout zu Komponentenstruktur, Puck-Daten zu Projektdaten.

  3. 3
    Schritt 3

    Baue den Editor UI neu auf

    Erstelle nur die Benutzeroberfläche, die deine Nutzer tatsächlich nutzen. Eine Migration ist der günstigste Zeitpunkt, um die Panels zu entfernen, die niemand geöffnet hat.

  4. 4
    Schritt 4

    Migrierung bestehender Inhalte

    Gehen Sie durch den gespeicherten Puck-Baum und senden Sie die Komponentendefinitionen, die Ihre neuen Typen verstehen. Behalten Sie die Transformation in der Versionskontrolle – Sie werden sie mehr als einmal ausführen.

  5. 5
    Schritt 5

    Führen Sie beide parallel aus

    Wo das Risiko hoch ist, lass den alten Editor alte Inhalte rendern, während der neue neue Inhalte übernimmt. Duales Rendern verschafft dir die Möglichkeit, aufzuhören.

  6. 6
    Schritt 6

    Validieren

    Vergleichen Sie visuelle Ausgaben, responsives Verhalten, Veröffentlichung, gespeicherte Daten und die tatsächlich durchgeführten Arbeitsabläufe Ihrer Nutzer – nicht nur, dass der Editor lädt.

  7. 7
    Schritt 7

    Schnitt über

    Überweise die Nutzer, sobald der Vergleich sauber ist, wobei der alte Pfad noch erreichbar ist, bis der neue einen vollständigen Nutzungszyklus durchlaufen hat.

Kein Tor

Der Migrationsleitfaden ist diese Seite

Alles oben Genannte ist der Leitfaden – keine E-Mail erforderlich, nichts gesperrt, kein versprochener Zeitrahmen. Der Migrationsaufwand hängt davon ab, wie viele Komponenten du hast, wie viel benutzerdefiniertes Editor-Verhalten du gebaut hast und wie viel Inhalt bereits existiert, daher nennen wir keine Dauer, die wir nicht unterstützen können.

Konzeptabbildung

Puck-Konfiguration, Felder, Requisiten und Render, abgestimmt auf GrapesJS-Komponententypen, traits, Blöcke und Speicher.

Komponenten-Checkliste

Die acht Dinge, die pro Komponententyp abgebildet werden müssen, sind oben aufgeführt.

Datenmodell-Checkliste

Was Puck bleibt im Vergleich zu dem, was ein GrapesJS-Projekt enthält, und wo jedes Element landet.

React- und Next.js-Aufbau

Wie der Editor in einer React-App montiert wird und was das in Next.js bedeutet.

Stil und Asset-Aufbau

Welche Subsysteme zuerst konfiguriert werden, damit der Editor fertig und nicht roh wirkt.

Einführung und Qualitätssicherung

Migriere jeweils eine Oberfläche, behalte die Originale und vergleiche die gerenderten Ausgaben mit der Quelle.

Migrationsdienste

Willst du die Migration nicht selbst bauen?

Wir können Ihnen helfen, Ihre bestehenden Puck-Komponenten und Ihr Inhaltsmodell einer produktionsbereiten GrapesJS-Implementierung zuzuordnen. Umfang und Zeitplan werden nach der Überprüfung der Architektur vereinbart – wir geben keine Zeitpläne an, bevor wir den Code gesehen haben.

  1. 1
    1

    Architektur-Review

    Wir lesen deine Puck-Konfiguration, das Inhaltsmodell und die Editor-Anpassungen und schreiben auf, was tatsächlich bewegt werden muss.

  2. 2
    2

    Komponentenabbildung

    Jede Puck-Komponente wird zu einem spezifizierten GrapesJS-Komponententyp mit ihrem traits, Block und Einschränkungen.

  3. 3
    3

    Datenmigration

    Eine Transformation für Ihre gespeicherten Inhalte, ausgeführt mit Ihren echten Daten statt mit einer Stichprobe.

  4. 4
    4

    Benutzerdefinierter Editor UI

    Die Panels, Chrome und Interaktionen, die Ihre Nutzer brauchen – gestaltet, um zu Ihrem Produkt zu passen, nicht zur Standard-Demo.

  5. 5
    5

    Plugins und Erweiterungen

    Marktplatz-Plugins, wo sie passen, benutzerdefinierte Plugins, wo sie nicht passen.

  6. 6
    6

    Backend-Integration

    Speicher, Assets, Berechtigungen und Veröffentlichung sind verkabelt in deine eigene API und Datenbank.

  7. 7
    7

    Tests und Einsatz

    Output-Vergleich, reaktionsschnelle Überprüfungen und ein Cutover-Plan mit einem Rückweg.

FAQ

Puck und GrapesJS: häufige Fragen

Was ist die beste Alternative zu Puck?

Es gibt keine einzige beste Alternative – es kommt darauf an, wofür dein Editor gedacht ist. GrapesJS ist die stärkste Option, wenn du eine breitere visuelle Editor-Basis mit Leinwand, Blöcken, Stilen, Ebenen, Assets und responsivem Editing brauchst. Craft.js ist im Geiste näher an Puck als React-First-Framework. Wenn dein Editor wirklich ein React-Komponentenkonfigurator ist, ist die beste Alternative, bei Puck zu bleiben.

Ist GrapesJS eine Alternative zu Puck?

Ja, für eine bestimmte Art von Produkt. Beide ermöglichen es, einen visuellen Editor in der App zu bauen, beide sind Open Source und selbstgehostet. Sie unterscheiden sich im Ausgangspunkt: Puck bearbeitet einen React-Komponentenbaum, GrapesJS bearbeitet ein visuelles Dokument. GrapesJS ist eine echte Alternative, wenn man das visuelle Dokumentmodell benötigt; es passt schlechter, wenn React-Komponenten das Inhaltsmodell sind.

Was ist der Unterschied zwischen Puck und GrapesJS?

Puck ist ein React-erster Editor, der darauf ausgerichtet ist, eigene React-Komponenten zu erstellen und zu konfigurieren: Seine Daten sind JSON, die Komponententypen und Requisiten beschreiben, und das Rendering erfolgt über React. GrapesJS ist eine breitere Grundlage für visuelle Editoren, die auf einem visuellen Dokument basiert, mit dokumentierten Modulen für Komponenten, Blöcke, Stile, Schichten, Assets, Geräte, Befehle und Speicher sowie HTML und CSS als erstklassige Ausgabe.

Ist Puck nur für React?

Puck läuft innerhalb von React – React ist die Laufzeit sowohl für den Editor als auch für die gerenderte Ausgabe. Die Daten sind schlicht JSON, sodass ein anderes System sie lesen könnte, aber das Bearbeitungs- und Rendererlebnis ist von Natur aus React-nativ. Das ist eine Stärke von React-Produkten und eine Einschränkung, wenn derselbe Editor irgendwo laufen muss, wo React nicht der Host ist.

Kann GrapesJS mit React funktionieren?

Ja. GrapesJS liefert einen offiziellen React-Wrapper, @grapesjs/react, aus, und der Kerneditor ist framework-agnostisch, sodass er wie jede andere clientseitige Komponente in einer React- oder Next.js-Anwendung montiert wird. Siehe die GrapesJS React-Integrationsanleitung für die Montagemuster.

Kann GrapesJS React-Komponenten verwenden?

Man kann React-Komponenten in einen GrapesJS-Editor integrieren, aber nicht so wie Puck. GrapesJS-Komponententypen besitzen ihr Markup im Canvas-Dokument, daher wird eine React-Komponente typischerweise als GrapesJS-Typ mit dem passenden traits gespiegelt oder über eine benutzerdefinierte Ansicht in die Leinwand gerendert. Es handelt sich um eine Integrationsschicht und nicht um das native Modell.

Kann ich GrapesJS mit Next.js verwenden?

Ja. GrapesJS ist ein clientseitiger Editor, der eine iframe-Leinwand besitzt, daher muss er von einer Client-Komponente montiert werden. Im Pages Router bedeutet das meist einen dynamischen Import mit deaktiviertem SSR; im App Router reicht eine Client-Komponente aus.

Kann Puck HTML und CSS bearbeiten?

Nicht als Primärmodell. Puck bearbeitet Komponentenrequisiten, und das Markup und Styling stammen von den React-Komponenten, die du geschrieben hast. Natürlich kannst du eine Komponente bauen, die rohes Markup oder Klassennamen akzeptiert, aber es gibt keine dokumentierte visuelle HTML- oder CSS-Bearbeitungsfläche, so wie GrapesJS ein Style Manager und ein editierbares Dokument bereitstellt.

Ist GrapesJS für SaaS-Produkte geeignet?

Ja – es ist darauf ausgelegt, eingebettet zu werden, und dient als Bearbeitungsschicht innerhalb von SaaS-Produkten. Es stellt den Editor zur Verfügung, nicht das Produkt: Authentifizierung, Organisationen, Berechtigungen, Abrechnung, Persistenz und Veröffentlichung bleiben Ihre Aufgabe.

Kann ich mit GrapesJS einen Page Builder bauen?

Ja. Das ist der zentrale Anwendungsfall: eine Leinwand, eine Blockpalette, Stilsteuerungen, Ebenen, Assets, responsive Geräte sowie HTML- und CSS-Ausgaben. Was du hinzufügst, ist deine eigene Blockbibliothek, Editor UI und Speicher.

Kann ich mit GrapesJS einen White-Label-Editor erstellen?

Ja. Der Editor UI ist austauschbar – Panels, Buttons und Ansichten können getauscht oder neu aufgebaut werden, und es gibt kein Vendor-Branding, das du anzeigen musst. Multi-Tenant-Branding, Blocksätze pro Tenant und Berechtigungen sind Dinge, die deine Anwendung darüber implementiert.

Kann ich mit GrapesJS einen E-Mail-Editor bauen?

Ja, ich nutze Ökosystem-Plugins für E-Mail-Blöcke sowie MJML-Autoren und -Export. E-Mail-Rendering ist eine eigene Disziplin: Kein Editor kann eine universelle E-Mail-Client-Kompatibilität garantieren, daher müssen Templates weiterhin in den Clients getestet werden, die deine Empfänger tatsächlich verwenden.

Kann ich Puck-Inhalte auf GrapesJS migrieren?

Ja, indem man es transformiert. Puck speichert einen JSON-Baum mit Komponententypen und Requisiten; GrapesJS speichert Projektdaten, die Komponenten, Stile, Assets und Seiten beschreiben. Migration bedeutet, den Puck-Baum zu durchlaufen und die GrapesJS-Komponentendefinitionen zu liefern, die deine neuen Typen verstehen – eine Transformation, die du einmal pro Komponententyp schreibst.

Gibt es einen automatischen Puck-zu-GrapesJS-Wandler?

Nein. Es gibt keinen automatischen Konverter, und jede Seite, die einen behauptet, übertreibt das. Die beiden Editoren bestehen unterschiedliche Dinge bei, daher hängt das Mapping von deinen Komponenten und deinem Inhaltsschema ab. Was wiederverwendet werden kann, ist die Form der Transformation, die auf dieser Seite gezeigt wird.

Wie schwierig ist eine Puck-Migration?

Es hängt von der Anzahl der Komponententypen ab, wie viel benutzerdefiniertes Editor-Verhalten du gebaut hast, wie viel Inhalt bereits existiert und wie sehr dein Renderer mit React gekoppelt ist. Wir veröffentlichen keine Dauer, da eine Migration von sechs Komponenten mit sauberen Daten und einer von sechzig mit handbearbeitetem JSON nicht dasselbe Projekt ist.

Kann ich mein bestehendes React-Designsystem mit GrapesJS verwenden?

Ja, aber man verbindet sie absichtlich. Typischerweise registriert man pro Design-System-Komponente einen GrapesJS-Komponententyp, stellt die Requisiten offen, die Nutzer als traits ändern können, und fügt jedes einzelne dem Block Manager hinzu. Diese Einschränkung sorgt dafür, dass die Ausgabe brandgetreu bleibt.

Kann ich GrapesJS mit meiner eigenen Datenbank verbinden?

Ja. Der Storage Manager kann so konfiguriert werden, dass er über den eigenen API liest und schreibt, sodass Projektdaten in deiner Datenbank in jeder beliebigen Form leben. Nichts muss über einen Drittanbieterdienst laufen.

Kann ich GrapesJS selbst hosten?

Ja. Es ist ein npm-Paket, das du in deine eigene Anwendung einbindest – es gibt keinen gehosteten Dienst, kein Konto und keine Lizenz pro Sitz. Der Kern ist BSD-3-Clause-lizenziert und der React-Wrapper ist MIT.

Muss ich GJS.Market-Plugins verwenden?

Nein. GrapesJS ist vollständig nutzbar ohne Marktplatz-Plugins, und die Kernmodule sind kostenlos und Open Source. Plugins existieren, damit man eine Funktion kaufen kann, anstatt sie zu bauen – eine Editor-UI-Shell, E-Mail-Tools, eine Blockbibliothek –, wenn sich der Tausch für dein Team lohnt.

Sollte ich von Puck zu GrapesJS wechseln?

Nur wenn dein Editor das Komponenten-Konfigurator-Modell überwachsen ist. Wenn Nutzer nach visuellem Styling, Blöcken, Ebenen, Assets, Vorlagen, responsiven Steuerungen oder nicht-React-Ausgaben fragen, spart ein breiteres Fundament Arbeit. Wenn dein Editor deine React-Komponenten zusammenstellt und das auch weiterhin tun sollte, ist es die richtige Entscheidung, bei Puck zu bleiben.

Nächster Schritt

Aufbau über den Komponenteneditor hinaus

Wenn Puck bereits zu deinem React-Komponentenmodell passt, gibt es vielleicht keinen Grund zu wechseln. Aber wenn dein Editor zu einem vollständigen visuellen Produkt wird, bietet dir GrapesJS eine breitere Grundlage, auf der du aufbauen, anpassen und erweitern kannst.

Entwickler

Probier GrapesJS

Öffne einen Live-Editor, lies dann die Dokumentation und baue auf. Nichts zu installieren, um mit der Suche anzufangen.

Eine Live-Demo eröffnen
Teams

Durchsuchen Sie GJS.Market-Plugins

Erweitern Sie den Editor um das, was Sie sonst bauen würden: UI-Shells, Blöcke, E-Mails, Assets und Speicher.

Plugins durchsuchen
SaaS und Unternehmen

Holen Sie sich Hilfe bei der Migration

Wir prüfen Ihre Puck-Implementierung, entwerfen die Zielarchitektur und führen die Migration mit Ihnen durch.

Sprich mit einem Experten