FREENOW Blog
Published in

FREENOW Blog

How we set up the FREE NOW Wave Component Library in Figma

Taking a design library to the next level with Figma & tokens

How we set up the FREE NOW Wave Component Library in Figma

Where it started…

Initially, our design team used Abstract, Sketch and Zeplin. Everything worked fine, but testing Figma for a while prompted us to switch to this new tool entirely. Primarily to improve collaboration between designers, which has become especially important now that most of us work remotely.

  • the Wave DS for all our web products (more than 10).

… and how it’s going

Before starting the migration, we needed to assess the situation: what worked, what was missing and what major problems we already knew about.

A large library of components

A big number of options for text fields, buttons, and other components simplified the work on the design to a big extent. The library had almost everything we needed. Initially, there was not much need for flexibility and extensibility when the library was created. However, as more and more components were added, it became clear that they were difficult to maintain and update.

Part of our old library
Part of our old library

Non-transparent colour management

The shared library included a brand palette containing different shades of various colours. The library was quite rich, but it was not clear which colour should be used in what situation. We documented our choices and framed our onboarding, but sometimes even company veterans had second thoughts about which colour to use in specific cases.

Not transparent color management
Not transparent color management

Component implementation in code varied from design

Sometimes, these differences were small and barely noticeable, like paddings or text styles. However, in some cases, they were quite visible.

In the code, some things were better organised

With a little research, we found that some assets were organised more clearly in the code. Furthermore, the developers thought about logic for some aspects we hadn’t even considered in the design library. And much of what we discovered gave us a better idea of what our design library was supposed to be.

Best practices

When starting to work on a new platform, it is very important to learn the best approaches for solving certain problems. One of the significant advantages of Figma is its huge community. And this is not just a huge number of articles and various kinds of video tips. Figma has made the community a part of its platform: there is a special “Community” section where you can find layouts, templates, plugins and widgets published by users themselves. And it’s all a great source of inspiration.

Figma community
Figma community

Naming convention

One of the things we decided to adopt from the developers was the naming convention.

An example of an API draft for new design library components
An example of an API draft for new design library components

Design tokens

While trying to solve several problems, such as transparency in dealing with colour, size, and other properties, we realised a lot can be solved with design tokens.

Tokens everywhere
Tokens everywhere
Figma Tokens plugin

Naming convention for tokens

Studying the experience of other companies, we realised that the naming convention for token design requires separate attention. For this, we also had to take into account the plugin’s own naming convention, which imposed certain restrictions. Our developers fixed this issue in later versions.

Naming convention
Naming convention
Naming convention — example
Naming convention — example
Existing variables
Existing variables

Token types

Brand identity is one of the foundations of the colour system in any design system. In our case, this meant that not only did we need to identify the brand colours, but also set a clear reference to them for all the other colour tokens. To do that, we needed to categorise the colour tokens by their type.

Base tokens
Base tokens
Common tokens
Common tokens
Component tokens
Component tokens

Migration

One does not simply…
One does not simply…

Backlog

It is not uncommon for components to depend on each other. The dependency can be direct, if one component contains the other, or indirect. For example, if both components have a common structure and it makes sense to create/design them together to take into account different cases.

Review

To track the work we used a simple kanban board in Trello with “To do”, “In progress”, “In review” and “Done” columns. Even when working on components in a team of two people, it is important to have a dedicated “In review” column.

Trello board
  • To check for errors. We all make mistakes and it never hurts to have a second look.
  • During work, sometimes the eye gets tired. Some simple things are no longer visible, and you need someone with a fresh view.

A simple documentation

Initially, due to limited time for migration, we planned to go without documentation and just recreate all the components in Figma. However, in the process of working on the first components, we realised that it’s better to prepare the simplest documentation at once. In particular, we needed to document what tokens are used in the components. At the same time, for some complex components, we also needed to describe how to work with them in Figma.

Basic documentation
Basic documentation

Component block template

With the emergence of additional documentation for each component, the need to somehow arrange everything together arose. Preparing a template that would be used to describe all the components was ideal.

Template description
Template description
Example of several components sets
Example of several components sets
Components for documentation
Components for documentation

Restructuring the library

We added more and more components to the library until we started running into issues related to performance: with so many components on one screen, Figma rendered with significant delay. The solution was to split the library into separate pages and restructure the content.

Library pages
Library pages

Release. Releases.

After we added all the main components to the library and having finally published it, it was necessary to keep track of all the changes.

Component update notification
Component update notification
Update dialog
Update dialog
  • MINOR version when we add functionality in a backwards-compatible manner, and
  • PATCH version when we make backwards-compatible bug fixes.
Releases
Releases

Stage two

After the release, it became important to start tracking how designers use the library and to test components in real-life situations. When it comes to tracking usage, Figma offers great built-in tools, like analytics. They include information starting from the projects or files in which certain components are used, to “unofficial dissatisfaction statistics”, i.e. how many times this or that component was detached. Detachment often shows that something is wrong, or perhaps the designer is missing a certain functionality in the component.

Library statistics
Library statistics

Introducing token design in development

Initially, the decision to transfer the library to tokens was dictated in many respects by the desire to be closer to development. The developers helped tremendously to deal with what they had in the code. However, at the first stage, tokens worked only within the Figma library.

Reviewing the token naming convention

To start with, we analysed our token structure together with the developers and made small changes to the naming convention. Largely for the greater convenience of “coding”.

Naming convention review
Naming convention review
Restructuring color tokens
Examples of inconsistencies
Examples of inconsistencies

Code migration

The colours were the first to start with during code migration. Thanks to the fact that the Figma tokens plugin stores everything in a regular JSON format, it was enough for us to pass the code to the developers. With minor modifications, all we had to do was to send the code to the developers.

Tokens in Figma and code
Tokens in Figma and code
Button component code with tokens
Button component code with tokens

Contribution

Wave is currently supported in code and design by a small group of people. Ideally, the design system should be OpenSource and, at least within the company, everyone should be able to contribute. And for this, we created a special section in our library “ReadMe and HowTo”, which describes the basic information and also briefly explains how someone can make changes to the library.

ReadMe and HowTo
ReadMe and HowTo

Future plans

The migration of the Wave library into Figma has taught us a lot. There are probably some things we would have done differently now, but overall the original plan worked as intended.

  • Migrating all components in the code to tokens, the most time-consuming part.
  • Polishing the texts in the documentation. Initially, all of the documentation was written by the designers without the involvement of our content team, because we had to first understand what we needed and how we needed it. Now that most of it is ready, we work with the content team to improve all the texts.
  • Publishing the Wave Figma library. Our library of components in the code is already published, but to make it complete we need to make the design library public too.

--

--

We provide mobility that sets people free.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store