Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그
DOM Reflow 100번을 1번으로 줄였더니 60fps가 돌아왔다 섬네일

DOM Reflow 100번을 1번으로 줄였더니 60fps가 돌아왔다

미리디 favicon미리디·Frontend·
ReactJavaScript
2026년 06월 04일0

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

미리디가 DOM Reflow 문제를 해결하기 위해 React를 우회하고 4-Phase 배칭으로 레이아웃 Thrashing을 제거, 100개 요소의 Layout를 1회로 줄이고 프레임레이트를 60fps로 회복했습니다.

구현 방법

  • 위치/크기/회전 값의 매 프레임 변경을 React 상태 업데이트가 아닌 DOM 직접 갱신으로 처리: 뷰 매니저가 renderCallback에서 DOM을 직접 수정하고, 끝나면 idleCallback으로 React 상태와 동기화합니다.
  • 4-Phase 배칭 모델 도입: PRE, READ, WRITE, POST의 순서로 실행하고, 각 뷰는 read/write를 분리해 배칭 매니저에 Task로 등록합니다.
  • Read 우선 실행으로 레이아웃을 한 번만 발생시키고, 이후 Write 단계에서 DOM 업데이트를 수행합니다.
  • CSS Custom Property를 사용해 DOM에 직접 transform를 적용하고, React 상태 변경은 idleCallback에서 동기화합니다.
  • 100개 요소 드래그 시나리오에서 Layout 횟수 약 100회 → 1회로 감소, 프레임레이트 15–25fps에서 60fps로 개선.

주요 결과

  • Layout 횟수 약 100회에서 1회로 대폭 감소
  • 프레임레이트 15–25fps → 60fps로 개선
  • React를 우회하더라도 Layout Thrashing 제거가 핵심 문제였음을 확인

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
온라인몰 성능개선을 위한 FE 개발자의 고민 part-1 섬네일
70%

온라인몰 성능개선을 위한 FE 개발자의 고민 part-1

올리브영 favicon올리브영·2023년 08월 30일
쪼그라드는 웹페이지 섬네일
70%

쪼그라드는 웹페이지

데브시스터즈 favicon데브시스터즈·2019년 02월 26일
Front-end 개발자가 회고하는 기획전 개편 섬네일
69%

Front-end 개발자가 회고하는 기획전 개편

올리브영 favicon올리브영·2024년 11월 01일