Widgets
The basic unit of canvas content — the built-in widgets VizChat ships with, and custom widgets built for your own library.
What a widget is
A widget is the smallest content unit on a canvas. Think of it as equivalent to one slide, one spreadsheet cell, or one Notion block — but more general. A VizChat widget can be a chart, a paragraph of text, an entire embedded webpage, or an interactive component running JS.
Each widget owns its data and its configuration, and defines its own set of operations. Those fields and operations belong to the widget itself and evolve with it — the agent looks them up when it needs them rather than assuming a fixed shape.
Two kinds of widget
Built-in widgets
The widgets VizChat ships with, covering the common cases: charts and data (including maths — coordinate planes, number lines, solids in space, distributions, Venn diagrams, probability trees, tables), rich text and code, PDFs, embedded pages and links, images and infographics, and slide covers. See the widget types overview for the full set and what each one does.
Custom widgets
When the built-ins don't cover what you need, the agent can build a widget for you: a timer, a kanban board, a calculator, or any bespoke interactive component. A custom widget is generated at runtime, stored in your library, and reusable across documents. Typical cases:
- Visualizations outside the standard set (Sankey, calendar heatmap)
- Components that need state and event interaction (filters, date pickers)
- Embedding third-party libraries
Custom widgets mount inline in the canvas by default, and can opt into a sandboxed iframe (nested mount) when they need a fully isolated realm — a controlled API talks to the host canvas either way. They are private to you by default, and can be published to the Marketplace so other people can use and favorite them.
Widget independence
Each widget is an independent mini-app. It has:
- Its own data and configuration, stored in the document
- Its own lifecycle (mount, render, destroy)
- Independent edit / copy / delete operations
Widget updates
When a widget goes into your document, it stays on the version it had at that moment. When its author publishes a new version, what happens to your document depends on its update setting:
| Update setting | The new version reads the document's data | The document's content needs changes |
|---|---|---|
| Manual | Announced; you decide | Announced; you decide |
| Accept compatible updates automatically (default) | Updated automatically | Listed for you to handle |
| Update everything automatically | Updated automatically | Migrated by the AI and applied once checks pass (not available yet; for now these are listed for you to handle) |
- Compatibility is judged against this document's own data: the same update can be compatible with one document and not with another. When it can't be judged (for example, the version pinned in the document is no longer available, so its original data format can't be checked), nothing is updated automatically; the update is listed for you to decide.
- A document that is open in the editor is never changed automatically; the update is recorded and waits for you in the update notice.
- Change your account default under Data in Settings. A single presentation or dashboard can use its own setting: right-click its tab and choose Document Settings.
- You get a notification after an automatic update, and when an update needs content changes; it opens the document. The line above the canvas says which components were updated, and Review updates keeps a record of recent updates.
- When a published presentation or dashboard is updated automatically and its draft has no other unpublished changes, a new version of it is published as well. Otherwise only the draft is updated, and the update goes out the next time you publish.
- Automatic updates can't be reverted in one click. If you don't want a document to change on its own, set its update setting to Manual.
Updates that haven't been applied yet are announced above the canvas:
- When you open a presentation or dashboard whose widgets have new versions, a single line above the canvas says "N components have updates". You can dismiss it.
- Fixes (the widget's data format is unchanged) can all be applied in one click. Feature updates are previewed first: your file is rendered with the new versions, and nothing changes until you confirm.
- If the new version doesn't match some of the data in your file, the update is marked "May affect page 3, 5". That is only a hint and never blocks the update; if you don't like the result, click Undo to go back to the previous versions (the undo shortcut works too).
- For an update that needs content changes, you can ask the AI in chat to make them, or ignore the update.
- You can also ask the AI to "update the components to the latest"; it uses the same update.
Widgets you add from now on use their latest version.
How the AI works with widgets
When you ask for something, the agent works through roughly this path:
- Find a widget —
search_widgetssearches built-in and user-published widgets from the same pool. Widgets you have favorited, or mentioned with@, are considered first. - Learn its contract —
describe_widgetreturns the fields and operations that widget actually accepts. - Write it into the document — the widget and its initial data are written into the document, and later changes are made as precise path edits with
edit_yaml_path. - Validate —
check_boardchecks the document structure, that every referenced widget exists, and that referenced workspace documents exist.
If nothing in the library fits, the agent can fall back to building a new custom widget for you instead.
Next step
Canvas
VizChat's core workspace — the surface a document is composed on, holding widgets that the AI reads and writes directly.
AI agent workflow
VizChat runs a single agent with an on-demand skill for widget building — it gathers context, finds or builds a widget, writes the document, and validates it.