Components from the revamped design system

Carousell’s design system had drifted. Components were hard to reuse, docs were out of date, and designers and engineers used different names for the same things. I led the revamp with a clear update process, a reorganized Figma library and docs that link design to code.

What designers and engineers told me

A design system is a product too, and its users are designers and engineers. So I started with them: a survey of engineers about their pain points, and a workshop with designers. Many designers detached components and changed them, because the originals weren’t flexible enough. Even experienced designers struggled to find what they needed.

  • Confused by components that don't match

    No consistency. No clear guidelines, components built on old Figma features, and no process for keeping the system up to date.

  • Searching hard for the right component

    Hard to find things. No links between design and code, components that were hard to search by name, and no easy way to see what had changed.

  • Missing updates across scattered channels

    Poor communication. Different names for the same thing, scattered channels and no structured feedback.

A trial run with the Button

Before changing everything, I tested the approach on the Button, which is used on every platform. I invited a developer to the trial, and we compared the Button in production with the one in the system.

Button and chip variants from the audit

It showed the whole problem in one place:

  • Out of date. No auto layout or properties, so the Button couldn’t flex to what designers needed.
  • Missing docs. The usage guide was old and incomplete.
  • No single source of truth. Designers made their own versions, which widened the gap with what engineers built.

Learning from other teams

I also looked at how other companies run their design systems, and read what their teams had written about it.

Design systems from other teams: Material 3, iOS, Polaris and Microsoft Teams

Together with the trial, that gave us three changes to repeat for every component:

  • Rebuild with Figma’s newest features. Auto layout, properties and variants, which were new at the time and are standard now.
  • Docs inside Figma. Next to the component, instead of on a separate Notion page, so everything is in one place.
  • A link to the code. Each component points engineers to its code, so design and build stay in sync.

I presented the Button trial to the team and senior management. The feedback was positive, so we took the same approach to every other component.

Rolling it out

A revamp like this can’t be done by one person. I led it and set up the way the team would work:

The ownership and progress spreadsheet

Clear owners. A spreadsheet gave each component an owner, based on which team used it most, and tracked progress.

The handbook for updating a component

A handbook. A step-by-step process for updating the system, so everyone worked the same way.

A weekly update in Slack

A weekly update. A Slack post kept designers, engineers and stakeholders in the loop.

Inside the library

Every component now follows the same layout: docs on the left, variants on the right, and notes that point engineers to the matching code.

The Button page before and after the revamp

Properties and variants keep each component flexible, so designers no longer need to detach it. Each component also lists its code names for Android and iOS.

Changing the Button's size, type and label through properties
The Button's Android and iOS code names, shown in Figma

Results

Component coverage in design files
+32%
Design-to-development handoff time
−11%

Engineers also told us the library was easier to navigate, and that matching design and code made building faster.

What’s next

I set the foundation before I left Carousell. The plan from there: semantic color tokens, then font styles, spacing and shadows, all stored as Figma variables with modes.

Reflection

Designers are users too. Asking them early, instead of working alone, shaped every decision. A design system is also a team effort: trusting people and giving them clear ownership mattered more than any single component. And there is no one-size-fits-all system. The best one fits your team’s situation and builds on what already exists.

Role

Design system

Company

Carousell

Timeline

Apr–Sep 2023

Type

Design system