Primitive vs Semantic Tokens
The difference between raw value tokens and purpose-driven tokens. Understanding this distinction is essential for scalable design systems.
The difference
Primitive tokens store raw values. They describe what the value is.
blue-500 = #3B82F6
gray-100 = #F7F6F3
spacing-4 = 16px
Semantic tokens reference primitives and add meaning. They describe what the value is for.
color.background.primary = blue-500
color.text.muted = gray-500
spacing.card.padding = spacing-4
Why this matters
Semantic tokens are what components should use because they adapt across themes and brands. If you switch from a light theme to a dark theme, color.background.primary can point to a different primitive without touching a single component.
The rule
- Primitives = the palette. Never use directly in components.
- Semantic tokens = the vocabulary. Always use in components.
- If you see
blue-500in a component file, it should becolor.background.primaryinstead.
Common mistakes
- Using primitive tokens directly in Figma components (breaks when you add themes)
- Creating semantic tokens that are too specific (
button-primary-hover-backgroundinstead ofcolor.interactive.hover) - Skipping the semantic layer entirely and going straight from primitives to components