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.
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.

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.
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.

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.

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.
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.



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