Owned adapter
The live site walks stored JSON with our renderer. No @puckeditor imports on the hot path.
One component registry powers both the Puck editor and our own renderer. The published site never runs Puck code.
Read the about pageEvery 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.
The live site walks stored JSON with our renderer. No @puckeditor imports on the hot path.
Puck is confined to /edit and pinned exactly, so an upgrade can only ever break the editor.
Every envelope carries a schemaVersion; breaking prop changes ship with a migration.