Skip to main content
Question

Color Variables not syncing with Canvas (Rendering/Cache Issue)

  • February 14, 2026
  • 1 reply
  • 49 views

Yuliya Shlyk

Hi everyone,

I’ve encountered a persistent and critical issue with Variables in our Design System. It seems like a synchronization bug between the Variable data and the Canvas renderer.

The Problem: When I update the HEX code of a primitive color variable, the changes don’t always reflect on the canvas.

Strange behavior observed:

  • The "Split" state: If I select an affected element, the Selection Colors and the Variable Modal show the new color preview. However, the element on the Canvas still renders the old color.

  • Instance vs. Main Component: In some cases, clicking through the layers of an instance or even cutting and pasting the instance back (Cmd+X / Cmd+V) forces a visual refresh. However, this does NOT work for Main Components — they remain stuck with the old color regardless.

  • New objects are affected: Even if I create a completely new shape and apply that same variable, it sometimes still renders the old color.

  • Manual fix only: The only way to reliably force an update is to unbind the variable and re-apply it. Doing this manually for a large-scale design system is impossible.

Steps to reproduce:

  1. Change the HEX value of a Color Variable (Primitive).

  2. Check instances and Main Components where this variable is used.

  3. Result: Some instances update, but Main Components and various other layers stay visually unchanged despite showing the correct variable name/preview in the Inspector.

What I've tried:

  • Restarting the Figma app / Hard refresh (Cmd + Alt + R).

  • The "Cut & Paste" trick: Cutting an instance and pasting it back helps for that specific instance, but the Main Component stays broken.

  • Click-through: Deep-clicking into instance layers sometimes triggers a refresh, but again, not for the Main Components.

  • Only manual re-binding (detaching and re-attaching the variable) works, but the issue returns if the HEX is changed again.

Has anyone else experienced this? It feels like the rendering engine is failing to trigger a "dirty" state for layers (especially Main Components) when a variable's value changes.

Attached is a screen recording showing the discrepancy between the Inspector and the Canvas.
 

1 reply

Same issue here