Skip to content

Investigation: Recognize natively-applied Figma variables (e.g. via "Check designs") and back-fill the corresponding TS token on sync #3890

Description

@rbosker

Summary

When a user applies a native Figma variable to a layer (for example via Figma's new "Check designs" feature, which surfaces elements without variables and lets you apply them), Tokens Studio appears not to recognize it as a TS token on sync. Reported by a Studio user who exports variables from TS and wants to use "Check designs" without losing the TS token reference.

Source: customer Slack thread (Tokens Studio community), 2026-06-04.

Unverified claim — needs confirmation in this repo

The plausible explanation (NOT yet confirmed):

Applying a native Figma variable binds Figma's variable to the layer but does not write TS's own layer metadata, so TS doesn't treat it as a TS token on the next sync.

We should verify this in code before telling the customer.

What to verify

  • Layer token storage — how/where does the plugin record that a token is applied to a node (shared plugin data / $tokens namespace)? Where is it read/written on apply and on sync?
  • Native binding detection — on import/sync, does the plugin inspect a node's boundVariables at all, or only its own plugin data? If it ignores native bindings, that confirms the symptom.
  • Variable <-> token mapping — is the mapping from an exported Figma variable back to its source TS token reversible (variable ID -> token name)?
  • Back-fill logic — is there any path that, on sync, sees a node bound to a known TS-generated variable and writes the corresponding TS token onto the node? (This is effectively the feature requested.)
  • "Check designs" specifics — does the Figma feature bind existing variables or create new ones? Behavior differs in each case.
  • In-flight two-way sync (variables + styles) — does the recent two-way sync work already change this, intentionally or as a side effect?

Outcome -> customer answer

If we find… Then…
TS only reads its own plugin data, ignores native boundVariables Confirmed not recognized; treat as feature request.
TS can resolve a TS-generated variable ID back to a token A partial path may exist today; document working steps.
Two-way sync build changes this Set expectation on timing / staging availability.

Type

Feature request / investigation. Low reach today (few users on this Figma feature), but a clean UX win and worth scoping.

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
📥 Triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions