Published 2026-08-24 · By MarkupGen Team
Figma to Code: MarkupGen's React, Vue and CSS Framework Support

One of the most time-consuming decisions in any design hand-off isn't whether the design looks good — it's which stack the generated code needs to run on. A React team needs JSX with typed props, a Vue team needs a proper Single File Component, and a static landing page might not need a framework at all. MarkupGen doesn't lock you into one output stack for every project — the output framework is a per-export choice on top of the same Figma design.
How the conversion works
Before you get to the framework choice, MarkupGen processes the design in four steps:
- Export the frame from Figma. MarkupGen's Figma plugin sends the structure, styles and images of your selected frame straight into your workspace — not a screenshot you have to rebuild by eye.
- AI builds HTML/CSS from the real design. Layout, spacing, color and Auto Layout are read directly from the Figma file, not guessed at generically.
- Choose your output format. This is where you pick the framework: Vanilla HTML/CSS, React, Vue, Svelte, Angular, and for CSS specifically Tailwind, Bootstrap, Bulma, Materialize or Pico.
- Refine, then export. Adjust content, fonts and layout in the visual editor before pulling the final code, with an automatic AI quality score so you know if the export is ready.
Because the structure and styling are read once from the source design, you can switch between output formats at step 3 without rebuilding the design from scratch each time.
Exporting to React
Pick React and MarkupGen builds a functional component with JSX, in either TypeScript (TSX) or plain JavaScript (JSX) depending on a toggle at export time. Props are typed, and styles can be exported as CSS Modules instead of inline styles if you need per-component scoping rather than one shared stylesheet. Figma's Auto Layout is mapped to Flexbox directly in the component's styles, so you get a component with responsive structure already built in, not a static block of HTML with props bolted on. For a closer look at the full workflow, see Figma to React: a practical workflow for developers.
Exporting to Vue
Pick Vue and the result is a proper Vue 3 Single File Component (.vue), using defineProps for prop declarations and keeping the <template>/<script>/<style> structure most existing Vue codebases already follow. Just like React, the layout generated from Figma's Auto Layout keeps its Flexbox structure in the component's styles, and you can still set the component name and toggle TypeScript vs. plain JavaScript from the same export screen. See the Figma to Vue conversion page for more on what a Vue export includes.
Svelte and Angular too
Beyond React and Vue, MarkupGen also exports Svelte (4/5) and Angular (17+, as a standalone component) — useful if your team isn't on one of the two most common stacks but still wants a component instead of static HTML.
CSS frameworks that ship with each component
If you don't need a specific JS framework's component, you can export straight to HTML/CSS and pick a CSS framework in your project's configuration: Vanilla CSS, Tailwind, Bootstrap, Bulma, Materialize or Pico. AI remaps the layout to that framework's actual grid, spacing and class conventions rather than bolting on a generic class and leaving you to fix it. For a detailed breakdown of trade-offs across all six — output size, design fidelity, learning curve — see The 6 CSS frameworks MarkupGen supports.
What to pick for your project
- Working inside an existing React or Vue codebase? Export straight to React or Vue components, paired with Tailwind or CSS Modules depending on your team's conventions.
- Just need a static page with no bundler? Vanilla HTML/CSS or Pico — no runtime dependency.
- Need a working UI fast with pre-built components (navbars, modals, forms)? Bootstrap or Materialize.
- Your team uses Svelte or Angular? Both export as proper components, not something you convert from HTML by hand.
There's no single right answer for every project — the point is that MarkupGen lets you pick the framework per export, on the same source design, instead of locking you into one stack. Try it free on your own Figma file to see the code for the stack you're actually using.
