Safe starting point
Hug the content
Hug, Fill or Fixed
Applies to All viewports
Every layer in an auto layout frame resizes one of three ways on each axis. Most layout problems are the wrong one of these.
Hug. As wide as its content.
Fill. Takes the space the parent has.
Fixed. Stays 96 px, whatever is inside or around it.
- Hug
- As small as its content. Buttons, tags, labels: anything whose size should follow its text.
- Fill
- Take the space available. Inputs in a form, the main column beside a sidebar, items that should share a row equally.
- Fixed
- Stay this size. Icons, avatars, sidebars with a set width.
Why?
Choosing how each layer resizes is the whole of responsive behaviour in Figma. Get it right and the frame survives new content and new widths.
Common mistakes (3)
- Fixed widths everywhere, so nothing responds.
- Fill inside a Hug parent, which has no space to fill.
- A button set to Fixed that clips when the label is translated.
Senior designer note“Type a much longer label into the component. If it breaks, the sizing is wrong.”
Official guidanceFigma
- Figma
Hug: the object resizes based on its child objects, keeping the smallest possible dimensions around them.
Figma Help, Guide to auto layout(opens in a new tab)Tool documentation
- Figma
Fill: layers stretch to occupy all available space in their parent frame, while respecting spacing values.
Figma Help, Guide to auto layout(opens in a new tab)Tool documentation
- Figma
Fixed: dimensions stay unchanged regardless of changes to surrounding spacing.
Figma Help, Guide to auto layout(opens in a new tab)Tool documentation