Figma systems

Variables, component architecture and library management — plus custom plugins when the work is too repetitive to do by hand.

  • Figma variables
  • Component properties
  • Vite + TypeScript plugins

What it is

A Figma library is where most of a design system’s day-to-day life happens. When its architecture is good, designers move fast and the output maps cleanly to code. When it isn’t, every screen is a fight with the wrong variants.

How I approach it

I refactor libraries toward modern Figma: variables for the values, component properties and single-component variant sets instead of a combinatorial explosion of frames, and clean slot structures for composition. The goal is fewer components that each do more, bound to variables so a theme change ripples through automatically.

When a task is too repetitive or error-prone to do by hand — auditing token usage, bulk-renaming, syncing variables, QA passes — I build a custom plugin for it with Vite and TypeScript, so it’s testable and the team can keep running it after I’m gone.

Common problems I solve

  • Variant sets that have ballooned into hundreds of permutations nobody can navigate.
  • Hard-coded values everywhere because the library predates Figma variables.
  • Manual, repetitive design-ops work that eats hours every sprint.
  • Figma and code libraries that look the same but behave differently.

On one large design system, a library refactor like this cut a core component’s variants by roughly 80%.