Coinbase hero

Coinbase

Designing and elevating primitives, components, and documentation across the Coinbase Design System.

Product Designer IDesign Systems2025–2026

I first joined the Coinbase Design System team as an intern in 2024, where I came to appreciate the weight a design system carries. Seeing how a single component or token could shape product design across the entire company showed me the scale and impact of this work, and how foundational it is to building great products.

Since returning full-time, I've worked across every layer of the system, from the smallest primitive variables to complex product components and documentation that holds it all together. I partnered closely with engineers, PMs, UX researchers, and other product designers to inform systems decisions, ensuring each one held up technically, served real user needs, and scaled across the company. My core contributions spanned foundations, core & product components, and documentation.

Being a systems designer has also sharpened my product thinking: it taught me to design with the whole ecosystem in mind, to balance user needs against technical constraints, and to understand how the smallest details ladder up to the broader product experience.

For a more detailed walkthrough, reach out at mandyrwu1@gmail.com

01

Building a strong foundation through primitive variables

Style variables are the atomic building blocks of our visual language: color, layout, elevation, border radius, spacing, and typography. I helped define and maintain these primitives so visual consistency held across every Coinbase product pillar, reinforcing one recognizable brand.

Beyond consistency, primitives are a force multiplier. Because every team builds from the same variables, design refreshes propagate quickly and reliably across the entire ecosystem instead of being re-solved surface by surface.

02

Strengthening core components for scale and consistency

Core components are the foundational atoms of product design: buttons, input fields, and the building blocks every team reaches for first. I audited and improved 80+ design system components through bug fixes, functional enhancements, and documentation updates, raising customer satisfaction scores from 3.2 to 4.1 in a single quarter. Working directly with engineers, I made sure each fix held up in production, not just in Figma.

I also built reusable components like the carousel, card, footer, navigations, and banner, which are now at 95% adoption company-wide and strengthen consistency across every product surface.

Because core components show up everywhere, improvements here compound. Every refinement raised the quality floor across every product that used them.

03

Building product patterns with reusable components and templates

Product patterns are higher-order, product-specific patterns built on top of the foundations. They give Coinbase's product surfaces a strong starting point, ranging from complex components to full-screen templates used repeatedly across flows.

I designed and standardized onboarding and accounts patterns across web and mobile, including sign-up flows, navigation components, and scalable templates, partnering with PMs and UX researchers to ground each pattern in real user behavior.

Together, these made iteration dramatically faster, letting product teams assemble proven patterns instead of rebuilding flows from scratch.

04

Creating and maintaining high-quality documentation

Documentation is what makes a design system usable at scale. Clear guidance on how and when to use each component is what turns a library into a system people actually trust. I wrote detailed, high-quality documentation that lives on cds.coinbase.com, serving both internal designers and the open-source community using the Coinbase Design System.

Strong documentation reduces ambiguity, prevents misuse, and lets the system scale without needing a person in the loop for every decision.

05

Aligning design and engineering for true parity

A design system only delivers value when design and engineering stay one to one. I kept them in sync by designing within real engineering constraints rather than around them, collaborating with engineers throughout to make sure what I designed was what shipped.

Learning to code components and leverage AI tools let me design from an engineering perspective while keeping user-centered principles at the core, resulting in cleaner handoffs and designs more grounded in what could actually ship.

Learnings

Small decisions have big impacts

Adjusting a single token or refining one core component could ripple across hundreds of screens and every product pillar at once. This taught me to think beyond the screen in front of me and design with the whole ecosystem in mind, weighing second-order effects before making a change. It's where my value of intentionality really took root: at this scale, every detail deserves care because none of them are ever small.

Designing for designers requires a personal point of view

In design systems, I didn't just design for the end-user. My work also served other designers, engineers, and PMs, each with strong and often conflicting opinions. Early on I tried to accommodate everyone's wants, but chasing consensus made it impossible to build anything at scale. I learned to listen to input carefully while holding my own design convictions, because a clear, well-reasoned point of view is what lets you make decisions that serve the whole system rather than satisfying no one.

Cross-functional collaboration is essential

Most, if not all, of my work happened in collaboration, not isolation. Partnering early with engineers, PMs, UX researchers, and other designers consistently produced more resilient decisions than seeking buy-in after the fact. A large part of my job became aligning stakeholders and translating between functions, making sure what we shipped was thoughtful, intentional, and durable across the entire organization.