개요

FigmaToCode (by bernaferrari)는 Figma 디자인을 여러 프레임워크의 반응형 프로덕션 코드로 변환하는 오픈소스 Figma 플러그인. 무료·로컬 실행·모바일 프레임워크 지원이 차별점. 디자인이 외부 서버로 전송되지 않고 Figma 내부에서 동작.


지원 출력 포맷

카테고리포맷
웹 마크업HTML / CSS
웹 유틸리티Tailwind CSS
웹 프레임워크React (JSX), Svelte, styled-components
모바일Flutter (Dart), SwiftUI (Swift)
이메일Email-compatible HTML (최근 추가)
템플릿Twig (최근 추가)

→ 한 디자인에서 여러 플랫폼 코드 동시 생성 가능


차별점: 다른 도구와 비교

도구라이선스출력차별점
FigmaToCodeGPL-3.0 무료Web + Flutter/SwiftUI유일하게 모바일 네이티브 지원, 무료 로컬 실행
Anima상용 (freemium)HTML, React, Vue다듬어진 React 컴포넌트, 사용자 ~140만
Locofy.ai상용 (freemium)React, Next, Vue, RNAI 기반, 재사용 컴포넌트 props 자동
Builder.io / Visual Copilot상용React, Vue, Svelte, Angular, QwikAI 기반, Builder CMS 통합
Vercel v0상용 AIReact + Tailwind프롬프트 기반 (Figma-first 아님)

핵심 강점: 무료 + 오픈소스 + 로컬 실행 + 모바일 지원 (다른 모든 도구가 못 하는 조합)


동작 원리: 4단계 IR 파이프라인

1. Figma 네이티브 노드 → JSON 변환
   (속성 보존, 부모 참조 추가)

2. JSON → AltNodes (커스텀 가상 표현)
   (프레임워크 독립적 중간 표현)

3. 레이아웃 최적화·분석
   - auto-layout 패턴 감지
   - 반응형 제약 조건 추론
   - z-order 정렬

4. 프레임워크별 코드 생성기로 emit
   (HTML, Tailwind, Flutter, SwiftUI 등)

이 IR(Intermediate Representation) 구조 덕에 새 프레임워크 추가가 용이.


주요 기능

단일 디자인 → 멀티 프레임워크

  • 같은 컴포넌트를 Tailwind·Flutter·SwiftUI로 동시 export

반응형 출력

  • Auto-layout 인식
  • Constraints 기반 반응형 변환

컴포넌트화

  • 페이지 전체 OR 개별 컴포넌트 선택
  • For-loop·재사용 패턴 인식

디자인 시스템 호환

  • 컬러 변수 지원 (테마 일관성)
  • 그라디언트·그림자 처리 (multi-shadow 리팩터 완료)
  • 부모-자식 관계 + z-index 보존
  • 커스텀 Tailwind 폰트 패밀리 설정 지원

Tailwind 출력 예시

// FigmaToCode가 생성하는 React + Tailwind 코드
<div className="flex flex-col items-center gap-4 p-6 bg-white rounded-lg shadow-md">
  <h2 className="text-2xl font-bold text-gray-900">제목</h2>
  <p className="text-base text-gray-600">설명 텍스트</p>
  <button className="px-6 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
    버튼
  </button>
</div>

Flutter 출력 예시

Container(
  padding: EdgeInsets.all(24),
  decoration: BoxDecoration(
    color: Colors.white,
    borderRadius: BorderRadius.circular(8),
    boxShadow: [BoxShadow(blurRadius: 4, color: Colors.black12)],
  ),
  child: Column(
    children: [
      Text("제목", style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold)),
      Text("설명 텍스트", style: TextStyle(fontSize: 16, color: Colors.grey)),
      ElevatedButton(onPressed: () {}, child: Text("버튼")),
    ],
  ),
)

SwiftUI 출력 예시

VStack(spacing: 16) {
    Text("제목")
        .font(.title)
        .fontWeight(.bold)
    Text("설명 텍스트")
        .font(.body)
        .foregroundColor(.gray)
    Button("버튼") { }
        .buttonStyle(.borderedProminent)
}
.padding(24)
.background(Color.white)
.cornerRadius(8)
.shadow(radius: 4)

설치 & 사용

일반 사용자

1. Figma → Plugins → "Figma to Code" 검색
   또는 https://figma.com/community/plugin/842128343887142055
2. 프레임/컴포넌트 선택
3. 플러그인 실행
4. 프레임워크 선택 (Tailwind / Flutter / SwiftUI 등)
5. 생성된 코드 복사

개발자 (셀프 빌드)

# 모노레포 (pnpm + Turborepo)
git clone https://github.com/bernaferrari/FigmaToCode
cd FigmaToCode
pnpm install
 
# 개발 모드 (디버그 UI: localhost:3000)
pnpm dev
 
# 프로덕션 빌드
pnpm build
 
# 린트
pnpm lint

주요 패키지:

  • packages/backend — 변환 로직
  • packages/plugin-ui — Figma 플러그인 UI

최근 업데이트

날짜변경
2026-02-04변수 컬러에 opacity 모디파이어 적용 안 함
2026-01-03styled-components 명명 규칙 수정
2026-01-03htmlShadow 다중 그림자 처리 리팩터
2025-12-23JSX html-entities & 중괄호 호환성 개선
2025-12-22이메일 생성 패널 신규
2025-11-28Twig 컴포넌트 지원 추가
2025-11-28Tailwind 커스텀 폰트 패밀리 지원

한계

  • 벡터·래스터 이미지·일부 도형(line, star, polygon)은 부분 지원
  • 매우 복잡한 핸드 튠 디자인은 정리 필요
  • AI 기반 도구(Locofy 등) 대비 “스마트한 컴포넌트화” 부족
  • 출력 코드를 그대로 프로덕션에 쓰기보다 참고/시작점으로 활용 권장

활용 시나리오

시나리오추천
무료로 시작FigmaToCode (유료 도구 대비)
모바일 앱 프로토타이핑FigmaToCode (Flutter/SwiftUI 유일)
디자인 시스템 검증Tailwind/styled-components 출력으로 즉시 확인
이메일 템플릿신규 이메일 패널 활용
AI 기반 자동화 필요Locofy/Anima/v0
CMS 통합 필요Builder.io

관련 항목