← Back to Operations: In practice Case study

Consolidating three design systems left one library and the process that kept it that way.

A nine-month program across design and development: four audits, one set of rules for every component, and a governed path for every change after it.

The problem

Three design systems gave users who worked in more than one product a different experience in each. Snowflake components piled up with little documentation.

The constraint

Development was auditing its own component code on a fixed timeline. Design had to deliver its audits and decisions without leaving development waiting.

The outcome

About 260 components became one system, more than 100 were retired from design and code, and accurate component usage rose 30% in the three months after.

3 → 1design systemsdesign systems: 3 before, 1 after.
100+of about 260 components retiredof about 260 components retired: 10 of 26.
+30%accurate component usageaccurate component usage: +30% compared with before.
−34%support requestssupport requests: -34% compared with before.

Accurate usage: fewer changes and questions returned from development review about how a component was used, in the three months after the program. Usage counts were close estimates from manual audits and Figma's library analytics until components were tagged in code. In the retired chart, each square is about 10 components.

Three systems meant three sets of standards for every designer to carry

The client back end ran on legacy code and components, while the employee desktop front end and mobile used React web components. Users who worked in both the back end and the front end met a different experience in each, designers had to carry every component and standard for each system, and product managers asked for behavior from one system in the other.

Designers and the design systems team had asked for it, and product leadership escalated it once it saw how the structure caused its own roadblocks. Development was about to audit its own component code, so the two audits ran together. I led the program, and the design director, the VP of product and the development directors approved the plan.

Four audits decided the future of every component

Each component's future came from four audits and one set of rules: usage and the impact of a change across the system, how closely a modification matched other instances, a set of core components that could not change, and accessibility. Components that would cost more to bring up to WCAG than to rebuild were retired.

The code did not tag snowflake components, so senior designers and the design systems team checked usage by hand. They walked the higher-risk areas of the product with the browser inspector open, marking each location and variance, and that data set which props each component would carry.

The four audits
01

Figma usage

How often each component was used, and how many had been detached to make snowflakes.

02

Jira history

Past modification tickets that produced snowflakes, and snowflakes split again and still in use.

03

Code audit

Development's review of component code not updated in a year, showing where developers had built their own.

04

Most-used patterns

The most common components and patterns, checked against the documented guidelines.

Retired components left design at once and left the code project by project

From the start, no new design could use a retired component. New projects updated their code as they deployed, and the most common user flows were audited and handed to development and product management to build during development's own initiative.

Teams pushed back only when they lacked the bandwidth to rework a design, which is why the rollout followed project timelines. Designers had wanted the consolidation, and their buy-in was in place before it began.

Nine months, design and development
Design
AuditsDecisionsDocs and rollout
Development
Code audit
Development initiative starts
0369Months
  • Design program
  • Development work
  • Overtime to hold the date
Design: Audits (0 to 3); Decisions (3 to 5); Docs and rollout (5 to 9). Development: Code audit (0 to 3); (9 to 10). Milestone at 9: Development initiative starts.

Design: audits, then decisions and the request process, then the documentation site and rollout. Phase lengths are approximate. Development set the start date it was willing to wait for, and design finished the documentation in overtime to meet it.

A change request had to arrive early and prove itself beyond one project

Requests had to arrive while a change was still cheap to make. I ran the design systems team's project management and already owned the department's delivery reporting, so I made the call on requests that would put a delivery date at risk. Testing in other experiences decided whether a change stayed a snowflake or became a permanent prop.

The path of a component change
01Request in JiraTied to a project still in early discovery, with links, a summary, and the pros and cons of the change.
DeclinedLess than four weeks of design delivery left, or first raised at final review. The designer revises to use the component as intended.
02Working sessionA design systems team member explores the use case with the designer.
Solved without a changeA workflow that works with the component as it is.
03ReviewThe design systems team reviews the request; KP checks its effect on delivery dates.
DeclinedThe change would put a delivery date at risk.
04ApprovalsDevelopment, the design managers and the accessibility expert, each against their own minimum criteria.
05Usability testingIn the project, then in other experiences. Complex or widely used components are tested in more of them.
SnowflakeDocumented and limited to the product that needs it.
New propA permanent change to the component, available across the system.
Step 1: Request in Jira. Exit: Declined. Step 2: Working session. Exit: Solved without a change. Step 3: Review. Exit: Declined. Step 4: Approvals. Step 5: Usability testing. Outcomes: Snowflake; New prop.

Every release reached the people it changed

Approved work followed a Jira template applied on approval. Releases were announced in the monthly operations meeting and a Teams channel, and designers picked one of three review sessions for each release. A snowflake for one product got a session with that product's team on how and when to adopt it.

Documentation moved to an internal site that designers could link from their files and Jira tickets. It filled the gaps in what existed instead of rebuilding its structure, and support requests fell about 34%.

A component page on the documentation site
Recreated
Design system documentation
ButtonCardData tableDate pickerModalTabs
1Data tableClient back endEmployee desktopMobile
2Interactive propsDenseSortableSelectable
3In patterns
4Design guidance
5Development guidance
6Best live examples
7Changelog and requestsDateChangeOutcome
8Questions
9Request a changeBook a review
  1. 1
    PlatformsWhich platforms the component belongs to.
  2. 2
    Interactive propsHow each prop changes the component.
  3. 3
    Pattern prototypesThe patterns it appears in, and how its props behave there.
  4. 4
    Design guidanceDesign and UX guidance, kept apart from development guidance.
  5. 5
    Development guidanceIncluding how to tag the component in code so usage can be tracked.
  6. 6
    Live examplesLinks to the best examples in the product.
  7. 7
    Changelog and request logWhere each change lands, and every request with its outcome.
  8. 8
    QuestionsEach new question becomes a Jira task, so support time is tracked.
  9. 9
    Request and bookingSubmit a change request or book a review in office hours.
1. Platforms: Which platforms the component belongs to.. 2. Interactive props: How each prop changes the component.. 3. Pattern prototypes: The patterns it appears in, and how its props behave there.. 4. Design guidance: Design and UX guidance, kept apart from development guidance.. 5. Development guidance: Including how to tag the component in code so usage can be tracked.. 6. Live examples: Links to the best examples in the product.. 7. Changelog and request log: Where each change lands, and every request with its outcome.. 8. Questions: Each new question becomes a Jira task, so support time is tracked.. 9. Request and booking: Submit a change request or book a review in office hours..

The documentation ran past its estimate, and the team worked overtime to hold development's date

The documentation and manual audits ran past their estimates. Documentation reviews took longer, the CEO moved several feature deployments forward by months, design leadership needed more time to agree on the final list, and code not deployed to standards made the audits harder. The team worked overtime so development did not wait.

In practice

USF behind eight real operational initiatives.