Building a component library from scratch for Alfa‑Online, Mobile Bank of the Year in Russia

2020–2023

In this case study, I would like to describe how I created and maintained an enterprise-level component library for Alfa‑Bank.

I will start with my role as a solo designer who built a component library from scratch, growing its user base from 3 to 50+ in 3 years, and established library standards.

Then, I will describe my role as lead designer who managed the design system team and found essential tools and processes for creating an enterprise-scale component library utilized by 44 teams and over 1,000 files.

Context

At the beginning of Alfa‑Online’s creation, no designer was responsible for the components. Only three product designers maintained the component library in their limited free time from product tasks. Therefore, they needed me to make the library complete and consistent.

Documentation before improvements

I aimed to develop the tools and processes designers and developers need to build top‑level user experiences on any device.

My Objective

Create the web components library to help product designers and developers build world-class user experiences on desktop and mobile.

My Role

As a Component Library Designer, I worked closely with product designers and developers.

My permanent task was to bridge the gap between design and code. My knowledge of HTML, CSS and JavaScript fundamentals helped me collaborate better with developers.

I also connected our product team and the core design system. Alfa‑Bank has many directions like B2B, investments, mobile apps. However, all directions need to respect the principles of the core design system.

Role Scheme

Requirements

My primary task was to create and maintain an enterprise-level component library.

On the one hand, I had first to develop the principles and standards of the library. It is vital for scaling, enhancing, and supporting in the future. On the other hand, product teams were experiencing critical component shortages.

So, I was obligated to do a lot of work quickly but with precision and care. It was a big challenge for me.

It would be best to prioritize creating and describing components for current tasks. We must avoid getting carried away with perfecting general principles to the detriment of solving product problems.

— Lyudmila, Product Designer

Research

Initially, I audited the library and processes and asked for feedback from designers and developers. They helped me determine pain points and disadvantages. Here are the problems I identified.

Problems

Hardcode

Local build due to lack of components and detached components due to lack of flexibility.

No documentation

Few instructions. Needs to be clearer on how components work.

Inconsistency

Different components are described in different ways. Need help finding the right component.

Many errors

No control over components linked from other libraries. No established rules for building and naming components.

Little communication

People need to figure out who to contact if questions arise. It needs to be clear how the component library affects teams’ work.

To deal with these problems, I put together a plan.

In my opinion, building a solid foundation for future growth is essential because we can’t quickly and easily replace a design system with another one. It is a complex system of components, rules, principles, and processes.

My plan included establishing library standards, devising a convenient structure, innovating a semantic naming system, and creating a universal documentation template.

Plan Graphics

Component Control

There were two types of components:

❖ Alfa‑Online components: Only for our needs and our team.

❖ Core components: Any department in the company used them to achieve consistency across different directions and platforms.

However, using components directly from that library was uncomfortable because any change to these components caused a reset to the instances in our files. We had no control over components pasted from the core library.

My first solution was to get autonomy.

I offered my team to use components from our library only. We agreed that I was responsible for the quality of the components.

This approach ensured that instances would not reset in our files suddenly.

For the core components, I created duplicates that look just the same. But they had advanta­ges for product designers on my team.

I built those components to be easy to use in everyday tasks.

I also didn’t overload components with features that we don’t use. This approach simplified working with the design system. Moreover, because of this method, I protected the library from common mistakes and cumbersome components.

In addition, some of the components I developed for Alfa‑Online have been transferred to the Core Design System so all the bank’s products can use them.

Component Types

Crafting handy components that designers don’t want to detach

I have my proprietary methodology for assembly and building components that designers find convenient. My approach to making any components is based on the idea of modularity.

I don’t make bulky components with a massive number of variants. That’s something you see a lot. I call it a Component Matrix. And I don't consider it the best solution for components.

Component Matrix 👎

First of all, such components are often ballooned. The number of variants can reach several thousand. It significantly overloads the library. These components are problematic to maintain and change.

In addition, it leads to irrelevant variants. Designers may mistakenly customize the component in a way it should not look like.

Matrix Methodology

Mechanism 👍

My methodology represents a component as a mechanism that is made up of parts.

It reduces the number of variations. These components are easier to use and maintain and almost impossible to misconfigure.

This approach makes adding or modifying each part quickly and efficiently possible. It also allows you to prepare frequently used presets for the parts to complete the work of designers more easily.

PureCell Preview

Updating the library can be done up to 10x faster.

In case of refactoring, rebranding, or unforeseen circumstances, this structure allows me to update the component library faster and return to everyday workflow more quickly.

That’s why, apart from day‑to‑day convenience, my methodology is strategically fortunate.

Methodologies Comparison

I’ve built over 100 components, reviewed and refactored over 300 components made by other designers.

Over the years, I have honed my building methodology.

I participated in product designer meetups every week and watched them use components in real work. It helped me understand how to build components to make it easier and faster for product designers to use them in their work.

I shared my knowledge and experience in building components with other designers. For example, I hosted meetups every Friday, where designers and developers could come with any questions.

Zoom Meeting

Creating a widely referenced documentation template

My goal was to provide user‑friendly documentation for designers and developers. So, I collaborated with developers to find out how they can read component specifications most conveniently.

