Every component, container, and section dropped onto the canvas becomes a layer. The Layers tab in the left panel shows them as a tree, selectable, reorderable, nameable.
Think of it as the DOM tree of your composition, with a UI for navigating it.
The canvas shows your composition visually, but as it grows, finding the right element to select gets harder. Five nested Boxes look like overlapping rectangles; the Layers tab makes the hierarchy explicit.
You'll reach for Layers when:
Left panel: Layers tab (sibling to the Components tab).
The Layers tab and Components tab are not shown simultaneously, you can only view one at a time. Switch with the tab toggle at the top of the left panel.

A tree rooted at the composition's top-level node, with one row per child, recursively. Each row shows:
Selecting a layer in the tree:

Four top-level children, clear groupings. Easy to scan.

The Repeater shows its iterations as children. You can see at a glance that this Repeater is iterating and what it iterates over.

Slots show up as their own rows with their label, and filled slot contents nest underneath. You can verify the chained section-inside-slot pattern is wired correctly just by reading the tree.

Same section, two instances, two different bindings. The Layers tab gives each a distinct row.
Default layer names are the component's display name (Box, Heading, Section: card_grid). Useful for identifying what a layer is, less useful for identifying what it means in the composition.
Right-click a layer: Rename. Give it a meaningful name:
Names are per-composition: they don't change the component everywhere, just this drop instance.
Renamed layers are easier to navigate, easier to discuss in review ("the Hero container needs more padding" beats "the third Box from the top"), and easier to onboard new authors to.
Drag a layer in the tree to a new position. Studio updates the canvas accordingly.
You can:
For complex moves, drag-on-canvas is often awkward; drag-in-Layers is precise.
Right-click any layer to open its menu. Typical options:
Exact menu items vary by component type. Slots, Repeaters, and Condition Blocks have menu items specific to their role (e.g. "Add Condition Block" on a Condition Block container).
Name layers when the structure isn't obvious. A Box named Hero container is much easier to navigate to than the fourth Box from the top. Spend two minutes naming when you save.
Keep nesting shallow. Five levels of nested Boxes are technically fine but unfriendly to read. Use Sections to encapsulate deep structures, see Sections overview.
Don't fight the structure for visual reasons. If a layout needs a wrapper Box for CSS grid, that's fine, it shows up in Layers and authors will tolerate it. If a wrapper exists only to hide complexity, refactor into a Section instead.
Use Layers to debug binding scope. If a binding inside a Repeater isn't resolving, click the layer in the Layers tab: the right panel shows you exactly which scope it lives in. Same idea for nested Repeaters and Condition Blocks.
| Symptom | Cause | Fix |
|---|---|---|
| Can't find a layer on the canvas, Layers shows it but the canvas seems to skip it | The layer might be hidden behind another, or have zero size | Click the layer in the Layers tab; the right panel will let you adjust visibility / size |
| Renaming a layer doesn't propagate | Names are per-instance, not per-component | Rename in each instance, or rename the component's displayName in the registry (which changes the default name everywhere) |
| Reordering a layer breaks bindings | A binding inside the moved layer referenced a parent scope that changed | Re-bind after the move, or use a less scope-sensitive path |