Synchroniser les design tokens entre Figma et le code, c'est un sujet qui revient sans cesse dans mes projets. J'aime l'idée d'avoir une source de vérité visuelle dans Figma et de la propulser automatiquement dans les librairies front, Storybook ou les systèmes de design code. Quand c'est bien fait, ça réduit les erreurs, accélère le développement et garde l'interface cohérente. Dans cet article, je décris une approche pratique, outils et patterns que j'utilise pour automatiser cette synchronisation.
Pourquoi automatiser les tokens ?
Les tokens — couleurs, typographies, espacements, radii, ombres — sont la base d'un design system. Les maintenir manuellement fait double emploi : designer et dev se retrouvent à recréer les mêmes valeurs, avec des variations et des erreurs. L'automatisation apporte :
Choisir les bons outils
Il existe plusieurs solutions et le choix dépend du niveau d'intégration que vous voulez :
Flux de travail que j'implémente
Voici un workflow que j'applique sur la plupart des projets. Il s'agit d'une chaîne simple mais robuste entre Figma et le dépôt de code :
Étapes techniques détaillées
1. Structurer les tokens dans Figma
Je crée une hiérarchie claire : couleurs (brand, semantic, neutral), typographie (families, scales), spacing, radii, shadows. Si vous utilisez Figma Tokens, définissez des catégories et noms explicites comme color.brand.primary ou size.spacing.8. La convention de nommage est cruciale pour des transformations propres.
2. Exporter depuis Figma
Deux options :
Exemple de payload JSON (simplifié) :
{"color": {"brand": {"primary": "#0d6efd"}, "semantic": {"success": "#198754"}}}
3. Centraliser les tokens dans un package
Je crée un package npm privé/public @mon-projet/tokens qui contient le JSON source et la config de transformation (Style Dictionary). Cela permet de versionner les tokens et d'avoir des releases.
4. Transformer avec Style Dictionary
Style Dictionary permet de mapper les tokens vers différents formats via des transformations et des templates. Exemple de config :
{ "source": ["tokens/*.json"], "platforms": { "css": { "transformGroup": "css", "buildPath": "dist/css/", "files": [{"destination": "variables.css", "format": "css/variables"}] }, "js": { "transformGroup": "js", "buildPath": "dist/js/", "files": [{"destination": "tokens.js", "format": "javascript/es6"}] } }}
Je rajoute des transforms personnalisés si besoin (par ex. conversion px → rem, normalisation des couleurs).
5. Automatiser via CI
J'ajoute une GitHub Action qui :
Un workflow simple : push sur branche tokens → action build tokens → PR automatique vers main avec les modifications générées. Ainsi les changements passent en revue avant merge.
Consommer les tokens dans le code
Selon vos besoins, vous pouvez exposer :
Exemple d'usage CSS :
--color-brand-primary: #0d6efd;
Dans un composant React je peux alors importer les tokens JS pour styler via styled-components ou utiliser les variables CSS directement.
Bonnes pratiques et pièges à éviter
Cas pratiques
Sur un projet récent, j'ai mis en place :
Résultat : l'équipe produit pouvait ajuster une couleur dans Figma, ouvrir une PR, et en 10 minutes le package tokens était prêt à être consommé par les composants. La transparence et la traçabilité ont réduit les allers-retours.
Outils complémentaires
Voici quelques outils que j'utilise selon le contexte :
Si vous voulez, je peux préparer un exemple de repo minimal (Figma export JSON + config Style Dictionary + GitHub Action) pour démarrer rapidement. Dites-moi votre stack (React, Vue, Tailwind, plain CSS) et j'adapte les fichiers de sortie et le workflow.