Back to Work

Design System

Building a Design System across four platforms

A shared foundation for web, iOS, Android and website work, connecting design decisions, documentation and implementation.

01The Beginning

The same decisions kept coming back

The same questions kept appearing across products and platforms: how a component should behave, which token to use, what changed between web and native, and what engineering should treat as the source of truth.

Each team had an answer, but there was no shared one.

It simply made the work harder than it needed to be.

I took the idea of solving these decisions once to my manager, then started by mapping what already existed.

Workflow diagram: Figma variables, documentation and design screens move through Token Studio, GitHub and Claude Code into Android, iOS and web components.

02Seeing the Pattern

We kept solving the same problem

A new project usually meant another conversation about spacing, colours, states, platform behaviour and implementation.

Nobody was doing anything wrong. The decisions simply lived in too many places.

I compared the existing product libraries and mapped where the same concepts had different names, values or behaviours.

Before and after diagram: separate interpretation by design, engineering and AI tools led to inconsistent outputs; a shared language makes the outcome consistent.

03Starting with the Basics

An existing system wouldn’t solve the platform problem

I looked at existing design systems before building our own.

They were useful references, but none gave us the structure we needed across web, iOS, Android and the website while still respecting platform behaviour.

Reusing one wholesale would have moved the inconsistency rather than removed it.

Comparison table of ShadCN/UI, Material 3, IBM Carbon and a custom cross-platform system; the custom approach was adopted.

04Testing the Idea

One button was enough to validate the approach

Before scaling the system, I tested the workflow with one button.

The test covered the full chain: variables, semantic tokens, platform component, documentation and implementation.

If that chain didn’t work for one component, there was no point building fifty.

But it worked.

From there, expanding the library became a much safer investment.

Token architecture diagram connecting shared semantic design decisions to platform-specific implementation.
Shared semantics became the foundation that connected design decisions to platform-specific implementation.

05Building Together

The component had to survive outside Figma

A component wasn’t useful because it looked complete in the library.

Engineering needed to know how it behaved, what changed by platform, which states were valid and what not to invent during implementation.

That changed how I designed the components. I started treating the implementation rules as part of the component itself.

Three mobile screens for account creation, verification and secure sign-in, illustrating shared component patterns.

06BUILT-IN QUALITY

Accessibility became part of the component rules

I documented accessibility alongside component behaviour instead of keeping it as a separate checklist.

That included touch-target values, contrast in light and dark themes, colour-blindness checks and usage guidance.

APCA was useful for comparison and learning, while WCAG remained the standard I designed against.

Accessibility foundations diagram showing contrast, color-vision checks, touch targets and component guidance carried into implementation.

07Designing the System

If people had to ask me, the documentation wasn’t finished

Documentation started as something I expected to add after the components.

In practice, writing it exposed gaps in the components themselves: unclear variants, missing platform differences, undocumented accessibility rules.

Each component needed enough context for someone to use it without me in the room.

Date picker documentation showing the Web, Android and iOS container patterns.
Date picker rendering rules showing architecture, state model and container choices.
Date picker accessibility guidance and native equivalents across Web, Android and iOS.

08PROJECT OUTCOME

What changed

3
Teams
10+
Engineers
4
Platforms

Shared starting point

New work started from the shared system instead of rebuilding patterns project by project.

Implementation reference

Documentation became part of implementation, not just design reference.

One semantic foundation

The same semantic foundation could support different platform components without pretending the platforms were identical.

Used across four platforms

The same system supported web, iOS, Android and the PWA, with platform-specific components built on top of the shared foundation.

09Looking Back

I didn’t set out to build a design system

I didn’t start this as a design-system initiative.

I was trying to stop the same decisions being remade in every project.

The components were the easier part. The harder part was deciding what needed to be shared, what still had to differ by platform, and documenting enough of that logic to make the system useful.

It still didn’t cover everything. There were components and edge cases left to solve, but the way new work started had changed