figma

The Making of the Figma Pattern Library | Figma Blog (opens in new tab)

Figma rebuilt its internal design system during the UI3 redesign after years of growth had produced inconsistent components, detached instances, and a fragmented workflow. The resulting Figma Pattern Library (FPL) was created through close designer-engineer collaboration and uses variables, APIs, and shared standards to keep design intent aligned with shipped code. Its goal is to provide both a reliable source of truth and a flexible foundation for building consistent, accessible products across Figma’s product suite.

Why Figma rebuilt its design system

  • Figma’s internal system had become increasingly fragmented as the company and product portfolio expanded.
  • Components that were intended to be identical had accumulated subtle but important differences.
  • Detached component instances made consistency difficult to maintain.
  • The upcoming UI3 rollout made these problems impossible to ignore.
  • The team needed a foundation that could support consistent, efficient development across all Figma products.

A paired design-and-engineering approach

  • A five-person team of designers and engineers led the rebuild.
  • The team modeled its workflow on pair programming:
    • One discipline would actively build.
    • The other would review and provide immediate feedback.
  • This collaboration helped bridge the gap between design intent and technical implementation.
  • The system was designed to be both:
    • A source of truth for shared UI decisions.
    • A springboard for future product development.
  • The effort resulted in the new Figma Pattern Library, or FPL.

Using variables as a shared language

  • The previous system relied on Figma styles for designers and a separate Google Sheet for engineers’ color tokens.
  • Because the spreadsheet often lagged behind product changes, designs and production code diverged.
  • FPL replaced this disconnected process with Figma variables and the Figma REST API.
  • Typography variables were introduced and aliased through existing typography styles.
  • Color styles were migrated to color variables as a centralized source of truth.
  • CSS definitions were added to color variables so Dev Mode could display the correct variable names during inspection.

Primitive and semantic color systems

  • FPL organized colors into two main variable collections:
    • Primitive variables: Color ramps organized by hue and numbered from 100 to 1000.
    • Semantic variables: Contextual names based on Figma’s dark-mode schema.
  • Semantic variables support multiple themes and products, including:
    • Light and dark modes.
    • Figma Design.
    • FigJam.
    • Slides.
    • Dev Mode.
  • Semantic variables alias primitive variables, allowing colors to be changed across themes and products without manually updating every component.
  • This structure enables shared components to adapt to different contexts while preserving visual consistency.

The practical lesson is that a scalable design system requires more than a component library: it needs shared ownership, synchronized design and engineering tokens, and variable-based foundations that can support multiple products and themes.