Skip to main content

Copy and paste from Figma to Studio

Paste a Figma frame onto the Studio canvas as ordinary Studio components. Use it for a one-off layout, or to try a design before you decide which components to build.

The example on this page is the Reading list band frame from the Blog design file, pasted onto the About template.

Prerequisites​

Pasting needs no CLI.

What this is and what you get​

Copy to Studio puts the frame on your clipboard as JSON. When you paste, Studio reads that JSON and builds components from it.

Studio can't read what Figma puts on the clipboard when you copy a frame yourself. Use Copy to Studio every time.

You get regular Studio components, below the element you selected. They belong to the one template you pasted into. To get a React component that every template can use, see Generate a React component from a Figma design.

Paste a design into the canvas​

  1. In Figma, select the Reading list band frame, run the plugin, and click Generate Design.

    The plugin shows Your Export is Ready!

  2. On the export screen, click Copy to Studio.

    The button reads "Copied to Clipboard!" for a moment.

    The plugin's export screen shows the Copy to Studio button reading "Copied to Clipboard!" with the Generate another link under it.

  3. In Studio, open the About template. Click an element on the canvas.

    The design goes below this element, so click the one you want it to follow. If you select a section slot, the design goes into that slot. See Section slots.

    Before the paste, the About template is open in Studio with the Blog Hero selected on the canvas and its settings in the right panel.

  4. Press Cmd+V, or Ctrl+V on Windows.

    Studio shows "Paste is in progress", then "Pasted content". The Reading list band appears on the canvas. In Layers, the band sits inside wrapper layers, under a layer named Page Root with Styles. Its elements are named after their tags: h2, p and button. With Subscribe banner mapped, a subscribe-banner layer appears too.

    After the paste, the About template shows the Reading list band below the Blog Hero on the canvas, and Layers lists h2, p, button and subscribe-banner inside wrapper layers.

To paste a design you generated earlier, open History in the plugin and click Copy to Studio on its row. The plugin reuses the stored result and shows "No credits used". Then paste as in steps 3 and 4.

What the pasted design is made of​

Studio pastes elements, not Figma layers. The plugin reads your frame as elements such as paragraphs, headings and links, and each one becomes a Studio component.

Element in your designBecomes in Studio
ParagraphParagraph
Heading, level 1 to 6Header
LinkLink, or Link Container when it has children
ButtonButton
ImageImage
VideoVideo
Embedded frameEmbed
Container with childrenBox
Text on its ownText
Any other elementHTML Element

In the example, "Spring reading list" becomes a Header and "Five posts to start the season with." becomes a Paragraph.

Text and image values are saved as static values on each component.

Fix up the pasted design​

After the paste, the band is part of the template. Select it, move it, and edit it as you would anything else. See Select and arrange elements.

  • Use your own components. A Figma component you've mapped arrives as your registered component, so Subscribe banner arrives as SubscribeBanner. For anything you haven't mapped, you can swap the pasted parts for your components.
  • Bind to data. The pasted text and images are static values. Bind them to fields so the template shows real content. See Bind a component.

Values that aren't design tokens​

If your project limits design values to tokens or dynamic values, Studio checks the pasted values and warns about the ones that aren't tokens. A project that allows any value shows no warning. See Choose how strict the Design tab is.

The warning appears as a card titled Unregistered Design Token Values at the bottom right of the screen. For example, it reads "5 values in this design aren't a registered design token". It names up to three values and says "and N more" for the rest.

After pasting the Reading list band, an Unregistered Design Token Values card at the bottom right reads 5 values in this design aren't a registered design token, lists three values and says "and 2 more", with a What to do list below.

The values still render, but their controls stay locked in the Design tab while the project is restricted. The card's What to do list gives two ways out. To clear a value, remove it from the pasted component in Studio. To keep it, ask a developer to register it as a token in your code. See Register design tokens.

The check covers only the kinds of value you've registered tokens for. If you dismiss the banner, the next paste brings it back.

What doesn't come across​

  • Prototype interactions. The plugin doesn't read them.
  • Frames with more than 300 elements. The plugin can't generate them, so you can't copy them.

If it doesn't work​

SymptomWhy it happensFix
Nothing happens when you pasteNo element is selected, or the one you selected is locked or sits inside a locked elementClick an element on the canvas, and unlock it if it's locked. See Lock or unlock an element
An error notification reads "Uncaught Error: Not a valid JSON"The clipboard holds something other than the output of Copy to Studio, such as a frame you copied in Figma yourself or text you copied afterwardClick Copy to Studio again in the plugin, then paste straight away
The plugin shows "Frame too large to generate"The frame has more than 300 elementsSelect individual sections instead, and copy each one
A component of yours arrives as a Box or other elementsThe Figma component isn't mapped to itMap it in the plugin, run Generate Design again, and copy again. See Generate a React component from a Figma design
A warning says values aren't a registered design tokenYour project limits design values to tokens or dynamic valuesSee Values that aren't design tokens

The error notification at the bottom of the canvas reads Uncaught Error: Not a valid JSON after you paste text that isn't JSON.

Where to go next​

Report a problem with this page