A design token (colour, spacing, etc.)
A design token is a named entity that stores one design decisionDecisionStrategyA recorded decision with context, rationale, and consequencesView reference →, a colour value, a spacing step, a font size, a border radius, so the decision lives in one place and flows out to every surface that needsNeedUserA user need, pain, desire, or constraintView reference → it. The token is the bridge between a brand intention and the code that renders it. Its power comes from the indirection: teams reason about colour.brand.primary rather than #0070f3, and the hex value can change underneath without anyone touching a component.
Design tokens were named at Salesforce in 2014. Jina Anne and Jon Levine were building the Lightning Design SystemDesign SystemDesign SystemThe root design system entityView reference → and hit a structural problem: a single design decision, made once, was being recreated by hand across iOS, Android, and web, in different languages, drifting out of sync each time. They gave the abstraction a name, the design token, a stored variable that holds a decision and distributes it everywhere. Jina Anne has been firm that a token is a methodology, not just a variable; reducing it to a CSS custom property misses the point in the same way that calling responsive design "just media queries" does.
The idea spread through tooling and shared vocabulary. In 2017 Nathan Curtis published Tokens in Design Systems, which gave the community a way to talk about token tiers and naming. Around the same time Danny Banks open-sourced Style Dictionary, a build step that takes one set of tokens and transforms it into whatever format a platform needs, Swift, XML, CSS, JSON. That broke the manual-copy problem the Salesforce team had started from.
Standardisation followed. The Design Tokens Community Group, a W3C group of designers, developers, and tool makers, set out to define a vendor-neutral file format so tokens could move between Figma, Style Dictionary, and any other tool. Its Format Module reached its first stable version in October 2025, settling on a JSON shape with typed values and composite tokens. The live debate now is layering: how many tiers (primitive, semantic, component) a system needs before the indirection costs more than it saves.
A fintech team ships a web app, an iOS app, and a marketing site. Their brand blue is defined once as a primitive token, colour.blue.500 mapping to #1d4ed8. A semantic token, colour.action.primary, points at it, and the primary button's background binds to the semantic token, never the raw hex. When the brand refreshes and blue shifts two shades darker, one primitive value changes. Style Dictionary regenerates the platform files, and every primary button across three codebases updates in the next build. No engineer searches for hex strings. The semantic layer also lets dark mode swap colour.action.primary to a brighter blue for contrast without redefining the button at all.
design_component_styled_by_design_tokenDesign Componentstyled byDesign Tokenhierarchy.design_token_reflects_brand_colourDesign TokenreflectsBrand Colourcross-domain keeps the intention and its implementation linked but distinct.In the Unified Product Graph, a design token sits in the Experience, Design & Brand region's design-system domain, owned by its parent system through Design SystemdefinesDesign Tokenhierarchy. It connects downward to the components that consume it (design_system_defines_design_tokenDesign Componentstyled byDesign Tokenhierarchy) and sideways to the brand intention it encodes (design_component_styled_by_design_tokenDesign TokenreflectsBrand Colourcross-domain), and it can be exposed as a service via design_token_reflects_brand_colourDesign Tokentokenised asServicecross-domain when a platform publishes its tokens for other products to consume. That structure makes the token's reach queryable: change one value and the graph shows every component, surface, and downstream product the change touches, which is the audit the manual-copy era could never produce.design_token_tokenised_as_service
Type-specific fields on BaseNode
categorystringCategory
valuestringResolved value
css_variablestringCSS custom property name
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 edge types connected to this entity.
design_component_styled_by_design_tokendesign_system_defines_design_tokendesign_token_tokenised_as_servicedesign_token_reflects_brand_colour