Axire Infotech Logo

Axire Infotech

© 2026 All Rights Reserved

Figma to React: How a Design Becomes a Production Web App

2026-10-27T06:19:55.150Z

Figma to React is the process of turning a finished design file into working, maintainable code: you audit the file, convert its colours, type and spacing into design tokens, build each Figma component as a React component, then assemble pages in Next.js with responsive and accessibility rules agreed up front. Skipping any of those steps is what causes rework.

Key Takeaways

  • Handoff gaps are the real cost: missing states, unspecified mobile layouts and guessed spacing turn into rework after development has started, when changes are most expensive.
  • Tokens first, components second, pages last: build the design system in code before any page, so one change in a colour or font size updates the whole site.
  • Responsive and accessibility are design decisions: a developer cannot invent a phone layout or a focus style from a desktop-only frame without guessing.
  • One-click converters are not a production route: they are useful for quick prototypes, but a site you will maintain needs tokens, reusable components and real layout rules.
  • Designers can prevent most guessing: the checklist near the end of this article takes about an hour to run against a file and removes most developer questions.

Figma to React at a Glance

StageWho leadsWhat it producesWhat goes wrong if skipped
File auditDeveloper with designerList of missing states, screens and unclear specsSurprises mid-build, so rework
Design tokensDeveloperColour, type, spacing and radius values in codeHard-coded values scattered across files
ComponentsDeveloperReusable React components matching Figma variantsDuplicated, inconsistent UI
Responsive rulesDesignerMobile and tablet frames, breakpoint notesDeveloper guesses the phone layout
AccessibilityDesigner and developerContrast checks, focus states, heading order, annotationsCostly fixes after launch
Review and QABothSide-by-side sign-off on real devicesSmall differences ship unnoticed

Why Do Handoff Gaps Cause Rework and Budget Overruns?

Handoff gaps cause rework because developers must make design decisions the file never answered, such as hover states, error messages or the phone layout. Each guess is built, reviewed, rejected and rebuilt. The change costs more in code than it would have cost as a design edit.

Picture a pricing page. The desktop frame looks finished. The developer asks what happens to the three-column card row on a phone, what the button does while a form submits, and what an empty state looks like. None of it is in the file, so each answer waits for the designer, and the build stalls.

The stall is only half the problem. A guessed answer gets built, then a stakeholder sees it and says it is not what they imagined. Now the work is done twice. For a founder paying a fixed day rate, that is how a quote that looked reasonable slowly grows.

We cover what a developer actually needs from a design in more detail in our guide to design handoff documents. The short version: the more of those questions the file answers before development starts, the less you pay for revisions.

There is a second reason to fix handoff early. Public-sector design systems exist because teams were rebuilding the same patterns repeatedly. The New York State Design System describes colours, spacing, typography and interactive patterns being synchronised across Figma and code, so teams use the same components. A small business does not need a government-scale system, but the principle applies to your site.

1. Audit the Figma File Before Any Code

The first job is not converting anything. It is reading the file the way a developer will, and listing what is missing. A good audit takes a few hours on a typical marketing site or MVP and saves days later.

What to check in the file

  • States: every button, input and link has default, hover, focus, disabled and error versions. Pass: all five exist. Fail: only the default is drawn.
  • Screens: every page, plus empty, loading and error views. Fail: a dashboard with data but no empty state for a new user.
  • Layout method: frames use Figma auto layout rather than loose, hand-positioned boxes. Fail: elements nudged into place with no spacing logic.
  • Naming: layers and components have meaningful names such as "Button/Primary", not "Rectangle 214".
  • Styles: colours and text use shared styles or variables, not one-off values. Fail: nine slightly different greys.
  • Copy and images: final text, or clearly marked placeholder text, and exported or licensed images.

What to do when the audit fails

Do not start building and hope. Send the list back to the designer as a short, ranked set of requests: blockers first (missing mobile frames, missing states for core flows), then nice-to-haves. If the designer is no longer available, budget a small design pass up front. It is cheaper than discovering the gaps during development.

A short design sprint before development is one way to close these gaps. We describe how that cuts rework in our piece on a design sprint before development.

2. How Do Design Tokens Map From Figma to React?

Design tokens are named values for colour, type, spacing, radius and shadow. In Figma they live as variables or styles; in code they become CSS custom properties or a Tailwind theme. Developers then reference names like "color-primary" instead of hex codes, so one edit updates every place that value appears.

This is where most of the long-term value sits. Without tokens, a rebrand means searching a codebase for every hex code. With tokens, it is a change to one file.

A worked example (hypothetical)

Suppose a designer defines a primary colour, a body font size and a base spacing unit of 8px. The developer turns them into CSS variables once:

