Skip to content

Figma + Tokens Studio Setup Guide

For CloudAlt Monorepo Design Token Workflow
Last Updated: 2025-10-10


This guide walks you through setting up Figma with the Tokens Studio plugin to manage design tokens that will be consumed by your monorepo’s packages/theme system.

Goal: Define tokens in Figma → Export JSON → Import to packages/theme/tokens/ → Build → Propagate to all 30+ apps


  • Figma Account (Free or paid)
  • Figma Desktop App or browser access
  • A Figma file for your design system (create new or use existing)

Tokens Studio Plugin:

  • FREE for core features (create, edit, export tokens)
  • FREE for local storage and manual JSON export
  • Pro version ($8-12/month): Only needed for advanced features like:
    • GitHub/GitLab auto-sync
    • Multi-file token libraries
    • Token aliases across multiple sets
    • Team collaboration features

For this project: You only need the FREE version. We’ll export tokens manually (Steps 7-8), so no subscription required.

Figma Dev Mode (the popup you saw):

  • FREE on Figma Free plan (basic features)
  • Paid on Professional/Organization plans
  • Not required for Tokens Studio - separate feature for design handoff

Method 1: Via Browser (Easiest)

  1. Open this link in your web browser (Safari/Chrome): https://www.figma.com/community/plugin/843461159747178978/Tokens-Studio-for-Figma
  2. Log into Figma if prompted
  3. Click “Try it out” or “Install”
  4. If you see “Welcome to Dev Mode” popup:
    • This is Figma’s separate developer features (not Tokens Studio)
    • For Dev Mode settings, choose:
      • Platform: iOS (since you’re on macOS and building React Native apps)
      • Unit: pt (points - standard for iOS/mobile)
    • Click “Next, Theme” → Select whatever, doesn’t matter for tokens
    • Click through to finish Dev Mode setup
    • ✅ Now the plugin will install
  5. It will open in your Figma desktop app
  6. ✅ Plugin is now installed

About Dev Mode (the popup you saw):

  • This is Figma’s built-in developer handoff tool (separate from Tokens Studio)
  • It shows CSS/iOS/Android code for designs
  • Not required for Tokens Studio - you can skip/dismiss it
  • If it asks for settings, choose iOS/pt to match your mobile apps

Method 2: From Inside Figma (Alternative)

  1. Open any Figma file (or create a new one)
  2. Click in the canvas area (to ensure a file is active)
  3. Go to Menu BarPluginsFind more plugins
    • OR use keyboard shortcut: ⌘ / (Command + Slash) → type “plugins”
  4. Search for “Tokens Studio”
  5. Click “Install” on the Tokens Studio plugin card
  6. ✅ Plugin installed

Why your search failed:

  • Plugins menu only appears when you have an active file open (not from the home screen)
  • The Help menu search doesn’t index plugins—you need the Plugins menu or Community search

Step 2: Open Tokens Studio in Your Figma File

Section titled “Step 2: Open Tokens Studio in Your Figma File”

Method 1: Quick Command (Fastest)

  1. Open your Figma design file (or create a new one: FileNew Design File)
  2. Press ⌘ / (Command + Slash)
  3. Type: tokens studio
  4. Hit Enter
  5. ✅ Plugin panel opens on the right side

Method 2: Menu Bar

  1. Open your Figma design file
  2. Menu BarPluginsTokens Studio for Figma
  3. ✅ Plugin panel opens

Method 3: Right-Click

  1. Right-click anywhere on canvas
  2. PluginsTokens Studio for Figma
  3. ✅ Plugin panel opens

First Time Setup:

  • Plugin will prompt you to choose storage location
  • Select “Local” for now (we’ll export manually)
  • Later you can sync to GitHub directly (optional in Step 10)

Tokens Studio organizes tokens into Sets (like folders). Match your monorepo structure:

📁 Core Tokens (shared across all brands)
├── colors
├── spacing
├── typography
├── borderRadius
├── shadows
└── motion
📁 Semantic Tokens (light/dark modes)
├── light
└── dark
📁 Brand Tokens (per-brand overrides)
├── pinkGuest
├── orangeGuest
└── purpleGuest

  1. In Tokens Studio panel, click ”+ Add set”
  2. Name it: core-colors
  3. Click on core-colors to open it
  4. Click ”+ Add token” → Select “Color”

Define your base palette:

