json_render block
An escape hatch for custom UI that none of the other block types can express. The spec field is a RenderSpec — the same shape your tools emit at runtime via the _render directive, rendered by the same renderer that draws agent-emitted UI.
When to use it
- The dashboard editor doesn’t have a knob for the layout you want (a bespoke card grid, a tabbed module, an interactive chart).
- You want a static, owner-authored version of UI the agent could also emit dynamically — useful for “always show this on the page” vs “emit it conditionally during chat”.
- You’ve prototyped a
RenderSpecshape in chat and want to pin it to the page.
Shape
Tips
- The dashboard editor’s
specinput is a raw JSON textarea — there’s no visual builder. Test specs in chat first using the/renderslash command in the preview, then copy the working spec into the block. - The platform only checks that
specis an object, not that its contents are valid — invalid specs render an “Invalid json-render spec” placeholder client-side. - The renderer is the source of truth for what props each component accepts. See Generative UI for the full catalogue.