The editor
Canvas is three panels: your forms and the element palette on the left, the form itself in the middle, and properties on the right.
The forms list
Every form in the project, with an icon showing its kind. The one with a filled star is the start form — the one your open triggers show. Every project needs one.
- Click to open a form.
- Double-click the name to rename it.
- Right-click for duplicate, delete, and "set as start form".
Renaming matters more than it looks: the name generates the identifier used in the exported pack and as the argument to /canvas:open. Two forms whose names generate the same identifier is an error, because only one of them would be reachable by name.
The element palette
The palette only shows elements the current form's kind can actually hold. This isn't a UI simplification — Bedrock's three form classes genuinely can't hold each other's elements, and offering a slider for a menu would teach you something false about the platform.
| Element | Available in | Notes |
|---|---|---|
| Button | Menus, message boxes | The only element that can run actions |
| Header | Menus, input forms | Bold section title |
| Text | Menus, input forms | A paragraph |
| Divider | Menus, input forms | Horizontal rule |
| Text field | Input forms | Free text |
| Slider | Input forms | A number in a range |
| Dropdown | Input forms | One of a list |
| Toggle | Input forms | On/off |
| Image | Menus, input forms | A picture in the form body (DDUI Preview) |
Click an element to append it, or drag it onto the form to drop it at an exact position.
A message box always has exactly two buttons, so its palette is empty — select a button on the canvas to edit it.
Images
The image element puts a picture in the form body — a banner, a logo, a diagram. Set its width as a percentage of the form, and give it actions if you want it clickable (leave them empty for a decorative image).
Images are a data-driven UI feature, so they only appear on the DDUI (Preview) profile; on the stable profile the editor leaves them out and the lint says so. A standalone image must be an imported PNG (or a block icon, which imports one) — Canvas ships it in the generated resource pack. A raw game-texture path can't be used for a standalone image, because the image API loads relative to a resource pack and Canvas only has an id for the one it generates.
Buttons can carry picture art on the DDUI profile too, using the same imported-image rule.
The canvas
The form in the middle is drawn the way Bedrock draws it: same proportions, same bevels, same states. It's faithful, not pixel-identical — every pixel here is drawn by Canvas rather than taken from the game, so it won't match a texture pack and it isn't meant to.
- Click a row to select it.
- Drag the handle that appears on hover to reorder.
- Right-click for duplicate, move and delete.
- Buttons that open another form show an "opens →" chip; click it to jump there.
- A warning triangle on a row means validation found something — hover for what.
Formatting codes
Titles, body text and labels all accept Minecraft's § codes, and the preview renders them:
§lbold,§oitalic,§rreset§0–§9,§a–§ffor the sixteen classic colours§g,§s,§uand friends for Bedrock's material colours
Bedrock's palette is not Java's — §m and §n are colours here, not strikethrough and underline. Canvas warns about codes Bedrock doesn't recognise.
The inspector
Whatever is selected. With nothing selected you get the form's own properties — name, kind, title, body — plus the project settings underneath: the namespace and how players open the menu.
Changing a form's kind drops elements the new kind can't hold, so Canvas asks first when that would lose something.
Icons
Select a button and choose an icon. Three sources, in the order you should reach for them:
- Blocks — over 1200 isometric block renders. Picking one adds it to your project as a real image and ships it in the resource pack, so it's guaranteed to appear in game.
- Your images — PNGs you import. Same guarantee. 32×32 or larger works best.
- Texture path — a path into the game's own textures, like
textures/items/diamond. Free to ship, but Canvas can't verify it: Bedrock's internal texture names rarely match the item name and change between versions. If a button comes up blank in game, this is why.
You can also drag a PNG onto the window while a button is selected to use it as that button's icon.
Play mode
Press Play (or Ctrl/Cmd + Enter) to use your form for real. Buttons fire, sliders drag, dropdowns cycle, and the console underneath shows what each action would do in game — the actual command, with your entered values already spliced in.
Form chains work, so you can walk a whole menu tree. Back returns to the previous form; Restart goes to the start form.
Each form gets its own values, exactly as in game: opening a form shows its defaults rather than carrying over what you typed into the last one.
Undo
Everything is undoable, including anything an AI agent does through the MCP bridge. Press the history button in the header for a list of every edit, and click any entry to jump straight there.
Saving
Projects save as a .canvas file — a zip holding the document and every image it uses. Ctrl/Cmd + S saves; drag a .canvas file onto the window to open it.
Canvas also autosaves to your browser continuously, and offers to restore the last session on the welcome screen. That's a safety net, not a filing system — export a .canvas file for anything you want to keep.
Canvas