Token Name | Value
-----------------------|----------
pink.50 | #FFF5F9
pink.100 | #FFE6F1
pink.200 | #FFCDE3
pink.300 | #FFB3D6
pink.400 | #FF8AC4
pink.500 | #F90772 ← Primary pink
pink.600 | #E5066A
pink.700 | #CC0560
pink.800 | #B30456
pink.900 | #99034C
orange.50 | #FFF7ED
orange.100 | #FFEDD5
orange.200 | #FED7AA
orange.300 | #FDBA74
orange.400 | #FB923C
orange.500 | #FF8C00 ← Primary orange
orange.600 | #EA7C00
orange.700 | #C66900
orange.800 | #A35700
orange.900 | #7C4300
(Continue with purple, gray, etc.)

How to add each token:

  1. Click ”+ Add token”
  2. Name: pink.500 (use dot notation)
  3. Type: Color
  4. Value: #F90772 (hex code)
  5. Click Create
  1. Add new set: core-spacing
  2. Add tokens with type “Sizing”
Token Name | Value
--------------|-------
spacing.0 | 0
spacing.1 | 4px
spacing.2 | 8px
spacing.3 | 12px
spacing.4 | 16px
spacing.5 | 20px
spacing.6 | 24px
spacing.8 | 32px
spacing.10 | 40px
spacing.12 | 48px
spacing.16 | 64px
spacing.20 | 80px
spacing.24 | 96px
  1. Add new set: core-typography
  2. Add tokens with type “Font Size”, “Font Weight”, “Line Height”

Font Families:

Token Name | Value
----------------------------|------------------
fontFamily.sans | Inter, sans-serif
fontFamily.mono | 'Courier New', monospace

Font Sizes:

fontSize.xs | 12px
fontSize.sm | 14px
fontSize.base | 16px
fontSize.lg | 18px
fontSize.xl | 20px
fontSize.2xl | 24px
fontSize.3xl | 30px
fontSize.4xl | 36px

Font Weights:

fontWeight.light | 300
fontWeight.normal | 400
fontWeight.medium | 500
fontWeight.semibold | 600
fontWeight.bold | 700

Line Heights:

lineHeight.tight | 1.25
lineHeight.normal | 1.5
lineHeight.relaxed | 1.75
  1. Add new set: core-radius
  2. Type: “Border Radius”
Token Name | Value
-----------------|-------
radius.none | 0
radius.sm | 4px
radius.md | 8px
radius.lg | 12px
radius.xl | 16px
radius.2xl | 24px
radius.full | 9999px
  1. Add new set: core-shadows
  2. Type: “Box Shadow”
Token Name | Value
-----------------|---------------------------------------
shadow.sm | 0 1px 2px 0 rgba(0, 0, 0, 0.05)
shadow.md | 0 4px 6px -1px rgba(0, 0, 0, 0.1)
shadow.lg | 0 10px 15px -3px rgba(0, 0, 0, 0.1)
shadow.xl | 0 20px 25px -5px rgba(0, 0, 0, 0.1)
shadow.2xl | 0 25px 50px -12px rgba(0, 0, 0, 0.25)

Step 5: Create Semantic Tokens (Reference Core Tokens)

Section titled “Step 5: Create Semantic Tokens (Reference Core Tokens)”

Semantic tokens reference core tokens using aliases.

  1. Add new set: semantic-light
  2. Click ”+ Add token” → Type: “Color”

Use references with {} syntax:

Token Name | Value (Reference)
------------------------|------------------
color.primary | {pink.500}
color.secondary | {pink.300}
color.accent | {pink.700}
color.success | {green.500}
color.error | {red.500}
color.warning | {orange.400}
color.background | {gray.50}
color.surface-1 | #FFFFFF
color.surface-2 | {gray.100}
color.surface-3 | {gray.200}
color.text-primary | {gray.900}
color.text-secondary | {gray.600}
color.text-tertiary | {gray.400}
color.text-on-primary | #FFFFFF

How to add a reference:

  1. Add token, name: color.primary
  2. In value field, type: {pink.500}
  3. Tokens Studio will auto-complete from existing tokens
  4. ✅ Token now references pink.500 instead of hardcoding

5.2 Create Semantic Dark Mode (Optional for Sprint 2)

Section titled “5.2 Create Semantic Dark Mode (Optional for Sprint 2)”
  1. Add new set: semantic-dark
  2. Override values for dark mode:
Token Name | Value (Reference)
------------------------|------------------
color.background | {gray.900}
color.surface-1 | {gray.800}
color.surface-2 | {gray.700}
color.text-primary | {gray.50}
color.text-secondary | {gray.300}

Brand tokens override semantic tokens for each brand.

  1. Add new set: brand-pinkGuest
  2. Add overrides:
Token Name | Value (Reference)
------------------------|------------------
color.primary | {pink.500} ← #F90772
color.secondary | {pink.300}
color.accent | {pink.700}
  1. Add new set: brand-orangeGuest
  2. Add overrides:
