I am working on building a design system using components, variants, and variables. I noticed that you can publish variables so that other files can access the variables from the library, but you cannot make any adjustment to those variables. Is there a way to fix this or am I missing something?
Here is the scenario. I want to have a field with a label. I want the label to have a text variable for the required field indicator. On project 1 I want to use the word “Required” to indicate required fields but on project 2 I want to use an “*”. I want to use a variable in my design system for the contents of the required indicator so that it can be adjusted across all of the components that have the ability to be required at once when I start the new design.
This same thing would apply to a bunch of other attributes of my design system. What is the point of variables in the design system if you can’t adjust them and have it affect all of the things that use them?
Hey there, thanks for reaching out!
It sounds like you’re referring to being able to change modes, which should change the value of the variable from “Required” to “*”?
If so, here’s a help center article on how to author and change variables modes that should help:
Figma Learn - Help Center
I am not referring to mode change. I do see that mode change is possible today. What I really want, and what I think would make variables more usable for large companies who use their design systems for many clients, is the ability to adjust variables on use but have it adjust the default values across the file.
As I said in my post, I want to set a default value for something (as a variable in my design system) and then let the designer change the default value to something else when they use it in their file. This is just like how most code frameworks work. For instance Bootstrap. When you use it, it comes with a base setup for the color for “primary” but then when you use it, you can override the variable for the color “primary” to make it match that specific project’s color. It makes the design system/framework strong (it defines the base values for optimal/quick use, but allows each implementation to adjust those defaults.
Without this, we would have to just copy our design system from project to project and then adjust and publish more components. This makes design systems project-specific instead of enterprise or team specific. Variables could be the feature that takes the design systems to the next level.
Thanks for clarifying!
We’ve updated your topic to a feature request and the Variables team is already looped in to consider this for the future.
Great, thanks. So you are saying that it isn’t possible right now? If not, what is your suggestion on how to implement this? Would I create local variables and go to each component as I use it and override the values?
As a workaround, in order to be able to specify a “default” variable value in each file that uses that variable, you can set the modes on the file’s pages. In the previous help center link, there’s a section on “Switch modes on a page” that will explain this a bit more.
Yea, that won’t work because we already have modes for things like light and dark . We would have to multiply modes by how many clients we have, which would be crazy. Also, the projects are unique clients so we couldn’t share the designs with everyone every time. Like if we had a mode for Client 1, Client 2, Client 3, we would also have to have a mode for Client 1 - Dark, Client 1 Compressed, Client 1 Light, Client 1 Expanded… etc. and that would become way too many. We service hundreds of clients per year 😦
Thanks for the help and suggestions. If you think of some other way, please do let me know.
That is what i’m looking for: edit the ‘brand-colors’ to meet my clients brand color for that specific file/project!
@dvaliao hey Denise, if you have a workaround to change a publish variable library locally to meet my client colors let me know, please!
Exactly. The variables don’t work much for us unless we get this. We build design systems that are used by multiple projects and clients. If we can’t change things like colors or sizes of border radius, it makes using variables in the system a waste of time a bit.
simple as that. Variables was meant to be scalable but it is not at the moment due to this limitation!
@Corey_O_Brien @Ygor_Henrique Be sure you guys voted the post! 🙏
We definitely need this!
As a user of a library, I want to be able to update and/or override Library-defined variables so that I can theme different files without core access to the Library
@dvaliao can you give an update/feedback from the Figma team for variables if they put this into the roadmap and if so when you estimate it to arrive ?
To me this seems an essential feature as @Corey_O_Brien describes it is same for me and I wonder how we could spread more upvotes to this! Thanks
What I am trying so far is:
Publish my components that do use variables as a library but exclude the variables from publishing. Then in the file using the library, create the same-named variables.
Instances do carry the variable name - but the values do not stick to the local variables.
I wonder if there could be a plugin / script to run through all variables and connect them.
Hey @Martin_Bertele, thanks for following up!
The team is already aware and monitoring this thread, but they don’t have a timeline to provide at this time. Be sure to keep an eye out on our future releases.
A workaround: export/import variables plugin to have them locally and then edit them.
Unfortunately, this plugin is useless because it doesn’t create references to the imported variables for existing components. This means they continue to use the original design system’s variables, requiring you to manually adjust them to the newly imported ones, which can become an incredibly tedious task.
For companies with many clients who want to reuse their corporate design system with some adjustments in branding and UX writing across various projects, this feature could have immense value that cannot be overstated.
@dvaliao we all would be glad for even a small hint if it’s in the roadmap or not 😉
Would love too see this as a new feature! 😍 I’m in the same situation as @Corey_O_Brien, build my own design system that I would like to use in different project/clients that have different color variables.
Yes please. This would be great.
Just dropping in to say that this would be an awesome feature! I’m in literally the same situation as the OP and a feature to have a non-destructible, but locally editable and manageble library of variables would be a life saver
Same situation here. Would be awesome if it gets implemented !
Still no update on this. Variables are a lot less useful without being able to adjust them locally when using a design system.