Skip to main content
Seamus_Leonard2
New Participant
August 7, 2026
Question

Variable-driven variant switch instance drops overrides

Summary

When a nested instance has its variant property bound to a variable, changing the variable's value (via mode switch) correctly switches the variant but resets instance swap overrides to their defaults.

Steps to reproduce

  1. Create a component set Button with:
    • Variant property: State (enabled, disabled)
    • Exposed instance swap property: Icon (default: any icon)
    • Add a text varinat
  2. Create a variable collection with two modes (e.g. "rest" and "disabled")
  3. Add a string variable button/state with values: rest → "enabled", disabled → "disabled"
  4. Create a second component Wrapper and place a Button instance inside it
  5. Inside Wrapper, override the Button's Icon to a different icon, and update the text string
  6. Inside Wrapper, bind the Button's State variant to the button/state variable
  7. Place an instance of Wrapper on the canvas
  8. Switch modes on the Wrapper instance

Expected

Button switches State. Icon/Text override persists.

Actual

Button switches State. Icon override resets to the component default.

Notes

  • Manual variant switching on the same nested instance preserves the override
  • Variable-driven switching on a top-level instance (not nested) preserves the override
  • Only the combination of variable-driven + nested instance loses overrides


     

    2 replies

    djv
    Figmate
    Community Support
    August 10, 2026

    Hi ​@Seamus_Leonard2, thanks for flagging this and including so much context!
     

    Narrowing this to variable-driven switching only when the instance is nested is exactly the detail our team needs.

    You're right that this isn't expected. Override transfer through a variable-bound variant swap has improved a lot, and most cases now should preserve overrides. The ones that still drop them tend to involve a nested instance plus an instance swap, which does match your setup. Please know that we're treating these specific issues as bugs, not intended behavior. In the meantime: right after the override resets, try Undo (⌘Z / Ctrl+Z) and switch the mode again. In similar reports the overrides will stick on the second pass. Two questions, so we can file this accurately:

    • Could you share a file URL link (with Can view access for support-share@figma.com)? While the recording is helpful, the team needs the actual layer structure and variable setup to find the root cause.
    • Does the text override reset alongside the icon, or is the icon the only one?

    For reference, Apply changes to instances covers which changes are preserved through a swap. If you’re able to send the file over, our team should be able to investigate further. 

    Hembrador_Randy
    New Participant
    October 21, 2026

    I’m getting this error too. i’ve created component sets to represent responsive rows at different breakpoints

    Example: component set named “xs 12; md 6|6” has 2 variants

    • Default variant named xs with 2x 12-col width placeholders (stacked)
    • 2nd variant named md with 2x 6-col width placeholders (aligned)
    • A variable in my Responsiveness library named “Breakpoints/1 @ md” (uses a value of “xs” for xs → sm modes, and “md” for md → xl modes)

    This generally gives me responsive rows I can use in a design (replace placeholders in a row instance with content, bind row variant to the “1 @ md” variable, then switch variable modes to preview design at different breakpoints).

    I noticed that this only works, however, if object consuming the component has its own mode set to something that triggers the secondary variant of the row component

    e.g. when I make new pages that consume the row component, the page has to be set to “md” responsive mode to trigger the md variant of the row components. If master component is not set to md (i.e. row components revert to their initial xs state) instances of the page won’t remember any of the row overrides when if I set them to md or higher.