Home
Bookmarks
Leagues
LEARN
Courses
Career Paths
Assessments
Tutorials
Arcade
Glossary
GROW
Certifications
Log in
Glossary
Log inSign up
Courses/Introduction to Design Systems/Interface Inventory & Eliminating UI Debt
Level 5 · Auditing & Multi-Brand Theming

Interface Inventory & Eliminating UI Debt

15 min read
9 exercises
250 XP
PRO
Unlock with Pro

Ready to test what you learned?

Complete the lesson quiz and earn 250 XP.

Unlock quiz

Topics in this lesson

What Is an Interface Inventory?Quantifying UI Debt: The Power of Embarrassing NumbersCategorizing Discrepancies: Visual vs FunctionalThe Consolidation Workshop: Building Cross-Team ConsensusMigration Strategies: The Strangler Fig PatternAutomating UI Debt Prevention with LintersDesign Linting in Figma: Stopping Debt at the SourceTracking System Adoption Over TimeChallenge: Formulating an Interface Inventory Action Plan

From Course

📘
Introduction to Design SystemsBeginner · 16 lessons
Interface Inventory & Eliminating UI Debt

Lesson

Interface Inventory & Eliminating UI Debt

What Is an Interface Inventory?Quantifying UI Debt: The Power of Embarrassing NumbersCategorizing Discrepancies: Visual vs FunctionalThe Consolidation Workshop: Building Cross-Team ConsensusMigration Strategies: The Strangler Fig PatternAutomating UI Debt Prevention with LintersDesign Linting in Figma: Stopping Debt at the SourceTracking System Adoption Over TimeChallenge: Formulating an Interface Inventory Action Plan
Unlock lesson
Complete lesson and earn 250 PX
Exercise #1

What Is an Interface Inventory?

Before you can build a design system, you must understand the current reality of your product. Pioneered by Brad Frost, an Interface Inventory is a comprehensive visual audit that catalogs every distinct design pattern currently living in production.

Teams review live apps and take screenshots of every variation of:

  • Buttons and interactive links
  • Form inputs and dropdowns
  • Color swatches and text colors
  • Typography headings and font families
  • Modals, dialogs, and alert banners
  • Cards, lists, and table rows

The inventory is then arranged onto a giant digital whiteboard (Figma or FigJam) to reveal the true extent of UI debt across the organization.

Exercise #2

Quantifying UI Debt: The Power of Embarrassing Numbers

When design leads tell executives 'Our product looks inconsistent', executives often shrug it off as minor aesthetic nitpicking.

However, when you conduct an interface inventory and present hard quantitative data, leadership acts immediately:

  • 'We found 43 different shades of blue across 8 product screens.'
  • 'We have 29 distinct button styles with 6 different corner radii.'
  • 'Our checkout flow alone imports 5 different date-picker libraries.'
  • 'We load 14 separate web font files, adding 850KB of bloat to page load.'

Framing UI inconsistency as technical debt, maintenance overhead, and conversion risk transforms the design system from an optional aesthetic project into a critical business priority.

Exercise #3

Categorizing Discrepancies: Visual vs Functional

During an interface inventory, teams uncover two distinct categories of discrepancies:

  1. Visual Inconsistencies (Shallow Debt): Elements that do the exact same thing but look slightly different (e.g., three primary buttons with 4px, 6px, and 8px border radius). These can be consolidated quickly by unifying onto a single semantic design token.
  2. Functional Redundancies (Deep Debt): Four different squads built four separate modal dialog components, each with different keyboard shortcuts, focus trapping bugs, and mobile behaviors. Consolidating functional debt requires careful architecture, code review, and QA regression testing.
Exercise #4

The Consolidation Workshop: Building Cross-Team Consensus

An interface inventory should never be conducted in secret by a design team working in isolation. If designers show up and say 'Here is everything wrong with your code', engineers will become defensive.

