Skip to content

Figma Plugin

The DesignPush Token Importer is a Figma plugin that brings your exported design tokens into Figma as native variables and styles — with proper aliasing, scoping, and light/dark mode support.


The plugin is available on GitHub while we prepare the Figma Community listing. Clone or download the repo and load it as a development plugin:

  1. Clone the repo: github.com/upVersion/DesignPush-FigmaPlugin
  2. In Figma, go to Plugins > Development > Import plugin from manifest
  3. Select the manifest.json from the cloned directory
  4. The plugin appears under your development plugins

Search for “DesignPush Token Import” in Figma Community and click Install.


  1. Export your tokens from DesignPush using the Publish dialog (Full Package or JSON only)
  2. Open the plugin in Figma: Plugins > DesignPush Token Import
  3. The UI displays two groups:
    • Figma-Compatible Tokens (pre-selected) — created as Figma Variables
    • Developer Tokens (unchecked) — created as text styles and effect styles
  4. Each category shows a count (e.g. “primitive.color (145 variables)”)
  5. Check or uncheck categories to control what gets imported
  6. Click Import Design Tokens

Semantic tokens require their corresponding primitive tokens to exist first. Import them together, or import primitives before semantics.

Updating tokens: Re-importing an updated JSON file will overwrite any existing variables with the same names. This means you can update your tokens in DesignPush, re-export, and re-run the plugin to keep Figma in sync — no need to delete collections first.


The plugin creates variable collections organized by token layer:

CollectionContents
ColorsAll color palettes — primary, secondary, accent, success, warning, error, info, neutral (scales 50–950)
TypographyFont families, weights, sizes, line heights, letter spacing
SpacingFull spacing scale (xs through 6xl)
RadiusBorder radius tokens (xs through 4xl)
Border WidthBorder width tokens
BreakpointsResponsive breakpoints
LayoutGrid and container measurements
Icons - SizeIcon size tokens (xs through 4xl)
Icons - StrokeIcon stroke weight tokens
Motion - DurationAnimation duration tokens
Motion - EasingEasing function tokens
Motion - OpacityOpacity value tokens
Z-IndexLayer stacking values
CollectionContents
semantic.colorText, background, surface, border, interactive colors — with light and dark mode variants
semantic.spacingSemantic spacing (aliased to primitives)
semantic.radiusSemantic radius (aliased to primitives)
semantic.border-widthSemantic border widths (aliased to primitives)
semantic.shadowsShadow references
semantic.focusFocus state tokens
semantic.transitionTransition and animation tokens

Semantic variables use VARIABLE_ALIAS to reference their corresponding primitives — change a primitive and every semantic token updates automatically.

Complete text style hierarchy with variable bindings:

  • Display — lg, md, sm
  • Heading — H1 through H6
  • Body — lg, md, sm, xs (with bold variants)
  • Label — lg, md, sm, uppercase
  • Caption — md, sm
  • Code — inline, block
  • Overline — md, sm

Each style binds font family, font size, and letter spacing to variables. Font weight and line height are set directly from token values.

  • Shadow styles — box shadow effects with descriptions imported from token metadata (elevation-1 through elevation-5)

The plugin expects tokens in DTCG (Design Tokens Community Group) format — the same format DesignPush exports. The 3-layer structure looks like this:

{
"primitive": {
"color": {
"primary": {
"500": { "$value": "#4C2BDA" }
}
}
},
"semantic": {
"color": {
"text": {
"primary": {
"light": { "$value": "{primitive.color.neutral.900}" },
"dark": { "$value": "{primitive.color.neutral.50}" }
}
}
}
}
}

Semantic tokens reference primitives using curly-brace paths (e.g. {primitive.color.neutral.900}). The plugin resolves these to Figma variable aliases automatically.


CategoryPatternExample
Colorscolorname/scaleprimary/500, neutral/black
Typographycategory/namefont-family/heading, font-size/base
Iconssize/name, stroke/namesize/md, stroke/bold
Dimensionsspacing/name, radius/namespacing/md, radius/lg
Motionduration/name, easing/nameduration/fast, easing/ease-in
Semanticcategory/nametext/primary, background/elevated

Figma sorts variable collections alphabetically in the variables panel. This is a Figma limitation. If ordering matters, consider number prefixes in your token names.


  • Make sure the category is checked in the plugin UI before importing
  • Verify your JSON matches DTCG format
  • Open the Figma console (View > Developer > Show/Hide Console) for errors
  • Import primitive tokens first (or select both at the same time)
  • Check that references use the correct path format: {primitive.color.neutral.900}
  • Verify tokens include $value properties
  • Typography styles need fontFamily, fontSize, etc.
  • Only checked categories should create collections — make sure you’re on the latest version