Figma-style sizing + CSS Grid
Hug, Fill, Fixed, Percent, AspectRatio. The same primitives Figma uses, plus a real Grid with template tracks, repeat(), spans, dense packing, and auto-flow.
One component, one Inspector — everything in one place. Sizing, layout, spacing, alignment, scrolling, and animation all live on a single AutoLayout component, edited visually in a clean Inspector. No stacking LayoutGroup + ContentSizeFitter + LayoutElement to get one row to behave. It coexists with Unity’s existing layout, so you can adopt it one screen at a time — no rewrite required.
Figma-style sizing + CSS Grid
Hug, Fill, Fixed, Percent, AspectRatio. The same primitives Figma uses, plus a real Grid with template tracks, repeat(), spans, dense packing, and auto-flow.
Six sizing modes
Pixels, Hug, Fill, Percentage, AspectRatio, TextSize (intrinsic text bounds). Set per axis.
Burst-compiled core, incremental rebuilds
The core layout algorithm runs on Burst with persistent NativeArrays. Zero allocations during calculation. LayoutIslands mean a leaf change doesn’t recompute the world. (uGUI’s own RectTransform writes still allocate; that’s Unity’s code, not ours.)
Headless engine, multiple adapters
The layout engine doesn’t know what it’s laying out. uGUI ships today. IMGUI and UI Toolkit adapters are in design, sharing the same engine.
Drop-in components
ScrollView, ListView, GridView, Carousel, Dropdown, ProgressBar. All pooled, virtualized, and aware of the layout engine.
Found a bug? One click.
Right-click any AutoLayout component → Report a Bug. The issue auto-fills with your layout YAML so I can reproduce what you saw.
Every feature is set up right in the Inspector — the Inspector tab on each block mirrors what you do in the editor; the Code tab is there if you’d rather drive it from script.
Width and Height each pick a mode — Fixed, Hug, Fill, Percentage, AspectRatio, TextSize. The same vocabulary you already use in Figma, live in Unity.
In SIZE & POSITION → Size, set each child’s Width and Height — type fill, hug, 50%, or a pixel value. The same vocabulary as Figma, right in the Inspector.
layout.Width = UIDimension.Fill(); // share of parent's free spacelayout.Height = UIDimension.Hug(); // shrink-wrap to contentslayout.Width = UIDimension.Percentage(50f); // half of the parentDirectional auto-layout with alignment, distribution, and gaps. A WidthFill() child between siblings eats leftover space and pushes everything after it to the edge.
In CHILD LAYOUT, set Layout Type to Row and a Gap. Drop in a child with Width fill as a spacer to push the items after it to the far edge.
layout.LayoutType = LayoutType.Row;layout.Gap = 8f;layout.CrossAxisAlign = Alignment.Center;Template tracks, repeat(), column/row spans, dense packing, and auto-flow — not Unity's GridLayoutGroup. Lay out dashboards and galleries in a few lines.
In CHILD LAYOUT, set Layout Type to Grid, then Column Sizes to a template like repeat(3, 1fr) and the Column Gap / Row Gap. Span a cell from SIZE & POSITION → Grid Item.
layout.LayoutType = LayoutType.Grid;layout.ColumnSizes = "repeat(3, 1fr)";layout.ColumnGap = 12f;layout.RowGap = 12f;ScrollView, ListView, and GridView pool and recycle cells, so 1,000 rows scroll as smoothly as 10. Layout-aware out of the box.
Add a ListView (or GridView) component, set its Direction and Gap in List Layout, and register a cell Prefab. Feed it items from code and it pools/recycles cells automatically.
lv.ItemCount = items.Count;lv.GetItemCallback = i => items[i];lv.BindItemCallback = (view, i) => view.GetComponentInChildren<TMP_Text>().text = items[i].Title;lv.RefreshItems();