UXFU.com Master the craft.
Glossary / UI Design

Design System

Intermediate

A design system is a collection of reusable components, design tokens, and shared guidelines that enables product teams to build consistent, scalable interfaces efficiently – it’s the single source of truth that eliminates repeated decision-making and closes the gap between design and development.

Why It Matters

Without a design system, design decisions are made continuously and locally. Each designer on a team chooses their own spacing values. Developers interpret designs differently. A button is implemented slightly differently across five different screens by three different engineers. Over time, this accumulates into a product that feels built by committee rather than designed as a whole – because it was.

A design system is the organizational answer to this problem. When a button’s appearance, behavior, and states are defined once and documented clearly, that decision is made once. The hundredth screen that uses a button doesn’t require another decision; it requires a reference.

The business case is also measurable. Teams with mature design systems ship features faster because they’re assembling rather than designing from scratch. Onboarding new designers and developers is faster because the system explains existing decisions. Redesigns are cheaper because visual changes propagate through tokens and components rather than requiring manual updates across every screen.

How It Works / The Three Layers

A design system isn’t just a component library. It typically operates across three layers:

Design tokens are the lowest-level design decisions, stored as named variables: color-primary-600, spacing-4, font-size-body, border-radius-md. Tokens decouple the visual value from the usage context – when a brand refreshes and the primary blue shifts slightly, you change one token and the update propagates everywhere it’s referenced. This is what makes design systems actually scalable rather than just organized.

Tokens typically cover: color, typography (size, weight, line height), spacing, border radius, shadows, and breakpoints. In Figma, tokens map to variables. In code, they map to CSS custom properties or platform-specific constants.

Components are the reusable UI building blocks assembled from tokens: buttons, inputs, cards, modals, navigation elements, data tables. Components have defined variants (sizes, states, types), defined behaviors (how they respond to hover, focus, disabled states), and defined composition rules (what can and can’t be nested). The atomic design methodology provides a useful framework for organizing components from primitives up to full page templates.

In Figma, components are published as shared library items. In code, they’re framework components (React, Vue, etc.) that implement the design specification. The goal is that the Figma component and the code component are so closely aligned that handoff is a matter of pointing to the right component, not re-describing what it should look like.

Documentation and guidelines are the layer that turns a library into a system. Without documentation, designers and developers have to inspect components to understand usage rules, exceptions, and intent. Good documentation answers: when do I use this component versus that one? What content fits here? What accessibility behavior does this component implement?

Documentation lives in tools like Storybook (engineering-focused), dedicated documentation sites (like Shopify’s Polaris or Adobe Spectrum), or within Figma itself using annotations and linked docs.

Small Teams and Design Systems

A common question: does a three-person startup need a design system? A formal one with dedicated tooling and governance? Probably not. An informal one? Yes.

Even a small product benefits from defined color tokens, a consistent type scale, and a shared set of button and input components. This doesn’t need to be called a “design system” or require a dedicated Figma library with 400 components. It’s the discipline of defining design decisions once and referencing them consistently.

Invest in formalizing the system when you have multiple designers who need to stay consistent, multiple platforms (web + iOS + Android) that should share tokens, or a development team who needs specification clarity beyond design files. Scale the investment to the scale of the problem.

Real-World Example

Google’s Material Design is the most widely studied design system. Originally built for Android, it now spans Google Search, Gmail, Google Docs, Maps, and hundreds of other products across web, iOS, and Android. It enables thousands of designers and engineers across different teams to build interfaces that feel coherently “Google” without requiring centralized approval for every component decision.

Material Design’s public documentation demonstrates the three-layer model clearly: a color and type token system, components documented with variants, states, and accessibility requirements, and extensive guidelines covering when to use cards versus lists, how to structure navigation patterns, and when motion is appropriate.

Figma’s Material Design community kit further illustrates how design systems cross the design-development boundary – designers work with the same component definitions that engineers implement in code. The system exists in both tools simultaneously, maintained in sync.

How to Apply

  1. Start with tokens, not components. Define your color system, type scale, and spacing scale before building a single component. Components built without tokens are harder to maintain and can’t be systematically updated when decisions change.
  2. Audit before building. Before creating a new component, check what already exists. Design systems fail when teams build parallel versions of the same component because they didn’t know the existing one existed.
  3. Bake accessibility in at the component level. An accessible button component that handles focus states, keyboard interaction, and ARIA attributes correctly means every product that uses it inherits that accessibility. Remediation at the page level is far more expensive.
  4. Treat the system as a product with an owner. Design systems need maintenance, versioning, and a clear ownership model. A system with no owner accumulates inconsistencies and eventually gets abandoned. Assign someone responsible for reviewing contributions and maintaining documentation.
  5. Document decisions, not just specifications. The most valuable documentation explains why a component is designed the way it is, not just what it looks like. A future designer who understands the reasoning can apply judgment when edge cases arise; one who only knows the visual spec cannot.

Common Mistakes

Confusing a component library with a design system. A Figma file with components is a component library. A design system includes the tokens that define components, the code implementation, the usage guidelines, and the governance process. Without the last three, even a well-built library degrades into inconsistency over time.

Building for the ideal rather than the current state. Design systems created at an idealized “version 1.0” that don’t reflect the actual product get ignored because they’re irrelevant to daily work. Start by systematizing what exists, then evolve toward the ideal incrementally.

No adoption strategy. A design system that teams don’t use solves nothing. Technical quality matters, but adoption requires active evangelism, tooling integration, and making the system the path of least resistance – not an extra step that slows designers down.

  • Atomic Design – the component hierarchy methodology that design systems are commonly built around
  • Color Theory – how color tokens are defined and structured within the system
  • Accessibility – the requirements that should be baked into every component from the start
  • Wireframe – the template and layout patterns that a design system’s higher-level components encode

Further Reading