Token Name | Value (Reference)
------------------------|------------------
color.primary | {orange.500} ← #FF8C00
color.secondary | {orange.300}
color.accent | {orange.700}
  1. Add new set: brand-purpleGuest
  2. Add overrides:
Token Name | Value (Reference)
------------------------|------------------
color.primary | {purple.500} ← #8B42FF
color.secondary | {purple.300}
color.accent | {purple.700}

  1. In Tokens Studio panel, click “Export” button (bottom)
  2. Select all token sets you want to export
  3. Click “Export JSON”
  4. Save file to your computer (e.g., design-tokens.json)

Output structure:

{
"core-colors": {
"pink": {
"500": {
"value": "#F90772",
"type": "color"
}
}
},
"semantic-light": {
"color": {
"primary": {
"value": "{pink.500}",
"type": "color"
}
}
},
"brand-pinkGuest": {
"color": {
"primary": {
"value": "{pink.500}",
"type": "color"
}
}
}
}

Option A: Paste the JSON content in chat
Option B: Commit to a branch and share the file path
Option C: Upload the file

8.2 I’ll Convert to Style Dictionary Format

Section titled “8.2 I’ll Convert to Style Dictionary Format”

I’ll transform your Tokens Studio export into the monorepo structure:

packages/theme/tokens/
├── core/
│ ├── colors.json
│ ├── spacing.json
│ ├── typography.json
│ ├── radius.json
│ └── shadows.json
├── semantic/
│ ├── light.json
│ └── dark.json
└── brands/
├── pinkGuest.json
├── orangeGuest.json
└── purpleGuest.json
Terminal window
cd packages/theme
yarn build:tokens
# Outputs generated:
# dist/web/tokens.css
# dist/native/tokens.json
# dist/ts/tokens.ts

Now that tokens are defined, use them in your designs:

  1. Select any element (rectangle, text, etc.)
  2. Instead of picking a color manually, click the ”🎨” icon in Tokens Studio
  3. Select a token (e.g., color.primary)
  4. ✅ Element now uses the token value

Benefits:

  • Change {pink.500} once → all elements using it update
  • Export designs with token references, not hardcoded values

Step 10: Sync to GitHub (Optional - Advanced)

Section titled “Step 10: Sync to GitHub (Optional - Advanced)”

For automatic sync instead of manual export:

  1. In Tokens Studio, click Settings (gear icon)
  2. Select “Sync providers”“GitHub”
  3. Authenticate with GitHub
  4. Select your repository: xavierdurant/cloudalt
  5. Choose branch: feat/design-tokens (or main)
  6. Set path: packages/theme/tokens/figma-export/
  7. Click “Save”

Now when you edit tokens:

  • Click “Push to GitHub”
  • Tokens Studio commits JSON directly to your repo
  • ✅ Automatic sync, no manual export needed

Note: Requires repo write access and careful branch management.


  • Use references ({pink.500}) in semantic/brand tokens, not hardcoded values
  • Organize tokens in sets that match your monorepo structure
  • Start with ONE brand (pinkGuest), validate, then add others
  • Document token usage in descriptions (Tokens Studio supports this)
  • Version your token exports (commit to git with meaningful messages)
  • Don’t hardcode colors in brand tokens (use references)
  • Don’t duplicate tokens across sets (centralize in core)
  • Don’t skip semantic layer (core → semantic → brand hierarchy is important)
  • Don’t export incomplete token sets to production

Solution: Make sure you’re using Figma Desktop app or latest browser version. Try direct link: https://www.figma.com/community/plugin/843461159747178978

Solution: Check token name syntax. Must match exactly, including dots: {pink.500} not {pink-500}

Solution: Make sure token sets are not empty and at least one set is selected before export

Solution: Verify hex codes match. Check if alpha/opacity is included (e.g., #F9077280 = 50% opacity)


CategoryPatternExample
Core Colors{color}.{scale}pink.500, gray.900
Semanticcolor.{role}color.primary, color.text-primary
Spacingspacing.{size}spacing.4 (16px)
TypographyfontSize.{scale}fontSize.xl
Radiusradius.{size}radius.md
Shadowsshadow.{size}shadow.lg

  1. Complete this setup in Figma
  2. Export your first token set (start with pinkGuest)
  3. Share JSON with me → I’ll convert to monorepo format
  4. Build tokens → Verify outputs work
  5. Apply to ONE app → Test end-to-end
  6. Scale to remaining brands


Questions? Drop them in chat and I’ll help troubleshoot or clarify any step.