As a result, I developed a universal documentation template that is convenient for everyone. Then, I enhanced and supplemented it. But the main part remained unchanged and is suitable to this day.

Documentation Template

I made a unified template that is convenient to fill out for those who create components and view for those who use them.

This structure has been praised many times for its convenience and simplicity. Other teams in the bank have borrowed this template. Moreover, my template had a lot of attention when I showed it at the Design Systems Conference.

Thanks to the unified description structure and improvements requested by designers and developers, it was possible to ensure that users of components read all the necessary information as quickly as possible.

The status bar has started to prevent using outdated or unfinished components. The “Usage” section helped to avoid errors in layouts.

Processes

So that all the designers could work cohesively on the development of the library, I also regulated the design processes.

Teamwork on components has motivated me to create lists of defined steps and rules to help everyone work efficiently. For example:

  • Defining roles and responsibilities: who, what and how can change components in the library.
  • Guides on how to add or change a component via branches.
  • Instructions on how to submit for review and do a task in Jira.
  • Checklists for building components.

Product designers began to want to participate in developing the design system and guides.

Processes

Result

My efforts helped me create a convenient and flexible library. I showed the results of my work personally to the CEO of Alfa‑Bank.

I shared my experience in an online design systems conference with colleagues from Raiffeisenbank and Yandex.

But most importantly, I received positive feedback about the library from designers and developers inside and outside the company.

Youtube window and LinkedIn chat

Next, I had a few unique chances to test the library for resilience and durability

The first challenge was migrating to a new account in Figma

Alfa‑Bank’s designers offloaded thousands of files and restored them to the new account. My job was to revive the library, fix the detached tokens, and get the components working again.

My approach to library structure and component assembly came in handy in this case. I saved my team from unnecessary refactoring.

Thanks to the interconnected structure, it took only 8 hours for my team to rebuild a library of over 200 components. In comparison, other teams took about a week to rebuild their libraries.

Migrating Scheme

The second challenge was the massive increase in library users

By April 2022, the teams were divided by platform:

  • 7 designers in the Alfa‑Online team
  • 30+ designers were working on the mobile app

But in March 2022, all designers became cross‑platform to speed up the development of the mobile version of Alfa‑Online.

Such an influx of new people demanded extra attention from me. I had to onboard new designers, tweak processes, and ensure the library evolved while maintaining quality.

From Solo to Lead Role

Over the next six months, designers increased to 50+ people. It was transparent that such a load on me alone was colossal.

Therefore, in November 2022, the Alfa‑Online component library team emerged: me as the lead designer, two products designers and two frontend developers.

The biggest challenge for my team was the redesign in December 2022

The company set out to strengthen consistency between different platforms and areas. The mobile version of Alfa‑Online had to be visually as close as possible to the Alfa‑Mobile app.

This transition caused a refactoring of all of the Alfa‑Online files in Figma. It required switching to a new colour palette and changing the properties of several components.

While we were redesigning, we optimized the components at the same time. We removed unnecessary ones, merged similar ones, and rebuilt them. As a result, we ended up with 134 components, not counting subcomponents.

Teamwork Graphics

Metrics

The most important metric for me is receiving positive feedback from product designers and developers.

Designers appreciated the simplicity and flexibility of the components and other advantages of the Alfa‑Online library. In addition, the opportunity to ask questions at design meetups or in private messages was also beneficial.

Developers thanked me for the detailed specifications and additions to the component description template: links to the storybook, statuses, and additional comments. Moreover, my component description template became a reference for other teams.

Number of Users

In 2020, 5–6 designers and a dozen developers used the library.

In 2023, more than 50 cross‑platform designers and the same number of developers are using the library. In total, our components are used by more than 40 teams in a thousand files.

Library Statistics

Frequency of Use

The number of component insertions has increased so much in three years that it is impossible to count.

Components have been created, modified, deprecated, and rebuilt. Almost all user flows are built on existing components.

Library Statistics

Detaching and Hardcode Ratio

The Mechanism build method has proven so convenient that designers avoid detaching components in up to 99.32% of cases.

Even if they need to add features to components, it’s faster and easier than building pages on hardcode.

Library Statistics

Design and Development Efficiency

Initially, a lack of components blocked user screens’ design because some components or features weren’t available. By 2023, all screens were designed with existing components.

The number of errors has decreased thanks to onboarding, training, instructions, and regular syncs. Before, several people came in daily with problems and questions. Now, it’s one person a week.

In addition, experienced product designers now know the answers to many questions and help newcomers.

Qualitative tools and processes reduced tech debt. For instance, the “Mechanism” methodology saved the library from a drawn-out refactoring twice.

Outcomes

My most important project was building and leading this component library, where I could make the design system suitable and convenient for everyone.

Thanks to the principles I laid down from the beginning and the community of product designers, this library has a vast potential for further enhancement.

Case Study Summary

Acknowledgements

I appreciate all the designers and developers who helped me to build and maintain this component library.

Special thanks to my team members: Vyacheslav Sokolov, Evgenii Kravtsov, Semyon Knyazev, Artem Borisov, and Evgenii Sergeev.

Outro Graphics

What’s next?

Want to talk about this case study or have any questions for me? I’d be glad to chat about it.