Using Figma Component Variants to Streamline UI Design
Figma’s Component Variants let designers bundle multiple states into a single component. This guide shows how to build a button system, manage variant properties, and avoid performance pitfalls.
11 Sept 2026, 17:17 UTC

Problem & Thesis
Designing a large UI often means juggling dozens of button styles, form fields, and other reusable elements. If each style is a separate component, the file grows, maintenance becomes painful, and prototype interactions scatter across many places. Figma’s Component Variants feature lets you group related states into a single component, reducing duplication and keeping the design system tidy. This blog walks through a concrete button variant set, explains how to manage properties, highlights trade‑offs, and gives you a clear next‑step plan.
What Are Component Variants?
In Figma, a component is a reusable object that can be dropped into any frame. A variant is a specific state of that component—think of it as a child component that inherits the parent’s properties but overrides a few. Variants expose properties (size, color, state, etc.) that can be edited in the Inspector, and all instances of the component automatically reflect those changes.
Key terms:
- Base component – the parent that holds all variant definitions.
- Variant – a child of the base with a unique combination of property values.
- Property – a named attribute (e.g., color) that can take one of several values.
- Instance – a placed copy of a component or variant that inherits its properties.
Building a Button Variant Set: A Worked Example
Below is a step‑by‑step recipe for a simple button system that covers size, color, and disabled state.
- Create the base component:
- Draw a rectangle, add text, and group them.
- Right‑click and select Make component (or press
Ctrl+Alt+K).
- Add properties:
- In the right‑hand sidebar, click Properties → Add property.
- Enter
Size, set type toEnum, and add valuesSmall,Medium,Large. - Repeat for
Color(values:Primary,Secondary) andState(values:Enabled,Disabled).
- Generate variants:
- Click + Variant to create a new variant for each property combination. Figma will auto‑create 12 variants (3 sizes × 2 colors × 2 states).
- Rename each variant for clarity (e.g.,
Size: Small | Color: Primary | State: Enabled).
- Style each variant:
- Select a variant and adjust the rectangle’s fill, border, and opacity to match its state.
- For
Disabledvariants, setOpacityto50%or change the color to a muted tone.
- Place an instance:
- Drag the component from the Assets panel onto the canvas.
- In the Inspector, choose
Size: Medium,Color: Primary,State: Enabledto see the corresponding variant.
- Update a property globally:
- Change the
Primarycolor in theColorproperty to a new hex value. - All instances that use
Primaryautomatically adopt the new color.
- Change the
After these steps, you have a single component that can represent any button state. The Inspector becomes a quick way to switch styles without dragging new components.
Managing Properties & Naming
Clear property names and a consistent hierarchy prevent confusion, especially in teams. Here are best practices:
- Use short, descriptive names (e.g.,
Sizerather thanButton Size). - Order properties logically:
Size→Color→State. - Keep the number of properties low; each adds a dimension to the variant grid.
- Document the expected values in the design system README or a dedicated style guide page.
Performance & Trade‑offs
Variants are powerful, but they come with caveats:
- File size – Each variant adds a node to the file tree. In files with thousands of components, a large variant set can inflate the file size noticeably.
- Rendering overhead – Figma renders each variant’s geometry. A component with 50 variants may slow down selection and zoom in very large files.
- Prototype complexity – While variants can drive interactions, mapping every variant to a prototype action can become unwieldy. Use variants for visual states and keep interaction logic in separate prototype layers if necessary.
- Collaboration risk – Ambiguous property names or inconsistent naming conventions can lead to multiple designers creating duplicate variants or misusing properties.
Mitigation strategies:
- Group related components into separate design system pages.
- Use Component Sets to keep variant sets focused.
- Audit large files periodically, removing unused variants.
Actionable Takeaway
Start by identifying a component that has multiple visual states—buttons, toggles, or form fields are common candidates. Follow the steps above to create a variant set. After implementation, audit the file for performance and naming clarity. If the variant set grows too large, consider splitting it or using nested components. Finally, add a quick reference in your design system documentation: a table that lists each property, its values, and a visual example. This will help new team members understand how to use the component correctly and keep the system scalable.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.