SolisReach
← Journal
Brand & UI/UX5 min read

Design tokens: the bridge between Figma and production code

Written by the SolisReach team

Design tokens (structured data representing colors, spacing, type sizes, and other design decisions as named values rather than hardcoded numbers) sound like a technical implementation detail that designers don't need to think about. In practice, they're the single mechanism that keeps a design file and a production codebase from slowly drifting into two different, competing sources of truth.

We didn't fully appreciate how much this mattered until we watched the alternative play out repeatedly across client projects: a design file treated as the source of truth at kickoff, quietly diverging from the shipped product over months, until nobody on either the design or engineering side could say with confidence which one actually reflected the current brand. Tokens are the fix for that specific, recurring failure mode, not a nice-to-have technical preference.

Without tokens, every value gets duplicated and drifts

A brand color defined once in a Figma style and separately hardcoded in CSS will, without fail, eventually diverge: someone tweaks the CSS value slightly during a bug fix, or the Figma file gets updated for a rebrand and the code doesn't follow. Tokens make the color a single named value both tools reference, so a change in one place is a change everywhere, not a manual sync job someone has to remember to do.

We've audited sites with six or seven subtly different shades of what was supposed to be a single brand blue, each one introduced at a different point by a different person eyeballing a color picker rather than referencing an exact value. None of it was intentional. It's simply what happens by default when a color exists as a repeated raw value instead of a single named source everyone actually points back to.

The handoff gets dramatically simpler

When a design file uses token names (`color-accent-500`, `space-4`) instead of raw hex values and pixel numbers, a developer implementing the design is translating names to names, not eyeballing a color picker and hoping they matched the value exactly. It removes an entire category of small, cumulative inconsistency between design and shipped product.

This matters even more once a project has more than one developer touching the frontend, since token names give everyone a shared, unambiguous vocabulary for design decisions. "Use space-4 here" is a precise instruction two developers will implement identically; "use about the same gap as the section above" is not, and small inconsistencies like that accumulate fast across a codebase with more than one contributor.

Start with the tokens that change least often

Color palette and type scale are the highest-value places to start, since they're referenced everywhere and change rarely once set. Spacing and component-specific tokens are worth adding once the foundation is solid, but starting with everything at once tends to produce an over-engineered token system nobody fully adopts. We build incrementally, starting with what has the broadest reach for the least setup effort.

A token system that tries to cover every conceivable design decision on day one tends to collapse under its own complexity, since nobody wants to learn forty token names before making a simple layout change. Starting narrow, with the handful of values that touch the most surface area, and expanding only as real, recurring need appears keeps the system something the team actually uses rather than something that exists in documentation and gets ignored in practice.

Keeping tokens in sync across tools, practically

Plugins that export Figma variables directly into a code-consumable format (JSON, CSS custom properties) have matured enough that this sync no longer requires a custom-built pipeline for most projects. We set this connection up at the start of a project specifically, so a designer updating a token in Figma has a clear, short path to that change reaching the codebase, rather than relying on a developer remembering to manually update a value that quietly changed somewhere else.

Even with good tooling in place, we still run a manual audit at set milestones, comparing rendered tokens in the live codebase against the current Figma file side by side, because automated pipelines occasionally fail silently, a build that didn't pick up a token change, a plugin export that quietly stopped syncing after a Figma update. A short manual check every few weeks catches that kind of silent failure long before a client or user ever notices the drift themselves.

Plugins that export Figma variables directly into a code-consumable format (JSON, CSS custom properties) have matured enough that this sync no longer requires a custom-built pipeline for most projects.

Who owns the token system once a project ships

A token system without a clear owner tends to decay the same way an unmaintained design file does: someone adds a new one-off value under time pressure, promising to formalize it later, and later never quite arrives. We assign explicit ownership, usually the lead designer on retainer engagements, of reviewing and approving any new token before it gets added to the shared system, rather than leaving it as an open convention nobody is actually responsible for enforcing.

This ownership question matters more once a project moves from initial build into an ongoing maintenance phase with a smaller team touching the codebase less frequently. A token system with clear, assigned ownership stays coherent for years. One without it tends to fragment within the first six months, right around the point the original build team moves on to other priorities.

The rebrand scenario where tokens pay for themselves entirely

A well-structured token system turns what would normally be a substantial rebrand engineering effort into something close to a configuration change: update the values in one place, and every component referencing those tokens updates automatically across the entire product. We've run rebrands on token-based codebases that took days rather than the weeks a hardcoded-value codebase would have needed for the equivalent visual change, which is often the single clearest, most concrete argument for investing in a proper token system in the first place, and it's the example we lead with whenever a client questions the upfront cost.

We quote this example specifically because it's the rare technical investment that pays off in a way a non-technical stakeholder can immediately understand without any translation. "A rebrand that used to take six weeks of engineering time now takes three days" lands with a client budget owner far more effectively than an abstract argument about code quality or maintainability ever could, and it's usually the moment a client who was on the fence about the upfront token-system cost stops questioning it.

Start a project

Want this applied to your site?

We run a Core Web Vitals and SEO audit before quoting any performance marketing engagement, and we're happy to share what we'd find on yours.