Web / Figma Interview questions
Last updated
1. What is Figma?
Figma is a collaborative design platform for designing, prototyping, and handing off user interfaces and other digital products. It runs in the browser, has desktop apps for macOS and Windows, and keeps files in the cloud so several people can work in the same file at once.
The core editor, Figma Design, is vector-based and built around frames, components, Auto Layout, and variables. Prototyping and developer inspection (Dev Mode) sit in the same file, so designers, developers, and product managers aren't passing exports back and forth.
- Cloud files with automatic version history
- Live multiplayer editing and comments
- Shared libraries for design systems
- Plugins and a public API for extending it
Take quiz
Only on the designer's laptop, shared through email
On a private server the design team must host
Inside each developer's IDE project
In the cloud, opened from the browser or desktop app
Exporting a copy of the file to each person
Cloud-based multiplayer editing
Locking the file so only one editor can enter
Syncing local files through Git
2. What are the main products in the Figma platform?
Figma is no longer a single design tool. Besides Figma Design, the platform includes a set of products that share the same account, libraries, and collaboration model.
| Product | What it is for |
| Figma Design | UI design, prototyping, and design systems |
| Dev Mode | Inspecting designs and getting code-ready specs and snippets |
| FigJam | Online whiteboard for brainstorming, flows, and workshops |
| Figma Slides | Building presentations with Figma's design tools |
| Figma Draw | Illustration tools (brushes, textures) inside Figma Design |
| Figma Sites | Designing and publishing responsive websites |
| Figma Buzz | Producing on-brand marketing assets at scale |
| Figma Make | Prompting working prototypes and apps |
| Figma Weave | AI workflows for imagery, video, and audio |
In interviews, it's enough to know Design, Dev Mode, FigJam, and Make well, and be able to name the rest.
Take quiz
FigJam
Figma Buzz
Figma Draw
Dev Mode
Figma Slides
Dev Mode
Figma Sites
FigJam
3. What is a frame in Figma?
A frame is Figma's container object. It's the closest thing to an artboard: a top-level frame usually represents a screen, such as a 390 x 844 phone layout or a 1440-wide desktop page.
Frames differ from plain shapes because they can hold child layers and control them:
- Clip content so children outside the edge are hidden
- Constraints that decide how children react when the frame resizes
- Layout grids and Auto Layout for structure
- Their own fill, stroke, corner radius, and effects
Frames can be nested, so a card is a frame inside a list frame inside a screen frame. Prototype flows also start from top-level frames.
Take quiz
A single color style
A published library
A screen or artboard such as a phone or desktop layout
A comment thread
Holding child layers with clipping, constraints, and layout grids
Storing a file's version history
Running plugins automatically
Exporting only as PDF
4. What are layers in Figma?
Layers are the individual objects on the canvas, such as frames, groups, text, shapes, images, vectors, components, and instances. The Layers panel on the left shows them as a hierarchy, with parents containing children.
Position in the list sets stacking order: a layer higher up sits in front of the ones below it. You can rename, hide, lock, reorder, and nest layers from there.
Naming matters more than most beginners expect. Smart Animate matches layers by name, instance overrides carry across swaps by name, and developers read layer names in Dev Mode and exports. A file full of "Rectangle 214" slows everyone down.
Take quiz
Alphabetical layer name
The color tag on the layer
The date the layer was created
Being higher in the layer list
They set the exported pixel density
Smart Animate and overrides match layers by name
They control the layer's opacity
They decide who can comment on the layer
5. What is a component in Figma?
A component is a reusable design element, such as a button, input, or card, that you define once and reuse many times. The original is called the main component, and every copy you place is an instance linked back to it.
Edit the main component and every instance updates, unless that property was overridden locally. That is the basis of a design system: consistency without manual copy-paste fixes.
To create one, select a layer or frame and press Ctrl/Cmd + Alt + K. Main components show a filled purple diamond icon in the Layers panel.
Take quiz
The main component
The master frame
The base style
The root variable
Nothing, instances never change
Each instance is deleted
They update, except for properties overridden locally
Only the first instance updates
6. What is an instance in Figma?
An instance is a copy of a main component that stays linked to it. In the Layers panel it shows a hollow purple diamond, while the main component shows a filled one.
Instances inherit everything from the main component but allow limited local changes called overrides: text content, fills, visibility of layers, swapped nested instances, and so on. You can't add, delete, or reorder layers inside an instance without detaching it.
Anything you don't override keeps following the main component, so a later change to the main flows through automatically.
Take quiz
A filled purple diamond
A green hash sign
A hollow purple diamond
A yellow warning triangle
Edit its text content
Delete a child layer
Reorder its internal layers
Add a new frame inside it
7. What is Auto Layout in Figma?
Auto Layout turns a frame into a container that arranges its children automatically and resizes as content changes. Add it with Shift + A. If you know CSS, it behaves much like flexbox.
You control:
- Direction: horizontal, vertical, or wrap
- Spacing between items and padding inside the frame
- Alignment of children
- Resizing of the frame and its children (Fixed, Hug, Fill)
A button with Auto Layout grows when its label gets longer, and a list reflows when you delete a row. Without it, you'd nudge every layer by hand.
Take quiz
CSS float
z-index stacking
The position: fixed rule
Flexbox
The text is clipped at the old width
The frame grows to fit the text and keeps its padding
The padding drops to zero
The button turns into a group
8. What are constraints in Figma?
Constraints define how a child layer behaves when its parent frame is resized. They pin the layer to an edge, the center, or scale it with the frame.
| Horizontal | Vertical | Effect |
| Left / Right | Top / Bottom | Stays a fixed distance from that edge |
| Left & Right | Top & Bottom | Stretches as the frame grows |
| Center | Center | Stays centered on that axis |
| Scale | Scale | Resizes proportionally with the frame |
Constraints always work relative to the parent frame, not the page. They apply when you manually resize a frame, which is why they were the first tool for responsive designs.
Take quiz
The layer stretches horizontally
It keeps its width and stays at the right edge
It stays centered at the same width
It shrinks to the minimum size
The page background
The first frame in the file
The layer's parent frame
The nearest comment pin
9. What are styles in Figma?
Styles are saved sets of properties that you apply to layers by name instead of re-entering values. Change the style and every layer using it updates.
Figma has four types:
- Color (paint) styles for solid fills, gradients, and images
- Text styles bundling font, size, weight, line height, and letter spacing
- Effect styles for shadows and blurs
- Grid styles for layout grids
Styles can be published in a team library so other files use the same definitions. Slash naming such as Text/Heading/H1 groups them in the picker.
Take quiz
Frame size and position
Prototype interactions
Font family, size, weight, line height, and letter spacing
Comment permissions
All of them update to the new color
Only the selected layer updates
They are detached from the style
Nothing, styles are copied on use
10. What are variants in Figma?
Variants let you group related versions of a component into one component set. Instead of a dozen separate button components, you get one button with properties such as Size, State, and Type.
Each variant is named with Property=Value pairs, for example Size=Large, State=Hover. When you drop an instance, you switch versions from dropdowns in the right panel instead of hunting through the Assets panel.
A component set is drawn on the canvas with a dashed purple outline. Variants work best for discrete choices like state, size, or style, not for free text or on/off toggles, which are better handled with component properties.
Take quiz
As a solid red frame
As a group of locked rectangles
As a hidden page
As a component set with a dashed purple outline
The text inside a label
State with values Default, Hover, and Disabled
The date a file was created
The author of the component
11. What is FigJam?
FigJam is Figma's online whiteboard for the early, messy stages of work: brainstorming, user flows, retros, journey maps, and workshops. It's separate from Figma Design but lives in the same workspace and accounts.
Typical building blocks include sticky notes, text, shapes with connectors, stamps, emoji reactions, sections, and templates. Facilitators get a timer, voting, and cursor chat to run sessions with remote teams.
Because it uses the same collaboration engine, everyone sees edits live. It also supports AI helpers for sorting stickies and drafting diagrams, and you can paste design frames in to discuss them.
Take quiz
Whiteboarding, brainstorming, and workshops
Final pixel-perfect UI design
Compiling code to apps
Hosting databases
Boolean operations
Smart Animate
Voting on stickies
Layout grids
12. What is Dev Mode in Figma?
Dev Mode is a view of a Figma Design file made for developers. Toggle it with Shift + D. The canvas becomes read-only and the right panel switches to inspection tools.
- Measurements and spacing between layers
- Code snippets (CSS, iOS, Android) for selected layers
- Variables shown with their token names
- Ready for dev statuses to mark finished sections
- Compare changes to see what moved since a design was handed off
- Links to code, via Code Connect
It needs a paid seat, so developers get the inspection surface without risking accidental edits to the design.
Take quiz
Duplicates the selected layer
Creates a new component
Toggles Dev Mode
Starts a prototype preview
A section is finished and can be implemented
The file is locked forever
The design has been published to Community
All comments are resolved
13. What are plugins in Figma?
Plugins are small programs that extend Figma. They can generate content, check accessibility, rename layers in bulk, import data, export tokens, or connect Figma to other tools. Most are installed from the Figma Community and run from the Plugins menu or quick actions.
They're written with the Plugin API in JavaScript or TypeScript and can read and change the document. Plugins are different from widgets: a plugin runs on demand for the person who launched it, while a widget is an object that sits on the canvas and can be used by every collaborator, such as a poll or timer.
Take quiz
Plugins only work in FigJam
Widgets can't be interactive
Plugins are built without code
A widget lives on the canvas for everyone, a plugin runs on demand
Only Swift
JavaScript or TypeScript
Only Python
Only Java
14. What is prototyping in Figma?
Prototyping is connecting frames with interactions so a static design behaves like a working flow. You switch to the Prototype tab, drag a connection from a layer to a destination frame, and choose a trigger, an action, and an animation.
Press Present to click through it in the browser, or open it on a phone with the Figma mobile app. You can share the prototype link with stakeholders for feedback without giving them edit access.
Each connection has three parts:
- Trigger: what starts it (on click, on drag, while hovering, after delay)
- Action: what happens (navigate, open overlay, scroll to, set variable)
- Animation: how it transitions (instant, dissolve, Smart Animate, move, push, slide)
Take quiz
Trigger, action, and animation
Font, color, and shadow
Branch, merge, and review
Layer, group, and mask
Duplicate the file and edit it
Export it as a CSS file
Open the shared prototype link
Install a plugin on their machine
15. List the boolean operations available in Figma?
Boolean operations combine two or more shapes into one editable result. Select the shapes and pick one from the toolbar:
- Union: merges the shapes into one outline
- Subtract: removes the top shapes from the bottom one
- Intersect: keeps only the overlapping area
- Exclude: keeps everything except the overlap
The result stays live, so you can still move or edit the original shapes. Use Flatten when you want a single plain vector path and don't need that editability, which also helps with performance and clean SVG exports.
Take quiz
Union
Subtract
Intersect
Exclude
Turns it into a single plain vector path
Locks it permanently
Converts it into a component
Deletes the original shapes and the result
16. What are layout grids in Figma?
Layout grids are overlay guides on a frame that help you align content consistently. They're visual aids and, with the right setting, also drive how children snap.
There are three types:
- Grid: uniform squares, handy for 8-point spacing systems
- Columns: set count, gutter, margin, and type (Stretch, Left, Center, Right)
- Rows: horizontal bands for vertical rhythm
A common web setup is a 12-column grid with 24px gutters and 80px margins. Grids can be saved as grid styles so every desktop frame uses the same structure.
Take quiz
Columns
Rows with stretch
Constraints
Grid
Group all frames together
Save it as a grid style
Convert it into a boolean group
Export it as a PNG
17. What are variables in Figma?
Variables store reusable values that you bind to design properties and prototype logic. They are Figma's native way to represent design tokens.
There are four types:
- Color for fills and strokes
- Number for spacing, padding, corner radius, and similar values
- String for text content
- Boolean for layer visibility and conditions
Variables live in collections and can have multiple modes, such as Light and Dark. They can alias other variables, and they can drive prototype interactions, which styles can't do.
Take quiz
Number
Color
Boolean
String
Locking layers from editing
Exporting frames as GIFs
Switching a set of values, like Light and Dark themes
Merging branches
18. How do you export assets from Figma?
Select a layer, frame, or slice, scroll to the Export section at the bottom of the right panel, click +, choose a format and scale, then press the export button.
- Formats: PNG, JPG, SVG, and PDF
- Scales: 0.5x, 1x, 2x, 3x, 4x, or a fixed width/height such as
512w - Suffix: append something like
@2xto filenames
Use SVG for icons and logos, PNG for UI screenshots with transparency, and JPG for photos. You can add several export settings to one layer, for example 1x, 2x, and 3x PNGs for mobile, and download them together. Whole frames can also be exported to PDF from the file menu.
Take quiz
JPG
Low-scale PNG
SVG
A PDF screenshot
Appends it to exported file names
Doubles the layer's size on canvas
Adds a second page to the file
Links the export to a variable
19. What is Figma Make?
Figma Make is Figma's prompt-to-code product. You describe an app, interactive prototype, or small website in plain language, and it generates a working version you can preview, edit by chatting, and refine.
You can also start from an existing Figma design and ask Make to turn it into something functional, which keeps visual fidelity better than starting from a blank prompt. Output is real code under the hood, so you can tweak the code directly and publish the result.
It suits quick proof-of-concepts, testing interaction ideas with users, and giving stakeholders something they can click through. For production systems, you'd still review and own the code.
Take quiz
Draw it only with the Pen tool
Write a plugin manifest
Import a .sketch file
Describe it in a prompt, or start from a Figma design
Replacing all production code reviews
Quick functional prototypes and proofs of concept
Running a whiteboard retro
Managing team billing
20. What is a team library in Figma?
A team library is a Figma file whose components, styles, and variables have been published so other files can use them. It's the delivery mechanism for a design system.
Designers turn on a library from the Assets panel, then drag components into their own files. Instances stay linked to the library, so when the library owner publishes a change, consumers see an update prompt and can review it before accepting.
Libraries keep a single source of truth, reduce drift between teams, and let you ship improvements to hundreds of files in one release. Team libraries require a paid plan.
Take quiz
In the Assets panel
In the Export section
In the Prototype tab
In FigJam's timer menu
All files change instantly with no notice
The old components are deleted
Users get an update prompt they can review and accept
The change only appears after exporting
21. What is the difference between a frame and a group in Figma?
Both hold child layers, but a frame is a real container and a group is only a selection wrapper.
| Frame | Group |
| Has its own fill, stroke, radius, and effects | No fill or stroke of its own |
| Can clip content | Cannot clip content |
| Supports Auto Layout and layout grids | Supports neither |
| Children can use constraints relative to it | Children use constraints relative to the nearest parent frame |
| Can be a prototype starting point | Cannot start a prototype flow |
| Keeps its size when children move | Resizes to the bounding box of its children |
Use frames for screens, cards, and layout containers. Use groups for quick, lightweight bundling, such as an illustration made of several shapes.
Take quiz
Contain multiple layers
Be renamed in the Layers panel
Apply Auto Layout
Be moved on the canvas
The group resizes to the children's bounding box
It stays the same and clips the child
It converts into a frame
It locks the child in place
22. What are component properties in Figma?
Component properties are controls you expose on a component so people can change it from the properties panel instead of digging into layers. There are four kinds:
- Variant: pick between variant values such as Size or State
- Boolean: show or hide a layer, like an icon or helper text
- Text: edit a text layer's content
- Instance swap: replace a nested instance, like an icon, with another component
They keep a button's "Show leading icon" toggle or label field in one tidy place, and they cut the number of variants you must maintain. A button with three sizes, a leading icon, and a trailing icon would need many variants without boolean properties.
Take quiz
Text
Instance swap
Variant only
Boolean
Boolean
Instance swap
Text
Grid
23. What is the difference between Hug contents and Fill container?
Both are resizing options in Auto Layout, but they respond to different things. Hug contents sizes a layer to fit what's inside it. Fill container makes a layer expand to use the space available in its parent.
| Option | Sized by | Typical use |
| Hug contents | Its own children | Buttons, tags, cards that wrap their content |
| Fill container | The parent's available space | Inputs or columns that stretch across a row |
| Fixed | A value you type | Icons, avatars, set-width elements |
A common pattern: a card is Fill width inside a screen, with Hug height so it grows with its text. Fill only works when the parent is an Auto Layout frame or a frame with a set size on that axis.
Take quiz
Hug contents
Fill container
Fixed
Scale constraint
Hug contents
Fixed
Fill container
Flatten
24. What is the difference between constraints and Auto Layout?
Constraints and Auto Layout both help layouts adapt, but they work differently. Constraints pin a child to its parent's edges when the parent is resized by hand. Auto Layout makes the parent calculate the position and size of children from spacing, padding, and content.
- With constraints, each child is placed manually; the rules only react when the frame resizes.
- With Auto Layout, children flow in order, so add or remove one and the rest reposition.
- Auto Layout children ignore constraints, unless a child uses absolute position, in which case constraints apply again.
Use Auto Layout for most UI structure, and constraints for overlays like a badge pinned to a corner or a hero image that stretches.
Take quiz
Constraints
Layout grids
Auto Layout
Boolean operations
When the child uses absolute position
Always, in every Auto Layout frame
Only when the frame is a group
Never, under any setting
25. What is the difference between styles and variables in Figma?
Styles bundle several properties into one named set, while variables store single values that can change by mode. They overlap for color, but each has things the other can't do.
| Styles | Variables |
| Text, color, effect, and grid bundles | Color, number, string, and boolean values |
| One definition, no modes | Multiple modes (Light, Dark, Compact) |
| Color styles can hold gradients and images | Color variables are solid colors |
| Cannot drive prototype logic | Can drive conditions and set values in prototypes |
| Cannot alias another style | Can alias other variables |
In practice, many teams use variables for color, spacing, and radius and keep text and effect styles for composite definitions that variables don't bundle.
Take quiz
Grid styles
Effect styles
Text styles
Variables
Color variables
Color styles
Boolean variables
Number variables
26. How do variable modes work in Figma?
A mode is a named column of values inside a variable collection. Every variable in the collection holds one value per mode, so switching the mode swaps all of those values at once.
A typical Theme collection has Light and Dark modes. The variable bg/surface might be white in Light and near-black in Dark, and every layer bound to it follows the active mode.
- Create a collection and add a second mode.
- Enter a value for each variable in each mode.
- Bind layers to the variables instead of raw values.
- Select a frame or section and apply the mode you want.
Child layers inherit the mode from the nearest parent that sets one. That's how you can place a dark card inside a light screen. Prototypes can also change modes with a Set variable mode action, so a theme toggle can really work.
Take quiz
One value for each mode
One value shared by all modes
A copy of the whole frame
A prototype interaction only
Detach every instance in the card
Duplicate the whole library
Apply the Dark mode to the card's frame
Rename the variable to dark
27. What happens when you detach an instance in Figma?
Detaching an instance cuts its link to the main component and turns it into a plain frame. It keeps its current appearance, including any overrides, but those values become ordinary properties.
- It no longer receives updates when the main component changes.
- You can now add, delete, and reorder layers freely.
- Nested instances inside it stay instances unless you detach them too.
- Reset overrides is no longer possible, since there is nothing to reset to.
The shortcut is Ctrl/Cmd + Alt + B. Detaching is useful for one-off layouts, but it's a common cause of design-system drift, so teams usually prefer overrides, component properties, or a new variant instead.
Take quiz
A new main component
A locked group
A plain frame with no link to the main component
A library style
Detached layers stop receiving updates, causing drift
It permanently deletes the file's history
It breaks all comment threads
It prevents exporting
28. What is the difference between Smart Animate and Dissolve?
Both are prototype animations between two frames, but they transition very differently. Dissolve simply cross-fades the destination frame over the source. Smart Animate finds matching layers in both frames and animates the changes between them.
Smart Animate matches layers by name and hierarchy, then tweens properties such as position, size, rotation, opacity, and fill. A toggle knob that sits left in one frame and right in the next will slide across.
- Layers with no match fade in or out instead.
- Duplicated names can cause the wrong layers to pair up.
- Easing and duration set the feel, for example ease-out over 300ms.
Use Dissolve for simple page changes, and Smart Animate for micro-interactions such as toggles, accordions, and tab indicators.
Take quiz
By layer color
By the order frames were created
By each layer's opacity only
It matches layers by name and hierarchy
Dissolve
Smart Animate
Open link
Scroll to
29. How do you build a responsive layout in Figma?
Responsive design in Figma combines several tools, and each solves a different part of the problem.
- Auto Layout for flow, spacing, and padding, with Hug and Fill sizing so content adapts.
- Min and max width on Auto Layout items so a text column never gets too narrow or too wide.
- Wrap for card grids that should reflow into fewer columns.
- Constraints for pinned items like fixed headers or floating buttons.
- Layout grids to keep columns and margins aligned per breakpoint.
Then design key breakpoints as separate frames, such as 390, 768, and 1440, and test by dragging a frame's edge to check how it resizes. Components can carry a breakpoint variant when the structure really changes, for example a hamburger menu on mobile and a full nav on desktop.
Take quiz
Wrap in Auto Layout
Boolean subtract
Prototype overlays
Effect styles
To lock the layer's name
To disable constraints
So lines don't stretch too long on wide screens
To convert it into a variant
30. How does real-time collaboration work in Figma?
Everyone who opens the same file joins it live, and each person's edits appear for the others within moments. There's no check-in or check-out and no merging of local copies.
- Multiplayer cursors and avatars show who is where.
- Comments (press
C) pin feedback to the canvas, with replies and resolve. - Observation mode: click an avatar to follow someone's viewport.
- Cursor chat (press
/) sends quick messages next to your pointer. - Version history keeps automatic saves and lets you name important versions.
Access is controlled by can view and can edit permissions, which you set per file, project, or team. Reviewers can comment without being able to change the design.
Take quiz
Export the file to a PDF
Duplicate the page
Click their avatar to enter observation mode
Ask them to detach the instance
Can view with commenting
Can edit
Owner
Library publisher
31. How do instance overrides work in Figma?
Overrides are local changes you make on an instance without breaking its link to the main component. They sit on top of the main component's values.
You can override text, fills, strokes, effects, corner radius, layer visibility, and nested instances. You can't change structure, such as adding or reordering layers.
- Properties you haven't touched keep following the main component.
- Properties you overrode stay put, even if the main changes.
- Reset all overrides returns the instance to match the main.
- Push overrides to main component promotes a local change into the main.
If a "stuck" value won't update after a library change, an old override is the usual cause. Check the instance for override markers and reset the property.
Take quiz
It is deleted automatically
It always follows the main
The instance is detached
It keeps the override value
Detaches the instance
Applies a local change to the main component
Publishes the library
Creates a new branch
32. What is the difference between Figma and Sketch?
Both are vector UI design tools with components, styles, and prototyping, but they differ in platform and collaboration model.
| Figma | Sketch |
| Runs in the browser plus desktop apps for macOS and Windows | Native macOS app, with a web app for viewing and sharing |
| Files live in the cloud, with a live multiplayer editor | Files are saved as .sketch documents and shared through Workspaces |
| Dev Mode, FigJam, Slides, and Make in the same platform | Focused on design, with a plugin and integration ecosystem |
| Anyone can open a link on any OS | Editing requires a Mac |
The deciding factors for most teams are cross-platform access and live collaboration, which is why Figma became the default for product teams that include developers, PMs, and non-Mac users.
Take quiz
Sketch editing requires macOS while Figma runs in a browser
Figma requires macOS to edit
Both can only be used offline
Sketch runs only inside a browser tab
It never stores files online
It removes the need for components
Anyone can open and work in a file from a link
It only exports to .sketch
33. What happens when you publish changes to a Figma library?
Publishing pushes the current state of the library's components, styles, and variables to every file that uses it. Those files don't change silently, though. They get an update available prompt.
- In the library file, open the Assets panel and choose Publish.
- Review the list of changed items and select which ones to publish.
- Add a short description, which consumers will see.
- Consumer files show an update badge in the library menu.
- Designers review the changes and accept them when ready.
Accepted updates flow into instances while preserving local overrides. Renaming or removing a component is the risky case, because instances can lose their link. Deprecate first, and remove later, so teams have time to migrate.
Take quiz
Automatic changes with no notification
The library is deleted from the Assets panel
An update prompt they can review and accept
A forced detach of all instances
Mark it deprecated first and remove it later
Delete it and publish immediately
Rename it to a random name
Convert it into a group
34. How do you prepare a Figma design for developer handoff?
Good handoff is mostly about making the file easy to read in Dev Mode, so developers don't have to guess.
- Build with Auto Layout, so spacing and resizing behavior are explicit.
- Use components, styles, and variables so Dev Mode shows token names, not raw hex values.
- Name layers clearly and organize screens into sections.
- Mark finished sections Ready for dev.
- Add annotations for behavior that isn't obvious, such as empty, loading, and error states.
- Prepare export settings for icons and images, and link resources, such as tickets or Storybook docs.
- Connect components to code with Code Connect where available.
After handoff, the Compare changes view lets developers see what changed in a design since they last looked.
Take quiz
It removes the need for Auto Layout
It makes the file read-only
It exports every layer to SVG
Dev Mode can show token names instead of raw values
The section is hidden from Dev Mode
That section is finished and can be implemented
The section is locked to designers
The section has been branched
35. How does conditional prototyping with variables work in Figma?
Variables can store state inside a prototype, and the Conditional action can branch on that state. Together they let a prototype behave like a tiny program, without leaving Figma.
Two actions do the work:
- Set variable: assign or calculate a value, such as
count = count + 1 - Conditional: run if/else logic, such as
if count >= 3
A login-attempt example:
On click of "Sign in": Set variable attempts = attempts + 1 Conditional if attempts >= 3 -> Navigate to "Locked" else -> Navigate to "Try again"
Number variables support basic math, booleans suit toggles and visibility, and strings can drive text such as a typed name. It's great for realistic usability tests without code.
Take quiz
Conditional
Set variable mode
Smart Animate
Open overlay
Boolean
Color
Number
String only
36. What is branching in Figma?
Branching lets you create a copy of a main file where you can make changes safely, then review and merge them back. It works like a Git branch, but for design files, and it's most useful for design system libraries.
- Create a branch from the main file.
- Edit components, styles, or variables in the branch without affecting the main file.
- Request a review from teammates.
- Merge into main, resolving conflicts if the main file changed in the meantime.
- Publish the library as usual.
That way a risky change, such as a button redesign, can be reviewed before it reaches consumer files. Branching is available on higher-tier plans, so check your plan before relying on it.
Take quiz
Exporting assets to PNG
Running a FigJam timer
Reviewing changes safely before merging them into the main file
Importing fonts
They are reviewed and merged into the main file
They publish automatically on creation
They are discarded
They are exported as a PDF
37. What is Code Connect in Figma?
Code Connect maps components in a Figma design system to the real components in your codebase. When a developer selects a button in Dev Mode, they see the team's actual <Button> usage with correct props, instead of generic CSS generated from the layers.
You write small mapping files next to your components and publish them with the CLI. Figma properties such as Label, Disabled, and Type are linked to code props. It supports React, SwiftUI, Jetpack Compose, and HTML-based frameworks, and it's part of Dev Mode on higher-tier plans.
import figma from '@figma/code-connect' import { Button } from './Button' figma.connect(Button, 'https://www.figma.com/design/FILE_KEY?node-id=1-2', { props: { label: figma.string('Label'), disabled: figma.boolean('Disabled'), kind: figma.enum('Type', { Primary: 'primary', Secondary: 'secondary' }), }, example: ({ label, disabled, kind }) => ( <Button kind={kind} disabled={disabled}>{label}</Button> ), })
Once published, snippets in Dev Mode stay in sync with how the design system is really used in code.
Take quiz
Auto-generated CSS for every pixel
A video recording of the designer
A list of unresolved comments
Snippets using their real code components and props
Disables the Figma layer in the file
Links a Figma boolean property to a code prop
Hides the component from the library
Creates a new variant
38. What is the Figma REST API used for?
The Figma REST API gives programs read access to files and many workspace resources, plus some write operations such as comments. It's used for automation that sits outside the editor.
- Fetch a file's node tree to read layers, styles, and component data
- Render nodes as PNG, JPG, SVG, or PDF for asset pipelines in CI
- Read and post comments, for bots and notifications
- Sync design tokens into code, using the variables endpoints (available on Enterprise)
- React to events through webhooks
Authenticate with a personal access token for scripts, or OAuth 2 for apps used by other people:
curl -H "X-Figma-Token: $FIGMA_TOKEN" \ "https://api.figma.com/v1/images/FILE_KEY?ids=1:2&format=svg"
The REST API doesn't edit the canvas. For creating or changing layers, use the Plugin API.
Take quiz
X-Figma-Token
Authorization-Layer
X-Frame-Options
Figma-Cookie
Yes, through the images endpoint
Yes, only in FigJam
No, that is done with the Plugin API
Yes, with webhooks
39. Explain the architecture of a Figma plugin?
A plugin is split into two environments that talk through messages. The main thread runs in a sandbox with access to the document through the figma global but no DOM or network. The optional UI runs in an iframe with normal browser APIs but no direct access to the document.
flowchart LR A["manifest.json"] --> B["Main code in sandbox"] B -- figma.ui.postMessage --> C["UI iframe"] C -- parent.postMessage --> B B --> D["Figma document"] C --> E["Network and browser APIs"]
The manifest declares the name, ID, API version, entry files, editorType, and documentAccess. Newer plugins use dynamic-page access with async calls such as figma.getNodeByIdAsync.
// code.ts (sandbox) figma.showUI(__html__) figma.ui.onmessage = (msg) => { if (msg.type === 'prefix') { for (const n of figma.currentPage.selection) n.name = msg.value + n.name figma.closePlugin() } } // ui.html (iframe) parent.postMessage({ pluginMessage: { type: 'prefix', value: 'btn/' } }, '*')
Call figma.closePlugin() when finished, or it keeps running.
Take quiz
The UI iframe directly
The manifest.json file
The main code running in the sandbox
The browser's address bar
With parent.postMessage carrying a pluginMessage
By writing into the figma global
Through a shared localStorage key
By editing manifest.json
40. How does the Figma MCP server help AI coding tools?
The Figma MCP server (first introduced as the Dev Mode MCP server) lets MCP-compatible tools, such as VS Code with Copilot, Cursor, or Claude Code, pull structured design context from Figma instead of guessing from a screenshot.
The context includes layout and spacing, variables and token names, component information, and Code Connect mappings. An AI tool can then generate code that uses your real components and tokens, rather than hard-coded values.
- Enable the server (locally through the Figma desktop app, or use the remote option).
- Connect your MCP client to it.
- Give the client a Figma link or selection.
- The client requests design context and generates code against your design system.
Output still needs review, but with Code Connect in place the results land much closer to what the team would write by hand.
Take quiz
Write access to the company's Git history
A rendered video of the design review
Billing details for the workspace
Structured design context like layout, variables, and component data
It compresses the Figma file
It points the AI to the team's real components and props
It blocks all generated code
It converts frames to PNG
41. How can you optimize performance in a large Figma file?
Slow files usually come from too many layers, heavy effects, or large images. Fixing them is mostly housekeeping.
- Split the file: keep design-system libraries separate from product files and divide big projects across pages or files.
- Remove what you don't use: delete hidden layers, old explorations, and unused components.
- Flatten complex vectors, especially illustrations with thousands of points.
- Compress images before placing them, and avoid pasting huge photos.
- Go easy on blurs and shadows: background blur and big layer blurs are expensive to render.
- Limit nesting depth in components, and keep variants lean using component properties.
- Use the desktop app, enable hardware acceleration, and close extra tabs.
Hidden layers still cost memory, so deleting beats hiding for anything you won't bring back.
Take quiz
Flattening the complex vectors
Adding more blur effects
Duplicating the frames
Turning every layer into a component
Hidden layers can't be restored
Hidden layers lock the file
Hidden layers still use memory and render cost
Hiding breaks the layer's name
42. How do you troubleshoot a missing font in Figma?
A missing font shows a warning icon and a fallback typeface, which can change line breaks and spacing. Start by finding out which font is missing, then pick the fix that matches how you work.
- Open the warning from the toolbar or text panel to see the missing family and weight.
- If it's a Google font, it's already built in, so check that the exact style name exists.
- For a local or licensed font, install it on your computer.
- In the browser, install the font installer so Figma can read local fonts. The desktop app reads system fonts directly.
- If you can't get the font, use Replace missing fonts to map it to another family.
- For teams, admins on higher plans can upload shared fonts to the organization.
After fixing the font, check text boxes for changed wrapping, since fallback fonts have different widths.
Take quiz
The browser with no helper
FigJam on mobile
The Figma desktop app
The Figma REST API
Text wrapping and spacing, since glyph widths differ
The file's version name
The library's publish date
The prototype's start frame
43. Explain the lifecycle of a component in a Figma design system?
A library component moves through a predictable set of stages, from first sketch to retirement. Knowing them helps you plan changes without breaking consumer files.
flowchart TD A["Design with Auto Layout and variables"] --> B["Create main component"] B --> C["Add variants and properties"] C --> D["Document and publish to library"] D --> E["Teams enable library and use instances"] E --> F["Edit main and publish update"] F --> G["Consumers review and accept"] G --> F F --> H["Deprecate and remove"]
- Build the layout with Auto Layout and bind it to variables.
- Create the main component and add variants or properties.
- Document with a description, usage notes, and a Dev Mode link to code.
- Publish so other files can use it.
- Maintain: edit the main, publish, and let consumers accept updates.
- Deprecate: flag it, point to the replacement, and remove it only after teams migrate.
The riskiest stages are renaming and removal, because they can break links in files you can't see.
Take quiz
Detaching every instance in the library
Deleting the library file
Exporting it to SVG
Deprecation, with a pointer to the replacement
Instances are deleted
Consumers review and accept the update
Every file is replaced automatically
The component moves to FigJam
44. Explain the execution flow of design-to-code handoff with Dev Mode?
A modern handoff is a loop between design, Dev Mode, and the codebase, rather than a one-time file drop. Here is the typical flow.
sequenceDiagram participant D as Designer participant F as Figma file participant V as Developer in Dev Mode participant R as Code repo D->>F: Build with components and variables D->>F: Mark section Ready for dev V->>F: Inspect specs, tokens, snippets F-->>V: Code Connect snippet for real component V->>R: Implement using design system code D->>F: Later design changes V->>F: Compare changes F-->>V: Shows what changed since handoff
- The designer finishes a section using components and variables, then marks it Ready for dev.
- The developer is notified and opens the section in Dev Mode.
- Inspection shows measurements, tokens, and snippets. With Code Connect, snippets show the real component.
- The developer builds against the repo and links resources such as tickets or pull requests back to layers.
- If the design changes later, Compare changes highlights the differences.
Take quiz
Marking the section Ready for dev
Flattening all layers
Publishing a new Community plugin
Changing the file's name
Which developers are online
The repo's commit history
What changed in the design since handoff
Unused fonts in the file
45. Explain the internal working of Figma's multiplayer sync?
Figma's multiplayer is a client-server system. A file is modeled as a tree of objects, each with an ID and a set of properties, and edits are small property changes rather than whole-file saves.
sequenceDiagram participant A as Client A participant S as Multiplayer server participant B as Client B A->>A: Apply change locally A->>S: Send property change S->>S: Order change, last writer wins per property S-->>A: Acknowledge S-->>B: Broadcast change B->>B: Apply change
- Each client applies its own edit immediately so the UI feels instant, then reconciles with the server.
- The server is the authority on ordering. If two people change the same property of the same object, the later one wins, and edits to different properties don't conflict.
- Child order uses fractional indexing, so inserting a layer doesn't renumber its siblings.
- The server persists changes, so edits aren't lost if someone disconnects.
The design was inspired by CRDTs, but a central server lets Figma keep things simpler than a fully peer-to-peer approach. Undo history is local to each person, so you only undo your own edits.
Take quiz
Both changes are merged into a gradient
The file locks and asks for a manager
The later change, as ordered by the server, wins
The first change always wins
So the interface feels instant
To avoid sending changes to the server
To disable undo
To save bandwidth by never syncing
46. How do you structure a design token architecture with Figma variables?
A scalable setup separates raw values from meaning, using aliasing between collections. Three layers are common.
| Layer | Example | Modes |
| Primitives | blue/500 = #2563EB, space/4 = 16 |
Single mode |
| Semantic tokens | color/action/primary aliases blue/500 |
Light, Dark |
| Component tokens (optional) | button/bg aliases color/action/primary |
Follows semantic |
- Name with slashes so groups appear in pickers, such as
color/text/muted. - Bind designs to semantic tokens, never to primitives, so theming only touches the semantic layer.
- Use scopes to restrict where a variable appears, for example spacing numbers only on gap and padding.
- Publish the collections through the library, and keep names aligned with code tokens.
- For syncing to code, use the variables REST endpoints or an export plugin that feeds a build tool such as Style Dictionary.
The main payoff: rebranding or adding a dark theme means editing a few semantic aliases, not hundreds of layers.
Take quiz
Raw primitives only
Hard-coded hex values
Layer names
Semantic tokens
It locks the primitive from editing
Changing the primitive updates every alias
It deletes the semantic layer
It converts numbers into strings
47. Why does Figma run in the browser using WebAssembly?
Figma needed desktop-class speed for a heavy vector editor but wanted zero-install access. The answer was to write the core editor in C++, compile it to WebAssembly (originally asm.js), and run it inside the browser with GPU rendering.
- Performance: the rendering engine, layout, and document logic run at near-native speed, which matters for files with thousands of layers.
- Reach: any OS with a modern browser can open a link and start working, with nothing to install.
- One codebase: the desktop apps wrap the same web editor, so features ship everywhere together.
- GPU drawing: rendering has used WebGL and has been moving toward WebGPU for more headroom.
The surrounding interface, such as panels and menus, is built with standard web tooling, while the canvas is drawn by the compiled engine.
Take quiz
C++
Swift
Objective-C
Visual Basic
Files can only be edited offline
Only Mac users can join
They can open a link on any OS with nothing to install
Plugins become unnecessary
48. How do you troubleshoot overrides lost after swapping instances in Figma?
When you swap an instance for another component, Figma tries to carry your overrides across by matching layer names and structure. If the new component has different layer names or a different hierarchy, overrides can't match and are lost.
- Compare the layer trees of both components and look for renamed or reordered layers.
- Align names on text, icon, and container layers so they match exactly.
- Prefer component properties (text, boolean, instance swap) over raw overrides, since properties survive swaps more reliably.
- Check that the original override wasn't made on a nested instance that was itself swapped.
- Use Reset all overrides on the new instance, then reapply the values in a controlled order.
- Undo the swap with
Ctrl/Cmd + Zif the result is wrong, and fix the library component first.
The long-term fix is consistent naming across component families, so swaps behave predictably.
Take quiz
Swapping always resets every file
Overrides expire after a day
The new component's layer names or structure don't match
Swapping converts the instance into a variable
Exposing component properties
Detaching first
Hiding layers
Grouping the instances
49. Which is better for theming: variable modes or duplicated components?
For color, spacing, and radius differences, variable modes are almost always better. One component set reads the active mode, so there is a single source of truth. For structural differences, variants are the right tool, and duplicated components are rarely justified.
| Variable modes | Duplicated components |
| One component, many themes | One copy per theme |
| Update once, every theme follows | Every copy must be edited by hand |
| Switch by applying a mode to a frame | Swap instances manually |
| Works in prototypes with Set variable mode | Needs extra frames or logic |
| Limited to values variables can hold, mainly solid colors and numbers | Can differ in any way, but drifts over time |
Choose modes when only values change, such as Light and Dark or Compact and Comfortable density. Choose variants when the layout itself changes, for example a different nav on mobile. Mode counts are limited by plan, which is worth checking early.
Take quiz
When every layer differs structurally
When you need a different file per theme
When there are no components at all
When only values like colors and spacing change between themes
They cannot contain text
The copies drift apart as each needs manual edits
They break Auto Layout
They only export as JPG
50. How would you migrate a legacy design system to Figma variables?
Migrate in layers, from the library outward, so product files keep working during the move.
- Audit existing color, spacing, and radius styles and values, and merge near-duplicates.
- Define the token model: primitives, semantic tokens, and modes such as Light and Dark.
- Create the variable collections, with names aligned to code tokens.
- Rebind main components first. Select a component and use Selection colors to swap raw colors and styles for variables in bulk.
- Test in a branch or a copy: check both modes, prototypes, and Dev Mode output.
- Publish with a clear description so consumers review and accept the update.
- Deprecate old color styles after teams migrate. Keep text and effect styles, since variables don't replace those bundles.
- Announce and support: share a migration note, and give teams a deadline.
For hundreds of components, a plugin or the variables REST API (Enterprise) can automate creation and rebinding, but spot-check the results by hand.