Variables

How Figma variables work and how Flex organises them into collections and modes.

What is a variable?

A variable stores a value that you can reuse across your designs. Figma has four types of variables:

  • Colour: stores a colour value, e.g. #FFFFFF (white).
  • Number: stores a numerical value, such as a font size or padding, e.g. 16.
  • String: stores text, such as a button label (e.g. ‘Add to bag’) or a font family name.
  • Boolean: stores a true or false value, for example to show or hide an element.

How are variables organised in Flex Design System?

Flex organises its variables into seven collections, in three layers:

  • Primitive collections hold the raw values: every colour, size and font setting in the system.
  • Semantic collections hold tokens that point to those primitives and change depending on the mode you select (theme or breakpoint).
  • Content collections hold text strings that change with the selected language.

 

You’ll mostly work with the semantic and content collections. The primitives sit underneath them, so changing one primitive updates every token that points to it.

Screenshot of the Figma interface showing the variable collection dropdown menu

Primitive / Colour

The full colour palette: brand primary and secondary, 10 hues (blue, cyan, green, indigo, orange, pink, purple, red, teal, yellow) on a 50–950 scale, neutrals, and opacity steps for black, blue and white.

Screenshot of the Figma interface showing the Primitive / Colour variable group

Primitive / Layout

Raw layout values: dimensions (0–32px and up, used for spacing), content-width (11 widths from 106px to 1392px), screen/width and screen/height, and columns (6 and 12).

Screenshot of the Figma interface showing the Primitive / Layout variable group

Primitive / Typography

Font families (IBM Plex Sans, Work Sans, Open Sans, Montserrat) and weights (Light, Regular, Medium, SemiBold, Bold, Black).

Screenshot of the Figma interface showing the Primitive / Typography variable group

Primitive / Meta

Project details you can reuse in your files: title, sub-title, author, month, year, version, copyright and placeholder text.

Screenshot of the Figma interface showing the Primitive / Meta variable group

Why are the primitive collections hidden?

All four primitive collections are hidden from publishing. When Flex is enabled as a library in another file, you’ll only see the semantic and content tokens in that file. For example, you’ll pick from bg/primary or font/colour/link rather than a list of 160 swatches, and spacing/md rather than a raw pixel value. This keeps everyday design decisions within the system.

To change a raw value, such as a brand colour, a font family or a spacing step, open the Flex library file, edit the primitive, and publish the update. Every token that points to it will update.

Screenshot showing how to hide variables from publishing within Figma.

Do variables have descriptions?

Yes. Every variable has a description explaining what it’s for and how it responds to modes, for example “Responsive md spacing. Adapts across Small, Medium, and Large breakpoints.” You can read them in the Variables panel. AI tools that connect to your Figma file can read them too.

Screenshot showing the detail panel and variable description within the variables section in Figma.