Puck: The Open-Source Visual Editor for Your React Components
Ever get tired of the back-and-forth? You build a beautiful React component, hand it off, and then the requests start rolling in. "Can we make this text bigger?" "What if we moved that button?" You're stuck in a loop of small tweaks, pulling you away from the actual engineering work. What if you could give your team the power to make those content changes themselves, without them needing to call you every time or risk breaking the code?
That's the gap Puck aims to fill. It's an open-source visual editor that lets you or your content team visually edit React components and pages right on the page itself. Think of it as a headless CMS interface, but built directly into your React application. You define the editable components, and Puck provides the WYSIWYG (What You See Is What You Get) canvas to arrange and configure them.
What It Does
Puck is essentially a React library that renders a visual editor on top of your own React components. You start by defining a "schema" – a configuration that tells Puck about your components (like a HeroBanner or FeatureCard) and what properties (props) are editable (like title, description, or backgroundColour).
Once configured, Puck renders a live preview of the page. Users can click on any component to edit its props in a sidebar, drag to reorder components, or add new ones from a library. All the while, the output is clean, serializable JSON data that you save to your database and use to render the live site. Your React components remain the single source of truth for how things look and behave.
Why It's Cool
The clever part is how unobtrusive it is. Puck doesn't lock you into a proprietary framework or a specific hosting platform. It works with your existing component library and your existing stack (Next.js, Remix, Vite, etc.). You're not building in Puck; you're plugging Puck into your app.
This makes it incredibly flexible. You can use it to power a full-page builder for a marketing site, a flexible content area within a larger application, or even a structured editing experience for complex data objects. Because it outputs JSON, you have full control over how you store and render the final result. It's developer-first, giving you the control, while providing a polished, no-code interface to end-users.
How to Try It
The fastest way to see Puck in action is to check out the live demo. You can play with it right in your browser to get a feel for the editing experience.
If you want to integrate it into your own project, installation is straightforward. You can install it via npm:
npm install @measured/puck
The GitHub repository is the best place to start. It contains the full source code, comprehensive documentation, and several example projects to clone and run locally. The README will guide you through setting up your first editable component in just a few minutes.
Repository & Demo: github.com/puckeditor/puck
Final Thoughts
Puck feels like a practical solution to a very real problem. It doesn't try to do everything, but what it does—providing a clean visual layer for editing structured React content—it does very well. If you're a developer tired of being the content update bottleneck, or if you're looking for a more elegant way to hand over control for page composition, Puck is definitely worth an afternoon of experimentation. It might just save you from a lot of future "quick fix" tickets.
Follow us for more cool projects: @githubprojects
Repository: https://github.com/puckeditor/puck