피드로 돌아가기
InfoQInfoQ
Frontend

DOM Reflow 제거로 텍스트 레이아웃 속도 600배 향상 및 120 FPS 달성

Pretext.js Bypasses DOM Layout Reflow, Enabling Advanced UX Patterns at 120 FPS

Bruno Couriol2026년 4월 20일4advanced

Context

getBoundingClientRect 등 DOM API 기반의 텍스트 높이 계산 시 발생하는 Layout Reflow로 인한 성능 저하 발생. 특히 가상 리스트나 Masonry Layout 같이 빈번한 지오메트리 계산이 필요한 UI에서 Frame Drop과 인터페이스 지연 유발.

Technical Solution

  • Canvas API의 measureText()를 활용하여 DOM 접근 없이 텍스트 세그먼트의 픽셀 너비를 독립적으로 측정하는 prepare() 단계 설계
  • 측정된 너비 데이터를 캐싱하여 반복적인 계산 비용을 제거한 데이터 구조 채택
  • 캐시된 데이터를 기반으로 컨테이너 크기에 따른 라인 수와 최종 높이를 순수 산술 연산으로 도출하는 layout() Hot Path 구축
  • DOM 읽기 작업을 완전히 배제하여 브라우저 렌더링 엔진의 Layout Thrashing 원천 차단
  • AI 루프를 통한 브라우저 실제 레이아웃 값의 역공학 및 다국어/특수문자 렌더링 엣지 케이스 정밀 검증

1. 고빈도 레이아웃 계산이 필요한 UI에서 getBoundingClientRect 사용 빈도 점검

2. DOM Read/Write 반복으로 인한 Layout Thrashing 발생 여부 프로파일링

3. 렌더링 결정 로직을 DOM 외부의 독립적인 계산 레이어로 분리 가능성 검토

4. 정밀한 UI 구현 시 실제 브라우저 출력값을 Oracle로 활용한 자동화된 검증 루프 도입

원문 읽기