Build pages visually. Serve them with zero JavaScript.

One component registry powers both the Puck editor and our own renderer. The published site never runs Puck code.

Read the about page

What this is

Every page is a JSON envelope committed to git. It is validated against a single component registry, then server-rendered by an adapter this repo owns.

When you open the same page in the Puck editor, you edit the exact same components. There is no second implementation to drift out of sync.

Owned adapter

The live site walks stored JSON with our renderer. No @puckeditor imports on the hot path.

Exact-pinned Puck

Puck is confined to /edit and pinned exactly, so an upgrade can only ever break the editor.

Migration ladder

Every envelope carries a schemaVersion; breaking prop changes ship with a migration.

Placeholder banner for the Astro + Puck prototype
Published pages ship as static HTML with zero client-side framework JavaScript.