A lightweight, extensible Import / Export plugin for @puckeditor/core, designed for modern frontend projects.
This plugin adds a clean UI panel to Puck that allows you to:
- Export editor content as JSON
- Import JSON back into the editor
- Hook into the process to transform blocks before import/export
- π Import / Export Puck content as JSON
- π οΈ Transform blocks before export and before import
- βοΈ React 18 / 19 compatible
- π§ͺ Fully typed with TypeScript
npm install @digital-borders/puck-plugin-import-exportPeer dependencies (must be installed in the host project):
npm install react @puckeditor/coreimport { createImportExportPlugin } from "@digital-borders/puck-plugin-import-export";const importExportPlugin = createImportExportPlugin({
onBeforeExport: (blocks) => {
// Example: remove readOnly flags
return blocks.map(({ readOnly, ...rest }) => rest);
},
onBeforeImport: (blocks) => {
// Example: filter out debug-only blocks
return blocks.filter((block) => block.type !== "DebugBlock");
},
});import { Puck } from "@puckeditor/core";
import "@digital-borders/puck-plugin-import-export/styles.css";
function Editor() {
return <Puck config={config} plugins={[importExportPlugin]} />;
}type ImportExportPluginOptions = {
onBeforeExport?: (blocks: ComponentData[]) => ComponentData[];
onBeforeImport?: (blocks: ComponentData[]) => ComponentData[];
};-
onBeforeExportCalled right before exporting data. Useful for cleanup, normalization, migrations, or filtering. -
onBeforeImportCalled right before importing data into Puck. Useful for schema migrations, ID regeneration, or compatibility fixes.
- React 18+
@puckeditor/core- A client-side environment (
"use client")
Build the library bundle:
pnpm build:libraryRun the demo app:
pnpm dev:demo- TypeScript
- React
- @puckeditor/core
- Vite (library build + demo)
- Tailwind CSS
- shadcn/ui
- Radix UI
Contributions are very welcome!
You can help by:
- Improving the UI/UX
- Adding template categories or grouping
- Adding persistence adapters
- Writing tests or documentation
- Proposing new plugin ideas
- Fork the repository
- Create a new branch
- Make your changes
- Open a pull request
MIT Β© Digital Borders
- Template preview thumbnails
- Remote template libraries
- Drag & drop insertion
- Template versioning
- Permissions & sharing
Built for the Puck ecosystem and inspired by real-world editor workflows.
If you find this plugin useful, consider giving the repo a βοΈ and sharing it with your fellow developers!

