Puck 0.21 introduces AI page generation, rich text editing, a new interface for Plugins, and more.
Puck.0.21.Rich.Text.Example.mp4
This is a summary of the main new features and full changelog.
Read the full release post on our blog.
Summary
- Puck has moved: All packages have moved to the
@puckeditorscope on npm. See the upgrade guide for step-by-step migration instructions. - AI page generation: generate pages from your existing Puck config using Puck AI, now in open beta.
- Rich text editing: add a WYSIWYG editor that can be edited inline in the canvas or in the sidebar.
- Plugin Rail: a new left-side navigation bar that plugins can use to render dedicated UI in the sidebar.
Puck.Layout: use thePuckcomponent as a context provider for the internal Puck API while keeping the default editor UI.
Full changelog
Features
- add "as" API to change slot element type (1cec93c)
- add "richtext" field (301595f)
- add ActionBar.Separator component (410819e)
- add active API to IconButton (8116c86)
- add cache control to external fields (a5160e5)
- add delete hotkeys for removing components (20aafb6)
- add disabled option to ActionBar.Action (32d0666)
- add experimental full-screen canvas support (c15c4f8)
- add full-width viewport to fit to container (7373a6b)
- add getParentById for getting the parent data for a child id (38e79ba)
- add key parameter to force custom field remounting (ace4c8b)
- add parent to resolveData APIs and trigger resolveData on move (7c2f928)
- add Plugin Rail, a menu for plugins (86526e7)
- add puck ai option to create-puck-app (d1f05aa)
- add resolveDataById utility to Puck API (12f0a21)
- add resolveDataBySelector utility to Puck API (4f0b390)
- de-select component on second click (ccff0d8)
- enable modification of Puck height (538f7bf)
- export ConfigParams and ComponentConfigParams for convenience (0f9606c)
- expose default layout via Puck.Layout (4a8e38f)
- extend Plugin API with support for Plugin Rail (d68edca)
- improve mobile interface (3daa05e)
- provide metadata to resolveFields (6dae6cb)
- provide parent data to resolvePermissions API (1b69a8f)
- rename package to @puckeditor/core (d1c0d6a)
- support CSS units for minEmptyHeight in slots (79a2684)
- support dynamic props for default array items via function (6c44fdb)
- support extending all field types via declaration merging (26fd286)
- support extending ComponentConfig via declaration merging (3c46c44)
- support overrides for custom fields (89038d0)
- support React nodes in getItemSummary for array fields (73b98fb)
- support typing metadata via declaration merging (66c5aa3)
- use dashed outline for overlay portals (f79baa9)
- use next@^16.0.8 in create-puck-app (313bbb5)
Bug Fixes
- account for drags during slow resolveData on insert (dfecd01)
- account for drags during slow resolveData on update (304940a)
- add missing ref prop to Slot render types (ac9eba2)
- automatically set IDs for slots in root defaultProps (f5820ce)
- check the user provides a name in create-puck-app (b1de8bf)
- don't unmount sidebars on hide (ceebd0f)
- handle exits gracefully from create-puck-app (abfa3c3)
- memoize initialHistoryIndex and check the index provided by the user is not out of bounds (ec77dd9)
- mitigate CVE-2025-57822 in Next.js recipe (74d9a16)
- prevent empty objects from causing parent re-render (a4bfae4)
- prevent frame overflowing on small viewports when embedded (5c9515c)
- prevent valueOf errors due to fast-deep-equals (16a3eee)
- prioritize disableDrag in overlay portals (1df9dde)
- reset keystrokes when window is blurred (5333fc7)
- respect custom root label in breadcrumb navigation (de0baf3)
- respect ui changes in replace action (af2d5ac)
- restore valid type for renderDropZone prop (29ef713)
- retain overlay if dragRef changes (e310a17)
- run resolve permissions in slots (cf074bc)
- show title instead of undefined in React Router recipe (68f8542)
- use latest reference for onChange callback (b818cb1)
Performance Improvements
- don't remount slot when parent changes (a7a6599)
- eliminate unnecessary re-renders in fields (b633e3b)
- prevent re-rendering of user components on hover (a62292f)