Puck 0.20: Inline text, overlay portals & resizable sidebars | Puck

4 min read Original article ↗

Puck 0.20 introduces inline text editing, overlay portals for interacting with components in the preview, resizable sidebars, and several other improvements that make the editor more flexible for both users and developers.

GIF showing the editor with resizable sidebars and inline text editing

In this post, we’ll go over everything new in Puck 0.20 and how you can start using it:

If you’re upgrading from an earlier version, make sure to review the upgrade guide for any breaking changes and migration tips.

You can also find more in-depth documentation for each new feature in our docs.

Inline text editing

Inline text editing allows you to edit , , and fields directly in the preview without using the sidebar.

You can enable it by setting the property to in the field config:

GIF showing a textarea field being edited inline

FieldTransforms API: Modify field values

The FieldTransforms API lets you modify the value that each field type provides to component render functions when used in the editor.

You can specify a transform function for each known field type, or introduce completely new ones.

Use this to implement custom inline fields, such as rich text fields.

GIF showing fieldTransforms modifying the value of a text field

New function:

By default, Puck adds an overlay that covers hovered or selected components in the canvas, blocking direct interaction with their content.

allows you to exclude specific elements from that overlay so they remain interactive. This is useful for scenarios like rich text editing or interactive slots (e.g. tabs).

For example, here’s how you can use it to create an accordion with a collapsible slot:

GIF showing a collapsible slot in action

New function:

is a utility for setting the value of a key deep within an object. This is useful when working with nested data, such as implementing field transforms.

New override:

The override lets you customize how the overlay renders when a component is hovered or selected in the editor.

This is useful for adding custom styles or behavior that better align with your application’s design.

GIF showing the editor with custom overlays on components

This was a contribution made by: @tlahmann

You can now resize the editor sidebars by dragging their borders.

GIF showing the editor with resizable sidebars

You can also access the current sidebar widths programmatically through the internal PuckAPI, which is useful for building custom UI components:

New bundle:

Puck now includes the bundle, which avoids importing additional CSS from third-party CDNs. By default, Puck will load the Inter font from a hosted CDN.

Use this instead of the standard CSS bundle if you need more control over your font, or need to avoid calling CDNs.

New CSS property:

By default, Puck uses the Inter typeface family loaded from a CDN.

To use a different or local font, you can now import the bundle and redefine the CSS property:

Image of the Puck editor using Times New Roman as its font

Migrate dynamic zones to slots

The function now supports the option. Use it to migrate component DropZone data where dynamic zone names (e.g., from iteratively rendered DropZones) don’t directly match slot names.

Add custom fields to Puck with overrides

You can now add custom field types to your Puck config using the override.

This was previously documented, but didn’t work correctly; now it’s fully supported.

GIF showing a custom checkbox field type in the editor

Use optional generics in the type

You can now type your Puck config using a single generic object.

This removes the need to stack multiple generics and lets you define only what you need. It also enables type safety and autocomplete for custom :

Use optional generics in the type

You can now type your component config using a single generic object.

This removes the need to stack multiple generics and lets you define only what you need. It also enables type safety and autocomplete for custom :

Use more types in and fields

and fields now support , , and values.

To upgrade your Puck application to 0.20, follow the upgrade guide for step-by-step instructions. It covers deprecated APIs, breaking changes, and common pitfalls.

You can find the full changelog, including bug fixes and known issues, in the GitHub release.

Learn more about Puck

If you’re interested in learning more about Puck, check out the demo or read the docs. If you like what you see, please give us a star on GitHub to help others find Puck too!