Skip to main content

Not having to detach color variable in variables table when changing opacity

  • July 29, 2025
  • 4 replies
  • 106 views

Marie_Rang1

Hi everyone! 

 

I have seen a lot of posts here about having to detach a fill of a layer in order to change the opacity and asking for opacity to be also able to save as its own variable, but this is not exactly my wish.

 

I wish to define a variable that has a not a 100% fill, but rather references another color variable and has a different opacity without having to detach the referenced variable.

 

Example use case:

Alert component with 3 variants. In this case the “color” variable is the background in the first of the 3 variants (from left to right) and also the text and stroke color in the other two variants. “background” variable in this case only the background in the 3rd variant. 

 

In light mode it is a light blue, but a solid light blue. In dark mode, instead of having to define a whole new “dark-gray-ish blue” color to reference here, I would just like to reference the “info/main” variable, with an opacity so that we stick to the same color. For FE, this makes no sense, seeing this, having to go see what variable has this exact color code, and then adding an opacity. In this case as well, they would also find the matching variable to be “blue/500” instead of “info/main” as well and the whole connection of variables becomes pointless, if we want to change to a different shade of blue for example. Not only would I have to manually go over each variable that has a less than 100% opacity, so would the FE dev.

 

Being able to change the fill opacity of a layer without detaching wouldn’t solve my issue as well, because then the layer would also have to be transparent in light mode, which is not what we want. 

 

Pleaaaaase make this Figma, I have been needing this since the first release of the variables. 

4 replies

andrea-hg
  • Active Member
  • May 16, 2026

me tooooooooooooo


Ebuka.I
  • New Participant
  • May 26, 2026

Hello! , i built a figma plugin that allows u convert color variables to opacity variables. 

here’s the link: https://www.figma.com/community/plugin/1638120622670765737


@andrea-hg ​@Marie_Rang1 


TimikaPerez
  • New Member
  • May 27, 2026

I completely get this request and honestly it feels like a missing core piece of the variables system rather than just a “nice to have”. Right now variables are great until you try to build semantic relationships between tokens instead of just storing flat color values. The moment opacity enters the picture, the connection between semantic colors breaks apart and suddenly you’re back to manually maintaining hex values again.

What you’re describing is basically token composition: being able to say “this variable equals info/main at 12% opacity” while still inheriting updates from the source variable. That would make dark themes, overlays, subtle backgrounds and state layers so much cleaner both for designers and developers. Otherwise every future color adjustment becomes a maintenance nightmare because transparency variants stop being linked to their parent token logically.


Ebuka.I
  • New Participant
  • May 27, 2026

@TimikaPerez 

You hit the nail on the head with "token composition"as that is exactly the structural piece missing from Figma right now.

I got completely burned out by the maintenance nightmare of manually rebuilding static transparency variants every time a master brand primitive shifted. Because a native platform fix is still pending, I built a utility called Sheer to solve this exact bottleneck.

It implements the precise workflow you just described:

  • Preserves the Reference Chain: Define transparent relationships (e.g., info/main at 12%) while keeping the live link back to the parent token intact.

  • Smart Sync Auditing: If a master color changes, a single click scans your file and automatically realigns all your transparent state layers.

  • Clean Dev Handoff: Bypasses Figma's raw hex fallbacks to output production-ready CSS variables using modern color-mix() syntax.

It runs entirely inside Figma client storage and is free to try for a few generations a week. I'd love to know if it fixes your workflow!

 


Here’s the link: 
https://www.figma.com/community/plugin/1638120622670765737