The Consolidation Workshop Format:

  • Invite engineering squad leads, product managers, and designers to a 2-hour interactive workshop.
  • Print or display the collected screenshots by category (e.g., all 29 buttons).
  • Ask the team to vote: 'Which button variant is the most accessible? Which represents our future brand?'
  • Agree on Canonical Patterns: Together, select the 1 primary button, 1 secondary button, and 1 destructive button that will become the official design system atoms.

Shared decision-making builds organizational ownership from day one.

Exercise #5

Migration Strategies: The Strangler Fig Pattern

Once canonical components exist, how do you replace thousands of legacy buttons and forms across a giant codebase?

The 'Big Bang' Fallacy: Attempting to rewrite the entire application in one giant PR always fails. It introduces hundreds of merge conflicts, delays feature releases, and causes production outages.

The Strangler Fig Pattern (Incremental Migration):

  1. New Features First: Any newly built screen or feature must strictly use the new design system components.
  2. High-Impact Flows Second: Migrate the most critical user journeys first (e.g., Login, Signup, Checkout).
  3. Leaf Components Upward: Migrate low-level atoms (Buttons, Badges) across the app before attempting complex organisms.
  4. Sunset the Old: Gradually 'strangle' legacy code until the old UI library can be safely deleted.
Exercise #6

Automating UI Debt Prevention with Linters

Consolidating components is only half the battle. How do you prevent developers from immediately introducing new UI debt by typing color: #0052cc next week?

High-performing teams automate discipline using ESLint and Stylelint rules:

  1. Ban Raw Hex Values: A Stylelint rule flags any raw hex code (#3B82F6) or raw pixel margin (margin: 17px), prompting the developer with an auto-fix to the corresponding design token.
  2. Restricted Imports: An ESLint rule blocks direct imports of raw HTML elements (like native <button> or <select>), requiring squads to import <Button> and <Select> from @system/react.
  3. CI Check Enforcement: If a PR introduces banned styles, the automated CI pipeline fails the build before code can be merged.
Exercise #7

Design Linting in Figma: Stopping Debt at the Source

UI debt does not originate in code; it originates in design files. When a designer creates a mockup with detached component layers, custom hex values, or random 13px paddings, engineers assume those specs are intentional and write custom code.

Modern design teams use Figma Design Linters:

  • Plugins (like Design Lint): Scans selected Figma frames for missing color tokens, unlinked typography styles, and off-grid spacing values.
  • Publish Restrictions: Designers cannot submit designs for 'Ready for Dev' handoff until all components link to the published design system library.
  • Zero-Detached Components Rule: Detaching a component instance in Figma is treated with the same severity as a broken build in software engineering.
Exercise #8

Tracking System Adoption Over Time

How do you know if your migration is actually succeeding? You must measure System Adoption Coverage continuously.

Leading teams use automated scanning scripts (such as GitHub Primer's component telemetry or custom Babel AST scanners):

$$\text{Adoption Coverage} = \frac{\text{Imports from } @system/components}{\text{Total Component Instances in Codebase}} \times 100$$

  • Target Milestone 1 (3 Months): 35% adoption (all new features and core navigation).
  • Target Milestone 2 (6 Months): 65% adoption (primary user flows converted).
  • Target Milestone 3 (12 Months): 90%+ adoption (legacy code strangulation complete).

Publishing an internal monthly dashboard showing adoption progress keeps squads motivated and transparent.

Exercise #9

Challenge: Formulating an Interface Inventory Action Plan

Imagine you are hired as the Head of Design Systems for an enterprise travel booking company with 12 legacy web applications. Your initial inventory reveals:

  • 52 distinct shades of gray
  • 18 button variations with mismatched focus states
  • 4 different dialog components
  • Zero linters enforcing tokens

The 4-Step Action Plan:

  1. Host a Consensus Workshop: Convene engineering and design leads to vote on the canonical Button, Input, and Modal patterns.
  2. Tokenize Foundations: Replace 52 grays with an 8-step semantic neutral palette (color-bg-surface, color-text-muted).
  3. Implement CI Linters: Block raw hex colors and enforce @system/button imports.
  4. Strangler Rollout: Mandate all new Q4 features use the system while migrating the checkout flow.