The Assets tab of the left sidebar lists and manages every image in the document (→ The asset list).
The Components tab of the left sidebar lists the document's components, to drag onto the canvas as instances, restore or delete permanently (→ The Components panel).
Image inputs give each instance of a component and each item of a Repeater its own image in a bound Fill or Stroke, and the Image input behavior lets a viewer choose one in preview (→ Component inputs, Images in items, Image input).
A Cursor behavior sets the cursor shown over a layer in preview, such as the hand over a button (→ Cursor).
A Pointer events behavior lets clicks and hovers pass through a layer and everything inside it in preview, and lets a layer inside take them again (→ Pointer events).
Find uses in the context menu of a component or an instance lists every instance of the component across pages (→ Finding where a component is used).
An agent can show what it found in the search dialog, such as every layer using a color close to one you name; clicking an entry selects the layer and highlights the properties it was found by (→ Going through what an agent found).
Component state switches can animate in preview: a component set's Properties panel gets a transition row per interaction (hover and press, focus, placeholder, check, select or switch) whose dialog sets a duration, an easing and what to animate: everything, or categories such as position and size, fill and stroke, opacity, effects, shape and text (→ Transitions between states).
AI agents such as Claude Code, Codex, Cursor and GitHub Copilot can read and edit the documents you have open, with everything the properties panel sets, interactive components, variables and interactions: create an agent token under Settings → Agents and register Moio as an MCP server (→ Connecting AI agents).
A new Color input component behavior turns a component set into a color chooser: in preview a click on an instance opens the browser's color picker, and the picked color drives every layer bound to the set's built-in Color input (→ Color input).
A new Slider component behavior makes a horizontal slider: in preview the viewer drags a thumb along a track, or clicks the track to jump to a value. Slider).
A new Textarea component behavior makes a text field of several lines: in preview Enter breaks the line and the field grows or scrolls with its lines. String inputs can be marked Multiline to hold values with line breaks (→ The Textarea behavior).
Variables bound to a control's built-in input are two-way in preview: typing into an Input or Textarea field, clicking a Checkbox, Toggle or Radio button, or picking a color in a Color input writes the bound value variable as it happens, and everything that reads the variable follows. A group of radio buttons binds to one variable through each button's Selected value and is checked where the variable equals its Option value (→ Two-way binding on controls).
A new Appear event runs an artboard's actions each time the preview shows it: when the preview opens on it, after a Go To Artboard transition to it, or as a modal. Use it to reset a form or set up a screen as the viewer arrives (→ Appear).
A variable can be renamed without updating the expressions that use it (→ Naming and renaming).
A variable's menu lists what uses it, and a bound field's menu goes to its variable or input (→ Going to the source).
Components can report what happens inside them: an Emit Event action inside a component sends a named event, and each instance handles it with a Component Event that runs that instance's own actions, so a dialog's confirm and cancel can close it in one place and navigate in another (→ Component events).
Expression fields now suggest names as you type: a . after Color, Math or a collection lists its members with a description, Ctrl + Space lists every variable, collection and namespace visible at the caret, and the function's signature shows while the caret is inside its parentheses.
Added color functions for expressions: the Color namespace lightens, darkens, saturates, mixes, rotates and fades colors (Color.darken(brand, 0.2)), picks readable contrast, compares colors (Color.equals(a, b)), and prints colors in any accepted format (Color.format(c, 'hsl')).
Color fields accept more formats: hsl(), hwb(), hsb(), modern rgb() with spaces and percentages, and the Variables panel's #RRGGBB 50% form; a pasted color that states an alpha (e.g. #FF000080) now sets the fill or stroke opacity instead of dropping it.
Added a Set Component Input action: interactions can now set a component instance's input to a new value in the preview.
Added multi-object rename: with several objects selected, Rename (Ctrl/Cmd + R) opens a dialog that renames them all at once; component variants keep their pseudoclass states (renaming foo:hover and foo:active to bar produces bar:hover and bar:active).
Keyboard shortcuts now work with international keyboard layouts (German QWERTZ and French AZERTY initially, more coming). Layout is detected automatically where the browser supports it and can be changed in the editor's settings menu; menus and tooltips show shortcut keys as printed on the keyboard.
Added commenting: pin threaded comments to designs in both the editor (comment tool, Shift+C) and the preview.
Added debug console in Preview - see events and actions as they fire
Search dialog for finding objects and text within documents
Added "map view". Press M to zoom out and see all content; click anywhere to zoom back in at that location, or draw a lasso to zoom into a specific area.
Added Tab and Shift+Tabshortcuts in the editor to move the selection to the next or previous sibling within each selected container.
Added Ctrl/Command+right-click on the canvas to list all objects under the pointer in stack order so you can pick the exact overlapping object.
AI text editing now supports refining the current selection and inserting generated text at the caret; available as context menu options while editing a text layer.