:root {
  --color-primary: #111111;
  --color-surface: #ffffff;
  --font-size-body: 1rem;
  --space-2: 0.5rem;
  --space-4: 1rem;
  --radius-md: 0.5rem;
}

Those variables are then exposed in a Tailwind CSS theme, a utility-first CSS framework where styles are composed from single-purpose classes in your markup. A component can now use classes such as "bg-primary" and "p-4", and they resolve to the agreed values. Nobody types a hex code into a component again.

Which tokens to define first

  1. Colour: brand, text, background, border and the feedback colours for success, warning and error.
  2. Typography: font families, a size scale, line heights and weights.
  3. Spacing: one consistent scale, often multiples of 4 or 8 pixels.
  4. Radius, shadow and border width: the small details that make a site look consistent.
  5. Breakpoints: the screen widths where the layout changes.

One open question we do not think has a single right answer is whether tokens should be generated automatically from Figma variables or written by hand. Automatic export saves time on large systems, but on a small site, a hand-written file reviewed by a developer is often cleaner. Choose based on how often the design will change.

3. How Do Figma Components Become React Components?

Each Figma component becomes one React component, and each Figma variant becomes a prop. A button with primary and secondary types and small and large sizes becomes a single Button component taking "variant" and "size" props. The structure in Figma should mirror the structure in code.

Laptop screen showing a grid of reusable interface components next to a notebook of colour and spacing notes

Build components before pages. A page is then mostly assembly, which is quick and predictable. If you build pages first, you copy the same card or button markup repeatedly and end up fixing the same bug in six places.

Mapping variants to props

Take a hypothetical Button. In Figma it has type (primary, secondary, ghost), size (small, medium, large) and state (default, hover, focus, disabled, loading). In React, type and size become props, while hover and focus are handled by CSS states, and disabled and loading are boolean props. If the designer drew a state the developer cannot map, that is a sign the component needs a conversation.

Putting it together in Next.js

Once components exist, Next.js pages and layouts assemble them. Shared elements such as the header, footer and page width live in a layout, so every route gets them automatically. Images, fonts and metadata are handled at the framework level, which matters for speed and search visibility.

The Next.js setup for an established component library can be seen in documentation like the Intelligence Community Design System guide to using its components with Next.js, which notes that a package may need transpiling depending on your version.

Component design choices also affect performance and maintainability. For the code-level side, see our article on efficient React components.

4. Plan Responsive Behaviour Before Development

Responsive design means the layout adapts to phones, tablets and desktops. The designer should supply frames for at least a phone and a desktop width, plus notes on what happens between them. If the file shows only a desktop view, the developer has to invent every other layout.

Same website shown on a phone, tablet and laptop side by side on a desk to check responsive layouts

What the designer should specify

  • Breakpoints: the widths at which layouts change, for example phone, tablet and desktop.
  • Reflow rules: a three-column row becomes one column on a phone; a side navigation becomes a menu button.
  • Fluid versus fixed: which elements stretch (text blocks, cards) and which stay a set size (icons, logos).
  • Maximum content width: so text lines do not run across a very wide monitor.
  • Images: how they crop, and which part of the picture must stay visible.

Auto layout in Figma is the best friend of a developer here, because it describes spacing and direction in a way that translates into flexbox and grid. A frame built from loose, absolutely positioned boxes tells the developer where things sit at one width and nothing else.

This is also why automated converters often disappoint on real projects. Plugins and AI routes that turn Figma frames into React frequently produce fixed-size, absolutely positioned elements with no phone layout. That is fine for a quick demo, and a poor base for a site you will edit for years.

5. Build Accessibility In From the Design Stage

Accessibility is cheapest when it is decided in the design file. Contrast, focus styles, heading order, touch target size and meaningful link text are all visible in Figma. If they are missing there, developers either guess or skip them, and fixing them after launch costs more.

Checks a designer can run in Figma

  • Text contrast: WCAG 2.2 Level AA asks for a contrast ratio of at least 4.5:1 for normal text, with a lower 3:1 for large text (at least 24px, or 18.66px and bold).
  • Focus states: a visible outline on every interactive element, so keyboard users can see where they are.
  • Heading structure: one main heading per page, then sub-headings in logical order, not chosen by size alone.
  • Touch targets: buttons and links large enough to tap comfortably on a phone, with space between them.
  • Colour alone: errors and status are not shown by colour only; add text or an icon.
  • Images: note which are decorative and which need descriptive alt text.

Annotate what is not visible

Some things cannot be seen in a static frame: reading order, what a screen reader announces, where focus moves after a modal closes. The US Department of Veterans Affairs design system explains that annotations are most valuable for anything not visible or explicit in the design, particularly where an engineer must decide something that is not built into a component. Short notes on key screens do exactly that.

If your site sells to consumers in the EU, accessibility is also a legal topic, not just a quality one, so confirm with a qualified adviser what applies to your business. For the build itself, the practical rule is simple: if it is in the design and the annotations, it gets built.

6. Test the Build Against the Design

Review the finished build against Figma side by side, then on real devices. Check spacing, type, colour and every state, not only the default view. Sign-off should happen on a staging site, so differences are caught before launch rather than after customers see them.

  1. Compare at three widths: phone, tablet and desktop, against the matching frames.
  2. Click through every state: hover, focus, disabled, error and loading.
  3. Use the keyboard only: tab through each page. Pass: focus is always visible and the order makes sense. Fail: focus disappears or jumps unpredictably.
  4. Test on actual phones: at least one iPhone and one Android device if your audience uses both.
  5. Agree what "close enough" means: a one-pixel difference is not worth a revision round; a wrong colour or missing state is.

When a check fails, log it with a screenshot, the Figma frame it should match and a severity: blocks launch, fix soon, or later. That keeps feedback specific and stops a long list of tiny items from hiding the two that matter.

Designer Checklist So Developers Do Not Guess

Run this list before handing a file over. It covers the questions developers ask most, and each item removes a guess that would otherwise turn into a revision.

  • Every screen is present, including empty, loading, error and success views.
  • Every interactive element has default, hover, focus, disabled and error states.
  • Phone, tablet and desktop frames exist for each key page, with breakpoint notes.
  • Frames use auto layout, with consistent spacing from a single scale.
  • Colours, type and spacing come from shared styles or variables, with no stray one-off values.
  • Components are named clearly and use variants instead of duplicated copies.
  • Text meets the 4.5:1 contrast guideline for normal text.
  • Headings follow a logical order, and alt text needs are marked on images.
  • Animations and transitions are described, with timing and what triggers them.
  • Final copy is in place, or placeholder copy is flagged and a length limit is given.
  • Fonts and images are licensed and exported in the formats the build needs.
  • One named person can answer developer questions within a day.

Can AI Tools Convert Figma to React Automatically?

AI tools can convert a Figma frame into React code, but the output usually needs substantial rework before it is production-ready. They suit prototypes and demos. For a site you will maintain, tokens, reusable components and genuine responsive layouts still have to be built or heavily corrected by a developer.

Our rule of thumb: use a converter when the goal is to test an idea in front of people quickly and the code will be thrown away. Hire a developer to build from the file when the site will carry your brand, take payments, collect personal data or be edited by a team for years.

The honest limit is that tools improve quickly, and what we say about them today may not hold in a year. The principle stays the same. Whatever generates the first draft, a person still needs to check states, layout rules, accessibility and code quality.

Can You Outsource a Figma to React Build?

Yes. Many UK and Northern European startups outsource React development, either to an agency or to freelancers, because it gives access to a full team without hiring. Outsourcing works best when the Figma file is complete, one person owns questions on both sides, and working hours overlap enough for quick answers.

Handoff quality matters more when the team is remote. A developer in another country cannot lean over a desk to ask what a hover state should do, so the file and annotations must carry that information. That is a point in favour of the checklist above.

If you are weighing options, our guides on how to choose a web app development agency and what drives cost in a project can help you compare quotes on equal terms.

How Axire Builds From Client Figma Files

Axire Infotech builds websites and web apps from client Figma files using React, Next.js, Node.js and Supabase. We are a lean studio based in India, working remotely with startups and businesses across Europe, with overlap into CET afternoons. Our process runs in four steps: discovery and planning, design and prototyping, development and testing, then launch and support.

We have built client sites directly from Figma files, including the Media Mates site. On projects like that, the first step is the audit described above: we read the file as a developer would and raise gaps before we write any code, so that questions come in one batch rather than spread across the build.

Where a client has no designer, or a file that is not ready, our UI/UX design service can prepare it for handoff. For the build, our web development service covers React and Next.js, and our app development service uses React Native, so one codebase serves both iOS and Android.

You can see the full range on our services page, and browse examples on our projects page. For more guides like this, visit our blog.

Next Step: Get Your Figma File Reviewed

If you have a Figma design and want it turned into a production-ready React and Next.js site without surprises, send it over. We will tell you what is missing, what can be built as it stands, and how the work would run. Contact Axire Infotech with your file or your rough brief, and we respond to inquiries within 2 hours during business hours.

Recommended Resources

Contact

#figma to react#design handoff#design tokens#next.js#react components#responsive design#web accessibility

Ready to Start Your Project?

Let's discuss your project and create something amazing together.

Figma to React: How a Design Becomes a Production Web App | Axire Infotech