Do you have trouble knowing when to use a frame or a group in Figma? They are both containers for housing objects, but they have their own unique properties and use cases. It's not always obvious how they differ from each other, so to help distinguish between them I wrote up this primer.
Similar to other design tools, groups in Figma allow you to combine multiple elements together as a single top level layer. A group's bounds are determined by its child elements, so resizing or moving those elements will cause the group's bounds to adjust automatically. You can create a group by selecting objects and pressing:
⌘ + G (Mac) or
Ctrl + G (Win).
Making a group is non destructive—meaning it won't flatten or permanently combine the layers together. At any point you can ungroup the elements, by pressing:
⌘ + Shift + G (Mac) or
Ctrl + Shift G (Win).
Groups are really useful when you want to combine similar items together and manage less layers within your design. For example, you may have a selection of company logos that need to stay together. Grouping them is a great way to combine them into one single more manageable layer—clicking on any of the elements within your group will select the entire thing and allow you to you move or manipulate it as a single object on the canvas. If you need to select a particular child element within a group, you can do so by double clicking.
You can also leverage features like Smart Selections inside a group to adjust the spacing between elements. In the example below you can see the group's bounds auto adjust to match the overall dimensions of the child elements when the spacing changes.
When you resize a group, its child elements will scale as you would expect vector artwork to scale. However effects, strokes, and type sizes will not scale. If you wish to scale these properties too, use the scale tool (
K). If you want to apply constraints to define how elements will be resized, consider using a frame instead. Constraints applied to elements will always be relative to the closest parent frame—not relative to the bounds of the group. More on that as we uncover frames!
At the most basic level, what you may think of an "artboard" in other design tools is actually what we call a frame in Figma. We see frames as a foundational element for your designs that can act as a top level container (like a device viewport) and/or represent areas or components within your design. Frames, and the ability to nest them, are an integral part of creating dynamic layouts in Figma.
Before we dive into the behaviors and properties of frames, let's quickly cover the three different ways you can create a frame.
Select the frame tool (
F), and choose a preset device size from the properties panel on the right. This will place a new frame on your canvas set to the exact dimensions of whatever device that you picked.
With the frame tool selected, click and drag to make a new frame at whatever size you want.
Similar to grouping, you can select existing elements on the canvas and contain them within a frame by pressing:
⌘ + Opt + G (Mac) or
Ctrl + Alt + G (Win).
If you wish to do the opposite, and remove the parent frame container, the keyboard shortcut is the same as un-grouping:
⌘ + Shift + G (Mac) or
Ctrl + Shift G (Win). Now let's dig into their unique features and uses.
Frame sizes are set independently from their child elements. If you reposition or scale child elements inside a frame, its bounds will not auto-adjust. If you want the dimensions of the frame to readjust to the contents, you can click the "Resize to Fit" button in the properties panel on the right.
It's also important to note that components in Figma behave in exactly the same way as frames. You can convert a frame into a component to re-use it in other places, and if you detach an existing component instance, you will see that it gets converted into a frame.
Frames and groups differ in their behavior when resized. As mentioned, groups will resize in the way you would expect a group of vectors to scale. A frame's bounds will be resized independently from its child elements; however, you can define constraints which affect the resizing behavior of those child elements relative to their parent frame. By default, these constraints are set to "Top" and "Left".
Setting up custom constraints can be really useful when you want items to maintain the size and position relative to the frame, which is usually the behavior you want when creating responsive components. The example below highlights the differences between groups, frames, and frames with specifically defined constraints.
Quick tip: If you want to ignore your constraints when resizing a frame, hold
⌘ (Mac) or
Ctrl (Win) when dragging the frame.
Because the bounds of a frame can be adjusted independently of its children, the "clip content" feature (accessible in the right hand properties panel) can be used in conjunction with this in many different ways. Here are some common examples:
Layout grids are unique to frames and can be applied to any frame or component in your design. This is really useful because sometimes you'll want to have areas of your design that have their own independent grids. Resizing constraints in Figma can work in conjunction with the layout grids as well. In the example below, you can see that there is a 2-column grid on the top level frame, and a nested secondary frame for the tab bar, which has its own 3-column grid. With the constraints setup, as the top level frame changes in size, the resizing behavior of child elements happens relative to the layout grid.
You can use groups and frames in many ways (together or separately) to achieve different behaviors.
TLDR — use a group if:
TLDR — use a frame if:
For more details about using frames and groups, check out our Help Center article.
If you want to see how any of the examples in this article are created, click here to add a copy to your Figma.