Skip to content

Figma Limits

Variable limits

Figma imposes hard limits on variables:

  • 5,000 variables per collection (FIGMA_LIMITS.variablesPerCollection) -- Systema tracks this per collection and shows a capacity bar inside the header pill's expanded panel. Collections exceeding the limit are flagged in red and Push Vars is blocked. The push backend also runs a pre-check: if any target collection would exceed 5,000 after the push (existing Figma variables + incoming new paths), it posts push-limit-exceeded and cancels the push, offering to retry in Granular structure (which splits big collections per surface level).
  • No hard limit on total variables -- but large numbers slow Figma down. The Push Vars confirmation dialog always appears and reads "This will create N variables. Continue?"; when N > 5,000 it adds "This may take a while." The status dot turns red once total variables exceed 20,000 (dot tooltip "Too many vars"; the expanded warnings panel spells it out as "Over 20,000 total variables") as a soft warning, but that alone doesn't block the push.

Figma's free plan does not support multiple modes in a variable collection. Systema detects this at startup:

  1. Creates a temporary collection
  2. Attempts to add a second mode via collection.addMode()
  3. If it succeeds → paid plan → enables Push Vars
  4. If it throws → free plan → disables Push Vars with a tooltip explaining why
  5. Cleans up the temporary collection

This check runs once on plugin load. The result is stored in canCreateVars state.

Header pill calculation

The global header pill (top of the plugin window, next to the theme selector) shows a live summary:

text
44,109 total · 27,821 gen · 16,290 dup · 312 aliased · 2 modes · 27 col
  • total = generated + skipped duplicates (theoretical maximum)
  • gen = actual tokens that will become Figma variables
  • dup = a contrast slot whose per-mode values are identical to the previous contrast slot in the same colour group (successive contrast steps that clamp to the same gamut tone across every mode), skipped via the Skip duplicate tokens setting (default on). Only shown when > 0.
  • aliased = tokens pushed as Figma VARIABLE_ALIAS references to a canonical token instead of as independent COLOR variables (only when Alias duplicate tokens is on). Only shown when > 0.
  • modes = number of enabled modes (totalModes)
  • col = number of collections

The pill's status dot is emerald when all is well, amber when there are warnings, and red when there are no tokens, a collection is over the 5,000 limit, or total variables exceed 20,000.

The collection grid (expandable) shows each collection with a capacity bar coloured against the 5,000-variable limit: emerald below 60%, amber 60–90%, red at 90% or above. The grid also surfaces the current structure (Compact / Balanced / Granular) and a one-click "Switch to …" recommendation when a different structure would help.