Keep your UX
Your customers never leave your product. Editing is one more screen in the app they already know, not a hand-off to somewhere else.
PageKit — the self-hosted GrapesJS site builder, sold as source. Get early access
Give your customers a visual editor inside your existing product — with your branding, your backend, your permissions and your publishing workflow.
The editor is a layer inside your application, not a platform you hand your users over to. Everything around it — accounts, permissions, data, publishing — stays exactly where it is today.
Your application
The product your customers already log into
Your API
The endpoints the editor talks to
Your database
Where the content actually lives
Your publishing infrastructure
How the finished page reaches the world
Sending customers to an external builder costs you the session, the brand and the data. Embedding keeps all three.
Your customers never leave your product. Editing is one more screen in the app they already know, not a hand-off to somewhere else.
Panels, icons, typography and terminology are all yours to change, so the editor reads as a native part of your application.
Projects, assets and content are stored in your own infrastructure, under your retention, residency and backup rules.
The editor calls the endpoints you already have. No parallel data model, no syncing between two sources of truth.
Draft, review and publish stay in your pipeline. The editor produces content; your infrastructure decides when it goes live.
Open-source core, self-hosted, no seat pricing and no forced editor. Nothing about your roadmap depends on someone else's.
Some of this is GrapesJS core and works the moment the editor mounts. Some of it is a plugin. Some of it stays your application's job — each card says which.
Core
Drag, drop, select and edit content directly inside your application. Part of the editor core — available as soon as you mount it.
Core + plugins
Reusable sections and components. Define your own from your product's markup, or install a ready-made set.
Browse block pluginsCore
Typography, spacing, colour and responsive breakpoints through the Style Manager. Restrict it to the properties your design system allows.
Core + plugins
Point the editor at your own media library, or connect a hosted one with an asset plugin.
Browse asset pluginsCore + plugins
Save projects to your API and database through the remote Storage Manager. Plugins add autosave, recovery and hosted backends.
Browse storage pluginsCore + plugins
Multiple pages per project. Core supports the page model; plugins add the management UI your users see.
Browse multi-page pluginsYour app
Export HTML and CSS, then hand it to your own draft and publish pipeline. The editor never publishes on your behalf.
Your app
Which users and roles can edit what is decided by your application, not the editor. Gate the route, then narrow the editor's panels to match the role.
Install
Add the editor to your existing frontend. One dependency, no service to sign up for, no key to provision.
Mount
Initialise GrapesJS on a container inside your own app shell. It renders where you put it and inherits the page around it.
Connect your storage
Point the remote Storage Manager at your own endpoints so every save lands in your database, authenticated by your session.
Add plugins
Install only what your product needs — blocks, pages, assets, export, AI — and register your own components as blocks.
Publish
Read the generated HTML and CSS out of the editor and push it through the draft, review and publish pipeline you already run.
Start with the editor core. Add only the functionality your product needs.
Five steps of real code. Framework-agnostic on purpose — the React and Next.js specifics are one link away.
Installation
npm install grapesjsInitialization
import grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';
// Mount the editor on any container inside your own app shell.
const editor = grapesjs.init({
container: '#editor',
height: '100%',
fromElement: false,
});Storage
const editor = grapesjs.init({
container: '#editor',
// Persist to your API, not to a third-party service.
storageManager: {
type: 'remote',
autosave: true,
stepsBeforeSave: 10,
options: {
remote: {
urlStore: '/api/projects/123',
urlLoad: '/api/projects/123',
// Your session, your authorization rules.
fetchOptions: { credentials: 'include' },
},
},
},
});Plugins & custom blocks
import grapesjs from 'grapesjs';
import blocksBasic from 'grapesjs-blocks-basic';
const editor = grapesjs.init({
container: '#editor',
plugins: [blocksBasic],
pluginsOpts: {
[blocksBasic]: { flexGrid: true },
},
});
// Or register your own product's components as blocks.
editor.Blocks.add('pricing-table', {
label: 'Pricing table',
category: 'Your product',
content: '<section class="pricing">…</section>',
});Publishing
// Publishing stays in your infrastructure.
async function publish(projectId) {
const html = editor.getHtml();
const css = editor.getCss();
await fetch(`/api/projects/${projectId}/publish`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ html, css, status: 'published' }),
});
}Read the stack from top to bottom and note how much of it is already yours. GJS.Market supplies one layer.
Frontend
The framework you already use
Embedded editor
GrapesJS plus the plugins you choose
Browse pluginsAPI
Your REST or GraphQL API
Database
Your database, your schema
Publishing
Your infrastructure
Every plugin below is a real listing on GJS.Market, with its live price. Install what your product needs and skip the rest.
Four starting points, assembled from listings that exist today. Prices are live from the catalogue.
Pages inside your dashboard
A full site-creation product
Campaigns and transactional mail
Visual editing over structured content
Build a CMS editorPrices come from the marketplace at build time and may change. Every plugin is optional — the editor core is free.
The same editor core, pointed at a different job by the plugins and constraints you put around it.
Let customers create and edit pages inside your dashboard, without ever leaving the product they pay for.
SaaS page builderGive content teams visual editing while your backend keeps the structured data it needs.
Headless CMS editorAllow users to build landing pages and campaign assets next to the audiences they already manage.
Landing page builderShip a complete customer-facing site creation experience on top of an editor you did not have to write.
WYSIWYG page builderEmbed a visual email builder into the campaign workflow your users already follow.
Email template builderGenerate a first draft with AI, then let users refine it visually instead of re-prompting.
AI pluginsGive internal teams a visual editor for the surfaces they own, without building one from scratch.
No-code builder for developersAdd a visual layer on top of the architecture you already committed to, rather than replacing it.
Open-source page builderGrapesJS runs in the browser and mounts on a DOM node, so the integration is a thin wrapper in whatever you already ship.
Build a visual editor directly into your React application.
View React page builderEmbed the editor into a Next.js app, loaded on the client so it never touches SSR.
View Next.js guideMount the editor from a Vue component and manage it through the lifecycle hooks.
View Vue page builderInitialise the editor from an Angular component and wire it to your services.
View Angular builderNo framework at all — a script tag and a container element are enough.
View HTML drag & drop builderA visual editor is not one feature. It is a dozen subsystems that all have to work together, and then keep working as browsers change.
Subsystems a homemade editor implies
Build from scratch
Months of engineering
GrapesJS + GJS.Market
Start in days
Same destination. One route spends your roadmap on editor infrastructure; the other spends it on your product.
It was designed to be embedded — which is why the extension points you need are already there.
The core is released under the BSD-3-Clause licence — permissive, commercial-friendly, and readable when you need to know exactly what it does.
The editor runs inside your own application infrastructure. There is no service to call and no uptime that is not already yours.
Custom components, blocks, commands, panels and plugins are first-class. Your product's UI can become editable content.
React, Next.js, Vue, Angular and vanilla JavaScript. The official @grapesjs/react wrapper is MIT licensed.
Your application, your data and your infrastructure stay under your control. Output is plain HTML and CSS you can render anywhere.
Extend the editor with 100+ listings on GJS.Market instead of writing each capability yourself.
26k+
GitHub stars
100+
Plugins on GJS.Market
10 years
Active development
$0
License fee, always
Your users should feel like they're using your product — not a third-party editor.
Explore white-label page builderStart with the open-source GrapesJS editor and extend it with the plugins your product needs.
Storage, blocks, pages, assets, export and AI — production-ready listings with live prices.
Browse pluginsInstall the open-source core, mount it in your app and see the canvas running before you buy anything.
Start with GrapesJSEditor embedding, API integration, white-label theming and custom blocks, delivered as a scoped engagement.
Need help integrating?Related reading on embedding, branding and framework integration: