Actualizado 22 de junio de 2026 13 min de lectura
Middle Flujo

Migrar Tokens de Diseño Personalizados a Figma Variables

Construir - estructura de tokens y Variables

Migra tokens CSS/SCSS/JSON a Figma Variables con exportación DTCG — mapea primitivas, resuelve alias y sincroniza con código sin romper tu sistema de diseño.

Migrar Tokens de Diseño Personalizados a Figma Variables

Migrar tokens de diseño personalizados a Figma Variables significa reemplazar JSON, mapas SCSS y propiedades CSS personalizadas con una única fuente de verdad que exporta directamente a formato DTCG — y esa migración es la inversión de mayor retorno que un equipo de sistema de diseño puede hacer en 2026. Los archivos de tokens personalizados se desincronizan de producción en el momento en que se editan manualmente; Figma Variables permanece vinculado al lienzo, propaga cambios a través de cadenas de alias automáticamente y produce JSON DTCG que Style Dictionary y los generadores de código consumen sin capas de traducción intermedias. El W3C Design Tokens Community Group mantiene la especificación DTCG que hace que este pipeline sea interoperable entre herramientas.

Flujos relacionados: Guía de Figma Design Tokens para arquitectura de Variables y exportación DTCG, plugins de flujo de tokens para configuración de pipeline, y encontrar valores sin tokenizar para auditar lo que estás migrando.

En resumen

  • Audita tu inventario de tokens personalizados antes de tocar Figma — los códigos hexadecimales sin tokenizar y los números mágicos son tu línea base de migración.
  • Mapea primero las primitivas (valores crudos) y después la semántica (cadenas de alias) — invertir este orden crea tokens duplicados.
  • Usa JSON DTCG como formato puente de migración — desacopla los datos internos de Figma de tu pipeline de código.
  • Los tokens de animación (duración, easing) van en una colección separada — mezclarlos con color/espaciado crea conflictos de modo.
  • Ejecuta una auditoría de cobertura después de la migración — Atomize escanea valores que no se tokenizaron durante la transición.

Por qué los archivos de tokens personalizados fallan a escala

Los archivos de tokens personalizados — objetos JSON, mapas de variables SCSS, propiedades CSS mantenidas manualmente — fallan en el momento en que dos equipos los tocan. Un desarrollador actualiza blue/500 en el mapa SCSS pero olvida la exportación JSON; un diseñador cambia el hexadecimal en Figma sin actualizar el repositorio de código; la reunión de handoff consume 20 minutos conciliando qué valor es el autoritativo. Esto no es un problema de herramientas — es un problema de fuente única de verdad. Figma Variables lo resuelve haciendo del archivo del lienzo la fuente: un diseñador cambia un valor de variable en Figma, la exportación DTCG lo recoge y el pipeline de código se reconstruye sin pasos de sincronización manual.

La migración no tiene costo cero. Los equipos con más de 200 tokens personalizados distribuidos en múltiples archivos, frameworks y plataformas necesitan una secuencia de migración deliberada. El resto de esta guía presenta esa secuencia — auditar, mapear, exportar, verificar — con pasos concretos para cada fase. El centro de ayuda de Figma documenta las capacidades de Variables que forman el estado objetivo.

Fase 1: Audita tu inventario de tokens personalizados

Antes de crear una sola variable en Figma, inventaría cada fuente de tokens en tu base de código. Los tokens de diseño se esconden en más lugares de lo que los equipos imaginan: propiedades CSS personalizadas en :root, mapas de variables SCSS, archivos de configuración de Tailwind, archivos JSON de temas y llamadas var() en línea dentro de estilos de componentes. Cada fuente debe ser localizada, extraída y listada antes de que comience la migración — omitir una fuente significa que ese token permanece sin tokenizar después de la migración.

Ejecuta una auditoría automatizada primero. El escáner de encontrar valores sin tokenizar de Atomize detecta códigos hexadecimales crudos, valores de espaciado y tamaños de fuente dentro de archivos Figma — valores que los diseñadores colocaron sin crear una variable. Para los tokens del lado del código, busca en tu repositorio declaraciones de propiedades CSS personalizadas, asignaciones SCSS $variable y claves de temas JSON. Lista cada token en una hoja de cálculo con columnas: nombre del token, valor actual, archivo de origen y si tiene un equivalente en Figma.

Lugares comunes donde se esconden los tokens

  • Bloques :root { } en archivos CSS globales — a menudo la mayor fuente única de tokens
  • theme.extend de Tailwind en tailwind.config.js — colores, espaciado, tamaños de fuente, radios de borde
  • Parciales SCSS $_variables.scss — verifica mapas anidados con patrones de acceso map-get()
  • Archivos JSON de temas (tokens.json, theme.json) — a menudo sincronizados manualmente con el diseño, siempre desincronizados
  • Propiedades CSS personalizadas a nivel de componente — var(--button-bg, #3B82F6) con valores predeterminados hardcodeados
  • Keyframes de animación con valores ms hardcodeados — estos se convierten en tokens de duración en la migración

Fase 2: Mapea primitivas, luego semántica

El error de migración más común es mapear tokens semánticos antes que las primitivas. Un token semántico como color/text/primary referencia una primitiva como color/gray/950 — no puedes crear la cadena de alias hasta que la primitiva exista. Comienza con tokens de valor crudo: cada color hexadecimal único, valor de espaciado en píxeles, tamaño de fuente, radio de borde y duración en tu inventario. Crea una variable Figma por valor único, no por uso — si #030712 aparece en 14 lugares en tu SCSS y CSS, creas una variable gray/950, no 14.

Crea las primitivas dentro de una colección de variables Figma dedicada. Nombra la colección primitives y organiza por categoría usando grupos separados por barras: gray/50, gray/100, blue/500, space/4, space/8, font/size/14, font/size/16, radius/sm, radius/md, duration/fast, duration/normal. El separador de barra crea la jerarquía de grupos que Figma usa para el alcance — mantener los tokens de color, espaciado, tipografía y animación en grupos separados previene conflictos de modo más adelante.

/* Colección de primitivas — valores crudos, sin alias */
gray/50     →  #F8FAFC
gray/950    →  #030712
blue/500    →  #3B82F6
space/4     =  4px
space/8     =  8px
font/size/14 =  14px
radius/md   =  8px
duration/fast = 150ms
easing/default = cubic-bezier(0.4, 0, 0.2, 1)

Una vez que las primitivas existen, crea una segunda colección llamada semantic y asigna cada token semántico como alias de su primitiva. color/text/primary apunta a gray/950 de la colección de primitivas. color/background/default apunta a gray/50. space/component/gap apunta a space/4. Esta arquitectura basada en alias es lo que hace que Figma Variables sea fundamentalmente diferente de los archivos planos de tokens personalizados: cambiar una primitiva se propaga a través de cada alias semántico automáticamente.

/* Colección semántica — alias a primitivas */
color/text/primary        →  {gray/950}
color/background/default  →  {gray/50}
color/interactive/default  →  {blue/500}
space/component/gap       →  {space/4}
radius/button             →  {radius/md}
duration/transition        →  {duration/fast}

Fase 3: Exporta a DTCG y conecta el pipeline de código

JSON DTCG (Design Tokens Community Group) es el formato puente de migración. Desacopla la representación interna de variables de Figma de cualquier pipeline de código que consuma los tokens — propiedades CSS personalizadas, constantes TypeScript, presets de Tailwind o formatos específicos de plataforma. Exporta tanto las colecciones de primitivas como las semánticas como JSON DTCG. La exportación contiene $type, $value y referencias de alias que las herramientas downstream resuelven en valores finales de plataforma.

{
  "color": {
    "text": {
      "primary": {
        "$type": "color",
        "$value": "{color.gray.950}"
      }
    },
    "background": {
      "default": {
        "$type": "color",
        "$value": "{color.gray.50}"
      }
    }
  },
  "duration": {
    "transition": {
      "$type": "duration",
      "$value": "{duration.fast}"
    }
  }
}

Conecta Style Dictionary para consumir la salida JSON DTCG. Style Dictionary resuelve referencias de alias, transforma valores a formatos específicos de plataforma y genera propiedades CSS personalizadas, constantes TypeScript, variables SCSS o XML de Android en un solo paso de build. La decisión clave de configuración: apunta Style Dictionary a la ruta del archivo JSON DTCG como su fuente de entrada, no a un archivo de tokens mantenido manualmente. A partir de este momento, la exportación DTCG desde Figma es la fuente de verdad de los tokens — los archivos personalizados mantenidos manualmente se archivan.

{
  "source": ["tokens/primitives.json", "tokens/semantic.json"],
  "platforms": {
    "css": {
      "transformGroup": "css",
      "buildPath": "dist/css/",
      "files": [{
        "destination": "variables.css",
        "format": "css/variables"
      }]
    }
  }
}

Fase 4: Verifica — audita lo que no se migró

Una migración nunca está completa en el primer intento. Se escapan valores — un color de borde en un componente profundamente anidado, un valor de espaciado en un auto-layout gap, un tamaño de fuente dentro de un estilo de texto que no se vinculó a una variable. Ejecuta una auditoría de cobertura después de la migración para detectar cada valor en el archivo Figma que aún carece de un enlace a variable.

La auditoría de cobertura de Atomize escanea el archivo completo y reporta rellenos, trazos, valores de espaciado, tamaños de fuente y radios de borde sin tokenizar — agrupados por página y componente. Ejecuta este escaneo inmediatamente después de completar el mapeo de variables. Cada resultado es una brecha de migración: un valor que existía en tu inventario de tokens personalizados pero que se omitió durante la transición a Figma Variables. Vincula esos valores restantes a la variable primitiva o semántica apropiada.

Tokens de animación y duración — una colección separada

Los tokens de animación — valores de duración, curvas de easing y tiempos de retardo — requieren su propia colección en Figma Variables. Mezclar tokens de duración en la colección de primitivas con colores y espaciado crea conflictos de modo: un cambio a modo oscuro no debería cambiar los tiempos de animación, pero si comparten una colección, Figma los obliga a compartir modos. Crea una colección dedicada motion con grupos para duration, easing y delay.

Tipo de tokenTipo FigmaValor de ejemploColección
DuraciónNumber150ms → 150motion
Curva de easingStringcubic-bezier(0.4, 0, 0.2, 1)motion
RetardoNumber300ms → 300motion
Keyframe de opacidadNumber0 → 1 fadeprimitives (opacity)

Figma Variables soporta tipos number y string de forma nativa — los valores de duración se convierten en variables numéricas (la unidad se aplica en el momento de exportación mediante transformaciones de Style Dictionary), y las curvas de easing se convierten en variables de string. La especificación de tokens de movimiento de Material Design 3 proporciona un modelo de referencia útil para nombrar tokens de duración y easing de manera consistente en un sistema de diseño.

Coexistencia con código legacy durante la migración

Las bases de código grandes no pueden migrar a tokens exportados por DTCG de la noche a la mañana. Durante la transición, ejecuta ambos pipelines en paralelo: el nuevo pipeline DTCG → Style Dictionary envía la salida a dist/tokens/v2/, mientras que el pipeline legacy de tokens personalizados continúa enviando a las rutas existentes. Los componentes adoptan las nuevas variables de token incrementalmente — un componente a la vez, verificado por pruebas de regresión visual. El período paralelo generalmente dura de 2 a 4 semanas para una base de código mediana, después del cual se elimina el pipeline legacy.

La paridad de nombres de tokens es la restricción crítica durante la coexistencia. Si el sistema legacy usa --color-primary y la exportación DTCG produce --color-interactive-default, cada migración de componente requiere un shim de nombres. Diseña los nombres de variables DTCG para que coincidan con la convención de nombres legacy cuando sea posible, o acepta que un find-and-replace único en todo el árbol de componentes es parte del costo de migración.

Errores comunes de migración

ErrorSíntomaSolución
Semántica antes que primitivasNo se pueden crear referencias de alias — las variables no existen aúnConstruye primero la colección de primitivas; la semántica referencia primitivas mediante alias
Una sola colección para todoLos cambios de modo oscuro modifican los tiempos de animaciónSepara las colecciones por comportamiento de modo: colores, espaciado, motion, tipografía
Omitir la auditoría de coberturaLos valores sin tokenizar persisten en componentes anidados durante mesesEjecuta el escáner de auditoría de Atomize inmediatamente después de la migración; corrige cada resultado
Editar manualmente el JSON DTCG después de la exportaciónEl JSON se desincroniza de Figma — el problema exacto que la migración debía resolverTrata Figma como la fuente de verdad; el JSON DTCG es salida de build, nunca se edita manualmente
Sin pruebas de regresión visualComponentes rotos descubiertos en producciónEjecuta pruebas de regresión visual (Chromatic, Percy o capturas de Playwright) antes de mergear la rama de migración de tokens

Veredicto final - Migración de Tokens

Migrar tokens de diseño personalizados a Figma Variables es la mayor mejora de fiabilidad que un equipo de sistema de diseño puede implementar en 2026. La secuencia auditar → mapear → exportar → verificar toma de 1 a 2 semanas para un inventario de tokens mediano (200–500 tokens) y se amortiza en reuniones de sincronización eliminadas y handoffs sin desviación en el primer mes. La parte difícil no son las herramientas — Figma Variables y DTCG son maduros — sino la disciplina de auditar a fondo, mapear primitivas antes que semántica y ejecutar un escaneo de cobertura para detectar cada valor omitido. Los equipos que se saltan el paso de auditoría dejan valores sin tokenizar; los equipos que lo ejecutan completan una migración total.

Un inventario mediano de 200–500 tokens toma de 1 a 2 semanas: 1–2 días para auditoría e inventario, 2–3 días para mapeo de variables primitivas y semánticas, 1 día para exportación DTCG y configuración de Style Dictionary, y 1 día para auditoría de cobertura y limpieza. Inventarios más grandes (más de 1000 tokens) añaden 1–2 semanas para el mapeo. Las fases de auditoría y verificación son los pasos limitantes — la creación de variables en Figma es rápida una vez que el inventario está completo.
Sí — los valores de duración se almacenan como variables Number y las curvas de easing como variables String en una colección motion dedicada. Figma no exporta unidades de forma nativa (ms, s), por lo que la unidad se aplica en el momento del build mediante transformaciones de Style Dictionary. Mantén los tokens de animación en una colección separada de colores y espaciado para evitar conflictos de modo al alternar entre temas.
Figma Variables es el motor de tokens nativo dentro de los archivos Figma — almacena primitivas, semántica y cadenas de alias. Figma Weave es una funcionalidad separada para crear conexiones interactivas entre frames para prototipado. Ambos tienen propósitos diferentes: Variables para gestión de tokens de diseño, Weave para flujos de prototipado. Migra tokens a Variables; usa Weave para flujos de prototipado.
Los archivos de tokens legacy se archivan después de que la migración es verificada. Durante la transición (2–4 semanas), ambos pipelines se ejecutan en paralelo: el nuevo pipeline DTCG → Style Dictionary envía la salida a una nueva ruta, y el pipeline legacy continúa enviando a las rutas existentes. Los componentes adoptan los nuevos tokens incrementalmente. Una vez que todos los componentes han sido migrados y las pruebas de regresión visual pasan, los archivos y el pipeline de tokens legacy se eliminan.
Mapea los nombres legacy a los nuevos nombres DTCG en un archivo de alias de migración consumido por Style Dictionary. Si el sistema legacy usa --color-primary y la exportación DTCG produce --color-interactive-default, añade un alias: color/primary{color.interactive.default}. Esta capa de alias permite que los componentes referencien el nombre antiguo mientras el valor subyacente proviene de la nueva fuente DTCG. Elimina los alias después de que todos los componentes hayan sido actualizados para usar los nuevos nombres.
Publica variables desde un archivo de biblioteca de tokens dedicado como una librería de Figma. Otros archivos consumen las variables publicadas — no pueden editarlas, que es el comportamiento deseado. El archivo de biblioteca de tokens es la única fuente de verdad. Exporta JSON DTCG solo desde este archivo de biblioteca. Si diferentes productos necesitan diferentes subconjuntos de tokens, usa colecciones semánticas separadas que referencien las mismas primitivas compartidas.
La automatización parcial es posible. Atomize puede escanear archivos Figma y sugerir enlaces de variables para valores detectados, y scripts pueden analizar archivos JSON/SCSS de tokens existentes y generar una hoja de cálculo de mapeo de variables. Pero las decisiones — qué valores fusionar, cómo nombrar grupos, si usar alias o duplicar — requieren juicio humano sobre la intención de tu sistema de diseño. Automatiza la detección y las sugerencias de mapeo; revísalas y apruébalas manualmente.
DTCG (Design Tokens Community Group) es la especificación comunitaria del W3C para el formato de archivo de tokens de diseño. Estandariza cómo se representan en JSON los nombres de tokens, valores, tipos y referencias de alias. Usar DTCG significa que las herramientas downstream — Style Dictionary, Theo, Token Transformer — consumen tus tokens sin analizadores personalizados. Los formatos de exportación personalizados requieren mantener un analizador para cada consumidor; DTCG es el estándar de interoperabilidad que elimina ese costo de mantenimiento.
Ver todo

Síguenos en todas las plataformas