0
100
200
300
400
500
600
700
800
900
1000
1100
0
100
200
300
400
500
600
700
800
900
1000
1100
Guide · Prototyping

How to Add a Hover Effect in Figma

To add a hover effect in Figma, make your button a component with two variants, Default and Hover. Select the component set, drag a connection from Default to Hover, and set the trigger to While hovering, the action to Change to, and the animation to Smart animate. Every instance of the button now reacts to the cursor in the prototype.

While hovering reverts on its own when the cursor leaves, so you don't need a second connection back. If the hover doesn't fire, the usual cause is a prototype interaction on the instance that uses the same trigger.

Updated Sep 24, 20264 min read
On this page
6 steps

Quick steps

1

Build the button as a component

Select the button and create a component. Add a variant so you have two: Default and Hover. Change the fill, shadow or text colour on the Hover variant.

2

Open the Prototype tab

Press Shift+E to switch from Design to Prototype, then select the component set.

3

Connect Default to Hover

Hover the Default variant, drag the + handle onto the Hover variant, and release.

4

Set While hovering and Change to

In the interaction panel choose While hovering as the trigger and Change to as the action. Change to only appears between variants of the same component set.

5

Pick the animation

Set the animation to Smart animate. Figma's own button tutorial uses Ease in and out at 150 ms.

6

Place instances and preview

Drop instances of the button into your screens and press Shift+Space to preview. Move the cursor over the button to see the hover state.

01

How to create hover in Figma with interactive components

Hover effects in Figma are interactive components. You wire the interaction once, on the variants inside the component set, and every instance inherits it. You don't have to connect each button on each screen. Figma's help centre builds exactly this in its interactive button tutorial, and the steps above follow it.

Smart animate tweens the differences between the two variants, so the fill fades and the shadow grows instead of snapping. It matches layers by name, so keep the layer names identical in both variants. The Smart animate guide lists what it can and can't animate.

Add Pressed and Disabled variants while you're there. Connect Hover to Pressed with While pressing, which also reverts when the press is released.
02

Why is my Figma hover not working?

Figma documents one cause directly: "When both interactions use the same trigger, Figma will use the prototype interaction and ignore the variant interaction." If an instance of the button has its own While hovering interaction on a screen, the variant's hover is skipped. Remove the interaction on the instance, or give it a different trigger such as On click.

  • Change to isn't available. The two states are separate components, not variants of one component set. Combine them first. See component variants in Figma.
  • Layer names differ between variants. Smart animate matches layers by name and position in the hierarchy, so renamed layers won't tween between states.
  • The font changes on hover. Changing variants can swap a custom font to Inter. Check that both variants use the same font and that it's available.
03

Why does the hover state stick?

While hovering should revert the moment the cursor leaves the layer. A forum thread titled "Hover state doesn't reset" has about 9.8k views, so plenty of people see it stick. Check that you used While hovering and not Mouse enter. Mouse enter and Mouse leave are separate triggers that fire once, on the first entry or exit (a change Figma made on November 16, 2023), and Figma documents only While hovering and While pressing as reverting on their own.

If you built hover with Mouse enter, add a matching Mouse leave interaction that changes back to Default, or switch to While hovering, which needs only one connection.

04

Can I change the cursor to a pointer on hover?

Not with any documented setting. "Cursor pointer on hover" is one of the most-viewed prototyping threads on the Figma forum (around 28.6k views), and help.figma.com has no native option for it. The closest built-in option is "Show hints on click" in the prototype options, which points viewers to clickable areas.

05

Generate every button state in one pass

Once a button has Size, State and Icon properties, checking that every combination has a working hover gets tedious. Instancer, our plugin, reads a component set's properties and lays out every combination as live instances in a labeled grid, so you can spot the missing Hover variant or the broken one before you wire the prototype.

For the rest of the prototyping basics, see how to prototype in Figma. If other interactions fail too, go through Figma prototype not working.

Ranked listThe best Figma plugins for prototyping in 2026
FAQ

Frequently asked questions

How do I make a hover state in Figma?

Make Default and Hover variants in one component set. In the Prototype tab, connect Default to Hover with While hovering, Change to and Smart animate. Every instance then shows the hover in the prototype.

Why is While hovering not working in Figma?

Most often the instance has its own prototype interaction with the same trigger, and Figma uses that one and ignores the variant interaction. Remove it or change its trigger. Also check the states are variants of one component set, or Change to won't be available.

Do I need to connect the hover state back to default?

No. While hovering reverts automatically when the cursor leaves. You only need a return connection if you used Mouse enter; pair it with Mouse leave.

Can Figma change the cursor to a pointer on hover?

There's no documented setting for it on help.figma.com. It's a long-running request on the Figma forum.

Keep learning

More in Prototyping

All guides in Prototyping