피드로 돌아가기
I built a React UI library to replace Puppeteer, MUI, and react-image-crop in one install
Dev.toDev.to
Frontend

Puppeteer 제거로 PDF 생성 Cold Start 4s에서 50ms로 단축

I built a React UI library to replace Puppeteer, MUI, and react-image-crop in one install

novaai0401-ui2026년 4월 27일11intermediate

Context

다수 프로젝트에서 PhoneInput, ImageCrop 등 반복적인 UI 구현과 PDF 생성을 위한 Puppeteer 기반 인프라 구축의 중복 비용 발생. 특히 Chromium 기반 PDF 렌더링의 거대한 바이너리 크기(200MB)로 인한 Lambda Cold Start 지연과 높은 리소스 소비가 주요 병목 지점으로 작용.

Technical Solution

  • Puppeteer-core 기반의 Headless Browser 방식을 @react-pdf/renderer 기반의 Pure JS 렌더링 구조로 전환
  • Browser DOM 의존성을 제거하고 PDF 전용 컴포넌트 추상화 레이어(TkxPDFDocument, TkxPDFRow 등)를 통한 구조적 설계
  • 11개의 전용 npm 패키지로 UI/PDF/Security 도메인을 분리하여 Core 의존성 제로화 및 런타임 오버헤드 최소화
  • WCAG 2.1 AAA 표준을 적용한 Accessibility Floor 설계를 통해 개별 컴포넌트의 접근성 보장 체계 구축
  • CSS Full Subset 대신 Flexbox 기반의 제한적 레이아웃 모델을 채택하여 렌더링 일관성과 성능 간의 Trade-off 최적화

- PDF 생성 요구사항이 '웹 페이지 스냅샷'인지 '정형 데이터 문서'인지 구분하여 기술 스택 결정 - 서버리스 환경에서 200MB 이상의 바이너리 포함 여부에 따른 Cold Start 지표 분석 - 반복되는 UI 패턴을 전용 라이브러리화하여 프로젝트 간 일관된 Accessibility 표준 적용

원문 읽기