Skip to main content
Question

Auto-layout with variable padding loses its binding on copy/paste between files, while other bound properties (fill, corner radius, text) survive intact

  • August 12, 2026
  • 2 replies
  • 27 views

DanConnors

When copy/pasting a component instance between Figma files, variable bindings on auto-layout padding (and likely gap) are silently dropped and replaced with static values — even though the property still displays a "linked variable" icon in the UI. Other variable-bound properties on the same node (fill, corner radius, typography) retain their live bindings through the same paste. This makes the padding/gap binding appear connected when it is not, and breaks any subsequent "Swap library" action for that property, since there's no live reference left to relink.
 

  • The padding field still displays a variable-linked icon/pill after paste, visually indistinguishable from a genuinely bound property.
  • Clicking into it opens the variable picker showing "No variables available" — the reference is dead.
  • Fill, corner radius, and typography on the same pasted instance do resolve correctly to their source variable names when clicked, confirming this is isolated to padding (and likely gap/other auto-layout spacing properties), not a general copy/paste variable issue.
  • Because the padding binding is already dead at paste time, subsequently using "Swap library" to switch the file's library reference (e.g. from Main Design System to a second library, "Second Brand," with an identically-named padding-x-lg variable holding a different value, 24) correctly updates fill/radius/typography to the new library's values, but padding remains stuck at the old static number (16) — since there's no live binding left for the swap to act on.

2 replies

adamsmasher
Figmate
  • Figmate
  • August 12, 2026

Hi, ​@DanConnors. Thanks for your post - I can definitely see how this would problematic for you, particularly since you don’t know unless you look more closely.

 

Just to confirm, the destination file has all the same libraries available to it as the source file, right? It should not be showing a variable associated with a property when one is not, though I’m wondering if a missing library might explain why it’s a particular property. That’s definitely an issue even if we can understand why it’s specifically the padding and gap properties. I’m going to take this issue to the team for you, though I want to get more of an understanding of the context of your files and libraries first.


DanConnors
  • Author
  • New Member
  • August 12, 2026

Thanks for your reply ​@adamsmasher 
 
Workflow to reproduce:

  1. My base design system file, call it "Design System," has a fully built-out Tier 1/2/3 variable set defined locally. Within the file, I have a "button" component built entirely with tokens, background colour, corner radius, typography, content colour, and a Tier 3 spacing token, button/spacing/standard/padding-x-lg, currently resolving to 16px.
  2. I have a second file, call it "Brand UI Kit" with the exact same Tier 1/2/3 variable structure, every variable named identically to Design System, but pulling through different primitives (colour, typography, etc). In this library, button/spacing/standard/padding-x-lg resolves to 24px.
  3. I created a new, empty file ("test") with no libraries enabled — no styles, variables, or tokens linked at all.
  4. I copy/pasted the "button" component directly from the Design System file into this test file. The "Manage libraries" panel correctly shows "Design System" as in use.
  5. I then swapped the library from Design System to Brand UI Kit via Swap library.

Result: Background colour, corner radius, and typography all updated correctly to Brand UI Kit’s values. Padding did not — it stayed at 16px (Design System’s value) rather than updating to Brand UI Kit’s 24px.