Main components vs instances: how to use Component Properties for multi-state Buttons?
This tests Figma component architecture. A main component is the source; an instance is a linked copy. Use variant properties for state and style, plus booleans for optional layers. Red flags: separate components per state or ignoring property controls.
What's really being asked
This question evaluates whether you understand the core relationship between main components and instances in Figma, and whether you can architect a scalable, maintainable button using Component Properties instead of redundant components or manual overrides.
The full answer
First, define the main component as the reusable source of truth that lives in a library or dedicated page; any change to it propagates to every instance, which is a lightweight linked copy placed in designs. Second, explain that variant properties should define the structural differences between primary, secondary, and disabled states, such as background color, border treatment, and text opacity, by organizing them into a component set. Third, state that boolean properties should control the visibility of optional nested layers like icons or badges, so designers can toggle them on or off without creating extra variants or manually hiding layers. Fourth, emphasize that this approach consolidates all controls into a single right-panel interface, which reduces documentation overhead and prevents designers from detaching instances.
The mistakes people make
A red flag is treating every button state as an entirely separate main component, which destroys inheritance and creates maintenance debt across the design system. Another error is claiming that instances can be edited directly like mains without using overrides or detaching, which misunderstands how the link works. Some candidates suggest using variants alone to handle every optional icon permutation, which would cause variant explosion and make the component set unwieldy. Finally, ignoring boolean properties and recommending manual layer hiding shows a lack of familiarity with modern Figma property controls.
What usually comes next
An interviewer might ask how you would add an instance swap property to let designers change the icon to a different component. They could ask when a slot property is preferable to a boolean for flexible button content. You might also be asked how you document intended usage and property descriptions for design system consumers, or what happens to existing instances when you publish a new property to the main component.
A concrete example
Imagine a Button main component organized as a component set with two variant properties. The first variant property is Type with values Primary and Secondary, and the second is State with values Default and Disabled. The Disabled state uses the variant to apply reduced opacity and a muted color treatment. Inside the button, there is an icon layer with a boolean property named Show Icon that defaults to true. When a designer places an instance, they can set it to Primary and Disabled in the right panel, then toggle Show Icon to false, all without detaching the instance or opening the layers panel.
Interview question
When building a scalable multi-state Button in Figma with optional icons, which property strategy best reduces maintenance overhead?
- a.Create a separate main component for each button state and type combination so that each one can be independently updated.
- b.Allow designers to manually hide layers and detach instances whenever they need to change the button's state.
- c.Define Type and State as variant properties, and use a boolean property to control the visibility of the optional icon layer.Correct
- d.Add variant properties for Type, State, and Show Icon, creating variants for every possible permutation.
Why? this is the answer
Variant properties should define structural differences like Primary/Secondary and Default/Disabled, while boolean properties toggle optional layers such as icons to prevent variant explosion. Option A destroys inheritance by creating separate mains per state, and option D creates an unwieldy component set by treating optional elements as variants.
Just read this? Test yourself on what you have been reading.
Read the original → help.figma.com
Put your scrolling time to good use
Learn one idea, try a quiz and save useful cards for revision. Tezvyn makes it easy to learn and stay current in your tech field, a few minutes at a time.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.
We are hiring for this. Open roles that interview on figma — each one lists the topics its interview covers.
See open roles