packages/shared/src/blocks/ (schemas + field metadata) and rendered by packages/blocks/src/blocks/ (React components + CSS).
When to use built-ins vs. custom blocks
- Use the built-ins when you want a starter content model and don’t need to match an existing design system. They cover the common marketing/landing patterns and are fully wired into the AI planner, asset manager, and preview overlay.
- Bring your own when you have an existing component library or design tokens you need to preserve. See Custom Blocks — you can also mix and match (built-ins + custom in one manifest).
Catalogue
Content
Conversion
Media
Layout
Navigation (chrome)
These blocks are structurally pinned — they cannot be added, moved, or removed by the AI. Every page has exactly one of each, and they render as global chrome.Field types you’ll see
Each block declares per-field metadata (kind) that drives editor UI, AI behavior, and inline editability:
See Block System Architecture for the full vocabulary and the lifecycle from definition to render.
Extending the set
There are two extension paths:Add a built-in block
Contribute a new block type to the shared registry. Best for additions that belong in every site running Avocado Studio.
Register custom blocks
Author your own blocks in your site’s repo and expose them via a manifest. Best for site-specific component libraries.