chatblocks.json manifest at the root of its file set. The manifest is the contract between your code and the platform: it declares the format, the canvas footprint, what data flows in, and what the iframe is allowed to do.
The full Zod schema lives in packages/shared/src/manifest.ts. This page covers the shape; the schema there is the source of truth and what the server validates against.
Minimal manifest
A barebonescode block with no widget or data binding:
Top-level fields
Formats
New blocks use thecode or embed format. Legacy store manifests remain parseable.
- code
- embed
Vibe-coded block. Your file set is built into an iframe-loaded artifact via Vercel Sandbox. Strict CSP, no cross-origin framing, sandboxed iframe.Required:
entry must be a relative path to a file in your set. Conventional: src/App.tsx.Permissions
Declare the capabilities yourcode block needs. Each is opt-in.
The
network permission and network.allowedOrigins are coupled — declaring one without the other is a validation error. Origins must be HTTPS, origin-only (no path/query/hash/credentials, no wildcards).
Constraints reference
constraints.min* and constraints.max* set the block’s resize bounds on a canvas. Defaults are derived from defaultSize:
min*=defaultSize.* × 0.6, clamped to ≥ 50.max*=defaultSize.* × 2.5, clamped to ≤ 2000.
min ≤ max for each axis, and defaultSize must lie within [min, max].
Validation errors
When validation fails, the API returns a list of issues, each with a stable code:What’s next
Runtime
What happens at render time — render paths, sandbox, data injection.