COMPONENT LIBRARY REFRESH

a design systems project for Understood (2021)

Surface Book - 1.png

Understanding the problem

identifying navigational pain points

As Understood started rebranding for consistency across our product suite, I’d begun to notice that designers were building large new features completely from scratch despite complex components existing in our design tools. In monitoring the dev side after this observation, I also found that we had no compunctions about growing our dev-side library, but very infrequently took opportunities to reuse components.

In order to learn more about my observations, and get to the root of the problems, I included the entire UX and front-end teams (and one intern) in usability tests. These tests measured time to task for finding components in our existing Storybook site, as well as sentiment and level of understanding around the component library.

Architectural challenges

Styles and components were Difficult to locate

The most common complaint from both designers and developers was that our components were spread across not one, but four differently-named libraries divided by programming language. While this made sense for developers, it made component reuse impossible for our design team. And, if designers don’t reuse components, developers receive no indication of what reusable components to include in their work.

It’s important to note that Understood is an organization especially dedicated to accessibility and inclusivity, as well as one that makes liberal use of lean experimentation. By not reusing components, we’d robbed ourselves of all the consistency, accessibility, and efficiency benefits that design systems are meant to provide in situations like ours.

Response breakdown from first-round usability tests in Dovetail. It’s important to note that “understands where to find components” and “found component quickly” was usually either a developer response, or was coupled with “found component by accide…

Response breakdown from first-round usability tests in Dovetail. It’s important to note that “understands where to find components” and “found component quickly” was usually either a developer response, or was coupled with “found component by accident”

System restructuring, success metrics

Alignment of taxonomy across the whole system

To solve this problem, I audited our existing components and mapped them into a single-repository structure broken down using Atomic Design-style classifications. Though a single repo was the most common request during my tests, I felt at least some subdivision was important in helping designers and devs wade through our huge collection of components.

In order to confirm that this was the best solution for us, I created a prototype version of this mapping using Zeroheight and used it to repeat my initial usability tests. To my surprise, time-to-task decreased by 72% between tests, and the new system scored a perfect 5/5 in sentiment score.

Process of reorganizing components using post-its (my favorite).

Process of reorganizing components using post-its (my favorite).

Making it happen

A brand new library structure

To solve for design concerns, I decided to organize all of our components into a single, atomically-divided library in Figma. On the engineering side, the atomic structure would be repeated across libraries by way of a library refactor.

In order to bridge the disparities between design and dev, I linked each component in Figma to its documentation page in Zeroheight, which guides engineers to where components live in code.

Cleaning this way allows developers to transfer components from languages we’re deprecating in our stack to our current framework project-by-project instead of wholesale, saving us cleanup work later on.

reorg diag.png

Proactive refinements

Synthesizing, refactoring, and pruning

Once what we already had was cleaned up, the final step would be to combine duplicates and near-duplicates into master components based on function rather than form. When these are identified, variations on components will be differentiated within the master component using parameters.

This was completed in Figma, but I’d parted ways with Understood before this vision could be realized in code. However, seeing designers start to use components from the new Figma library in features indicated to me that there was value in aligning our design system to our coded components and centralizing them for all designers.

Screen Shot 2021-04-28 at 12.46.12 PM.png