How I audited 62 components across Figma, React and Flutter, while modernising the Figma foundations of a multi-platform design system.
Role
Senior Design System Designer
Timeline
2025
Scope
62 components audited · Figma, React & Flutter · ~10 product teams
My focus
Cross-platform alignment · Variables & theming · Migration

A system living in many places

MDS lived across multiple Figma libraries, React, Flutter and a shared token system. Over time, inconsistencies had accumulated between them, while the Figma setup itself had become outdated and harder to maintain.

I tackled this through two connected initiatives and the migration that followed:

01 · Cross-platform audit & alignment

Audit and align 62 components across Figma, React and Flutter.

02 · MDS 2.0

Modernise the Figma architecture around one Core library, variables and themes.

03 · Migration

Give ~9–11 product teams a safe, incremental path onto the new foundations.

01

Cross-platform audit & alignment

Making three implementations feel like one system

I led an audit of 62 core components across Figma, React and Flutter, comparing naming, properties, structure and visual differences.

Together with engineering, we reviewed the findings and decided what needed to change where. Alignment didn't always mean making everything identical. Platform conventions and potential breaking changes were also part of those decisions.

Stats graphic: 62 components audited, 36 actively refined, 30 in Figma, 20 in React, 9 in Flutter, and 6 legacy components deprecated.
62 components audited. 36 actively refined. 30 in Figma, 20 in React, 9 in Flutter. 6 legacy components deprecated.

From inconsistencies to decisions

The audit became a backlog I created so design and engineering could work together. On the Figma side, I refined 30 components, from smaller naming and property changes to structural changes that required coordination with engineering.

List of six change categories: naming, state properties, small refinements, deprecation, new to Core, and structure.
Changes ranged from naming and state properties to structural updates, deprecations and components added to Core.

A few examples:

What we found What changed
State properties Disabled and Loading were values of a State variant property in Figma, while code showed them as independent boolean props. Converted them to boolean properties, bringing Figma closer to the component API.
Progress Indicator The Figma component had more internal structure than was needed. Simplified the structure to better reflect how the component worked in code.
Dialog footer Figma exposed different footer configurations than the coded component. Aligned the available options with code, requiring a structural change to the Figma component.
Before and after comparison showing Disabled and Loading as separate boolean toggles instead of values of a single State dropdown.
Disabled and Loading moved from values of the Figma-only State property to single boolean properties, aligning Figma with the component API.

One recurring issue was terminology, so I also standardised component naming and documented it in a shared glossary for designers and engineers. This included conventions such as Start and End instead of Left and Right, while also documenting intentional differences between design and code.

Glossary entries defining terms such as Device, Disabled, and End slot, documenting Figma and code terminology.
The shared glossary documented terminology and intentional differences between Figma and code.

By the end of this first phase, 36 of the 62 audited components had been actively refined across Figma, React and Flutter.

02

Modernising the Figma architecture

While the alignment work addressed inconsistencies at component level, Figma had another problem: the system was still built around an older, fragmented architecture.

B2B and GX lived in separate Core libraries (yes, two “Core” libraries), foundations relied heavily on styles, and themes were duplicated at component level. GX, for example, had separate Light and Dark component sets, so the same component had to be maintained twice. Every time!

Unsurprisingly, inconsistencies became almost inevitable.

I led the Figma-side migration to MDS 2.0, consolidating the Core libraries and restructuring the foundations around variables and themes.

Diagram of the proposed Figma variable collections: Global, Themes/Brand, Palette Light, and Palette Dark.
Working through the proposed token and variable structure before implementation.

Rebuilding the foundations around variables

I reorganised the Figma foundations around variables, replacing legacy styles with one shared structure supporting B2B and GX across Light and Dark modes.

Table of background, text, and border color variables resolving to different values across B2B, GX, Light, and Dark themes.
The variable structure could now resolve to different values across B2B and GX, in Light and Dark modes, just like in code.

Keeping design and production connected

I maintained token changes through Tokens Studio, where I updated token structure and naming and pushed changes to the repository through PRs.

I worked closely with our design-system engineer, who maintained the token transformation and integration into code. We reviewed changes together to keep the meaning and intent of the foundations aligned between design and code without requiring both sides to have identical technical structures.

Tokens Studio interface showing token sets and the Push to GitHub action.
Token structure and naming were maintained through Tokens Studio, with changes pushed to the repository.
03

Designing the migration

Existing product files still depended on the previous libraries, styles, overrides and local changes, so a company-wide switch would have created unnecessary risk.

I designed an incremental migration across ~9–11 product teams: new work could start with MDS 2.0 immediately, while existing files moved when they became active or relevant for development. Designers could migrate independently using a step-by-step guide and playground before touching production files.

Migration guide slide listing Migration instructions, Helpful info & Support, and Playground.
The migration resource combined step-by-step instructions, troubleshooting support and a playground for practising the process.

Testing surfaced cases that couldn't be migrated automatically, including overrides, deprecated components, hidden layers, local styles and legacy tokens. I documented the known issues, fallbacks and validation steps so designers could troubleshoot migrations independently. And overall the playground and instructions were well received.

Tips and best practices alongside known migration issues and theme support limitations.
Known issues, fallbacks and validation guidance were documented alongside the migration steps.

Most of the process and instructions were also uploaded to our live documentation.

The previous libraries remained available during the transition but stopped receiving updates, giving teams time to move active work without requiring a disruptive company-wide switch.

Video frames showing the consolidation of two Core libraries into MDS 2.0 and a walkthrough of the migration guide file.
I introduced MDS 2.0 through Figma Update videos, walking designers through what was changing, what they needed to migrate, and where to find migration support.

The result: A more maintainable foundation

Together, the alignment work, MDS 2.0 and the migration addressed the same underlying problem at different levels: reducing the gap between how the system was designed, implemented and maintained.

We aligned 68% of the planned Core component work in one quarter, moved Figma from duplicated libraries and themes to one shared architecture, and gave product teams an incremental way to move onto it without forcing a company-wide migration.

Animated demo of switching between B2B and GX themes in Light and Dark mode.
Finally one shared structure to switch between B2B and GX across light and dark themes.

If I'd started this a year later…

I'd approach alignment less as a periodic clean-up and more as part of routine maintenance.

Clearer, more structured design-system documentation and rules can make more of that maintenance repeatable, especially now that AI can consume those sources too.

With these new ways of working, agents can help find recurring inconsistencies across design, code and documentation, trace dependencies, turn findings into tasks, automate straightforward fixes and validate the results against defined rules.

Large system changes are easy to postpone when touching one thing might affect components used multiple times across hundreds of live features. Making more of that work systematic could shorten the path from inconsistency → decision → action, while leaving more time for the decisions that actually need judgment.