Skip to main content
Question

Figma make to production

  • August 8, 2025
  • 1 reply
  • 71 views

Edi Erwan Abu Talib

Anyone have ever know the flow, after we done testing what we did in figma make, possible to go live, production system, using our own domain , hosting etc. Anywant have idea, new here, please do advice if possible the steps. 

thanks

1 reply

Veracitor
  • New Member
  • September 18, 2025

I was also hoping to find some good workflows for this here.

I asked ChatGPT and got a decent thread going, but it seems to be quite a bit of work. Both prepping the files, as well as building the actual app. Should ideally use Next.js (Which is React + Typescript, the tsx files we see Figma Make generate), which I am not familiar with from before. 

Here is a part of the work that needs to be done after exporting all the code, according to ChatGPT:

3) Systematically refactor (the important part)

Goal: Make each exported screen into a page composed of presentational components that accept props (no hardcoded copy, colors, or absolute positioning where not needed).

Checklist per file:

  • Replace absolute pixel layouts with flex/grid + responsive classes.

  • Move inline styles → Tailwind utility classes (or CSS Modules).

  • Extract hardcoded text → props or a copy.ts file (i18n later).

  • Extract duplicated chunks → components/ui/Whatever.tsx.

  • Convert click handlers that are placeholders → real callbacks via props.

  • Add a11y: roles, aria-labels, alt text, focus states, keyboard handlers.

  • Remove magic numbers; create design tokens (spacing, radius, shadows).

Tiny example: refactor a “Card.tsx” from Figma Make

Before (typical export flavor):

 

export default function Card() { return ( <div style={{ width: 360, height: 180, background: "#1F2937", borderRadius: 16, position: "relative" }}> <div style={{ position: "absolute", top: 24, left: 24, color: "#fff", fontSize: 18 }}>Title</div> <button style={{ position: "absolute", bottom: 16, right: 16, background: "#14b8a6", color: "#000", padding: 12, borderRadius: 12 }}>Action</button> </div> ); }

After (production-ready presentational):

 

type CardProps = { title: string; onAction?: () => void; actionLabel?: string; children?: React.ReactNode; }; export function Card({ title, onAction, actionLabel = "Action", children }: CardProps) { return ( <section className="relative w-full max-w-sm rounded-2xl bg-gray-800 p-6 text-white shadow-md" role="region" aria-label={title} > <h3 className="text-lg font-semibold">{title}</h3> <div className="mt-3">{children}</div> <div className="mt-6 flex justify-end"> <button type="button" onClick={onAction} className="rounded-xl px-4 py-2 font-medium text-gray-900 bg-teal-400 hover:bg-teal-300 focus:outline-none focus:ring" > {actionLabel} </button> </div> </section> ); }

Key wins: props, semantics, a11y, responsive, no absolute positioning, reusable.