Back to Plugins
Swap Variables

Swap Variables

Just like Swap Libraries, but for variables.

vkdesignvkuilibrariesswapvariablesdesign system

Plugin Preview

Swap Variables preview

About this plugin

На русском — ниже.


How to use

Run it from the Quick Actions or Plugin menu.

Select some layers, choose source and destination variable collections and hit Swap button.


You can choose the scope for plugin: selection, current page, all pages or local styles.


After all, you may see some error. Click on them to focus viewport on problematic objects.


How it works

Swap Variables will display all local and enabled external variable collections that actually contains variables.


When you swap these collections, plugin will recursively find every used variable, then check two things:

  1. variable exists in source collection,
  2. destination collection containt variable with same group and name.


After the plugin ends its job, it will display known ecnountered errors below Swap button.


Known limitations

  1. If you modified external libraries, reload file to apply changes.
  2. Plugin doesn't swap styles. Use Swap Libraries instead.
  3. Plugin can't swap strokes in section. That’s not supported by Figma API yet. Do it manually instead.
  4. It may take some time to parse and swap variables when there're to many nodes or variables. Take a break and make some tea.
  5. Scoped variables was not tested.


Possible features

  1. ☑️ Clickable error allows to zoom in problematic layers.
  2. ☑️ Collections with 0 variables are hidden.
  3. ☑️ Typographic variables.
  4. ☑️ Rebinding modes if the share the same name.
  5. ☑️ Swapping variables in local styles.
  6. ☑️ Gradients support.
  7. 🔲 Display number of variables in collection.
  8. 🔲 Selecting the option that's in second select makes them swap.


Problem? Idea? Kind words?

I accept feature suggestions and ideas to improve the plugin. No need to mess with hidden layers? Useful exceptions? If you have any ideas or issues, let me know in the comments.


Alternatively you can contact me via e-mail at [email protected] and Telegram.


Как пользоваться

Запустите плагин из поиска или меню плагинов.

Выделите несколько слоёв, выберите изначальную коллекцию и коллекцию, которая её заменит. Нажмите кнопку Swap Variables.


Можно выбрать область работы плагина: выделенные объекты, текущая страница, все страницы, либо локальные стили.


Если во время замены возникли ошибки, плагин покажет их ниже. Нажмите на ошибку, чтобы сфокусироваться на проблемном объекте.


Как работает

Swap Variables покажет все локальные и подключенные внешние библиотеки с коллекциями внутри них. Коллекции без переменных не отображаются.


Во время замены переменных, плагин будет рекурсивно искать все используемые переменные, проверяя, что:

  1. переменная лежит в изначальной коллекции,
  2. заменяющая коллекция содержит переменную с таким же именем.


Когда плагин доделает свою работу, он покажет известные ошибки под кнопкой замены.


Известные ограничения

  1. Если вы изменили внешние библиотеки, обновите файл, чтобы изменения применились.
  2. Плагин не заменяет стили. Используйте Swap Libraries.
  3. Плагин не заменяет обводки в секциях — этого нет в API. Замените вручную.
  4. Придётся подождать, если слоёв или переменных слишком много. Возьмите перерыв и заварите чая.
  5. Работа со scoped-переменными не проверялась.


Возможный родмап

  1. ☑️ Можно кликнуть на ошибку, чтобы увидеть проблемный объект.
  2. ☑️ Коллекции без переменных не отображаются.
  3. ☑️ Поддержка переменных для типографики.
  4. ☑️ Перепривязка модов с одинаковым названием.
  5. ☑️ Замена переменных в локальных стилях.
  6. ☑️ Поддержка градиентов.
  7. 🔲 Отображать количество переменных рядом с коллекциями.
  8. 🔲 Выбор той же коллекции меняет выбранные коллекции местами.


Сложности, идеи, отзывы?

Я принимаю запросы на фичи и идеи для улучшения. Хотите не трогать скрытые слои? Добавить полезные исключения? Если есть идеи или проблемы, напишите в комменты.


А ещё можно связаться со мной по почте [email protected] или в телеграме.


💙

Plugin Details

Version29
CreatedJanuary 30, 2024
Last UpdatedFebruary 4, 2025
Categorydesign-tools-other
CreatorНикита Денисов
Stats462 installs, 126 likes
PricingFree

Technical Details

  • API:1.0.0
  • UI:src/ui.html
  • main:dist/code.js
  • Document Access:dynamic-page
  • Editor Types:
    figma
  • Allowed Domains:
    • https://fonts.googleapis.com
    • https://fonts.gstatic.com