BACK
Bolt
Work
About
Writing
Contact
Case Study · Design Systems
Bolt Design
System
Unifying eleven disjointed product surfaces into a single, token-driven system — cutting design debt, accelerating handoff, and giving every team one source of truth.
Button / Primary
Deploy
Cancel
Search components…
Dark mode
Auto-layout enabled
Radius
Elevation
Motion
Tokens
Timeline
Jan – Sep 2025
Lead Designer
Aria Solberg
Role
Systems & UX Lead
Platform
Web · iOS · Android
In a nutshell
Bolt was built to end a quiet crisis: eleven product teams shipping eleven subtly different versions of the same button, modal, and form — each one a small tax on trust, velocity, and quality.
Over nine months we audited more than 340 unique components, distilled them into a token-driven foundation, and rebuilt the core primitives with documented anatomy, interaction states, and a code-mirrored handoff. The result is a living system adopted across every surface — where a change to a token ripples instantly to production, and designers spend their time on problems worth solving instead of re-drawing dividers.

Table of contents
How the system came together
01
Context & opportunity
Where the debt lived
02
Design tokens & foundation
One source of truth
03
Component anatomy
Structure & states
04
Audit to adoption
Mood-boards & migration
05
Developer handoff
Design ↔ code
06
Testing & feedback
Micro-interactions
07
Outcome
What changed
01
Context & opportunity areas
Where the design debt was hiding
The Good
Strong product-market fit and fast-moving teams. There was real appetite for consistency — designers were already copying each other's frames, just without a shared origin.
The Bad
Four color systems, three type scales, and no shared spacing logic. Every new feature started by re-deciding decisions that should have been settled once.
The Ugly
340+ near-duplicate components in Figma, 6 button variants that looked identical but behaved differently, and accessibility regressions shipping unnoticed.
Legacy audit · button sprawl
Primary
primary-2
CTA
Btn/Blue
Action
button_main
Submit
GO
Confirm
primary_v3
Save
Eleven names, one intention. No team could tell which button was canonical, so everyone made a twelfth.
342
Unique components
6
Button variants
4
Color systems
58
Contrast failures
02
Design tokens & foundation
Decisions, made once
Type scale
Fraunces · Manrope
Display
56 / 60
Heading
32 / 40
Title
20 / 28
Body
16 / 24
Caption
13 / 18
Spacing · 4px base
space-1
4
space-2
8
space-3
12
space-4
16
space-6
24
space-8
32
Color variables
--brand-600
#4f46e5
--brand-500
#6366f1
--ink-900
#16161a
--ink-500
#71717a
--success
#10b981
--warning
#f59e0b
--danger
#ef4444
--surface
#fafafa
tokens.css
/* Semantic tokens map primitives to intent */
:root {
--color-action: var(--brand-600);
--color-action-hover: var(--brand-500);
--radius-control: 8px;
--shadow-overlay: 0 12px 32px -16px rgb(16 16 26 / .12);
}
03
Component anatomy · deep dive
Structure, spacing, and every state
Button · interaction states
Publish changes
default
hover
focus
disabled
Modal · anatomy
Invite teammate
name@company.com
Cancel
Send
padding · 16px
· header 56px
· radius 12px
· gap 8px
· shadow-overlay
Side panel
Slide-over · 4 breakpoints
Dropdown
Nested · keyboard-safe
Navigation
Rail → drawer workflow
Toast
Queue · auto-dismiss
04
Approach · audit to adoption
From scattered audit to shared vision
AUDIT / inventory
MOODBOARD / tone

Aa
Fraunces
EXPLORATION / variants
ADOPTION / rollout
Web app
100%
Admin
92%
Mobile
74%
Marketing
61%
Scroll →
The canvas became the shared brain of the org — audit, tone, exploration, and rollout tracked in one continuous space anyone could open.
06
Testing & feedback
Micro-interactions, validated by the people who use them
We ran three rounds of moderated testing and shipped an in-Figma comment loop. Every interaction state — hover, focus, empty, error — was reviewed against real tasks before it entered the library.
3
testing rounds
27
participants
94%
task success
P
Priya · PM
The focus ring is so much clearer now — QA stopped filing a11y tickets.
M
Marcus · Eng
Migrated the settings page in 40 min. Props just… matched.
L
Lena · Design
Love the toast queueing micro-interaction. Feels alive.
07
Outcome & reflection
A system that gets out of the way
Bolt turned consistency from a debate into a default. Teams stopped re-deciding spacing and started shipping. The biggest lesson wasn't technical — it was that a design system is a product with users, and adoption is a design problem in itself. We won by making the right thing the easy thing: mirrored props, live tokens, and documentation that lived where people already worked.
68%
less time to first prototype
11 → 1
sources of truth
0
contrast failures at launch
94%
component adoption in 6 mo
Previous
Horizon Analytics
Next
Ferry Wayfinding App
Aria Solberg — Product Design
© 2025 · Bolt Case Study