← Case Studies
API 재호출 8회 → 0회Polestar 10

간헐적으로 발생하던 그리드 깜빡임 원인 추적

재현이 어려웠던 그리드 깜빡임을 Playwright로 반복 검증해 발생 조건을 찾고, 불필요한 API 재호출의 원인을 추적해 해결

ReactRecoilPlaywright

배경·문제

특정 목록 화면에서 상세 Drawer를 열고 닫을 때 목록 그리드가 깜빡이는 문제가 있었습니다. 항상 발생하지 않아 간헐적 버그로 취급되고 있었습니다.

재현 — 발생 조건 특정

Playwright로 반복 재현하며 API 호출 횟수를 확인해 발생 조건을 특정했습니다.

  • URL에 필터 파라미터가 있는 상태에서 Drawer를 열고 닫으면 open 시 4회 + close 시 4회 목록 API가 재호출되는 것을 확인
  • 파라미터 없이 직접 진입하거나 같은 행을 재오픈할 때는 발생하지 않음 → 발생 여부가 URL 필터 파라미터 상태에 따라 달라지는 것을 확인

원인 체인 분석

Drawer가 열릴 때 URLSearchParams를 통해 URL을 갱신하는 로직이 있었고, 이 변경이 전역 필터 상태와 목록 재조회를 순차적으로 발생시키고 있었습니다.

Drawer 내부에서는 해당 URL 파라미터를 실제로 사용하지 않고 있었고, 불필요하게 남아 있던 로직이 원인이었습니다.

수정과 판단

  • URL 세팅 effect와 close 시 삭제 로직을 제거 — dead code 삭제가 곧 버그 수정이 된 사례. 재도입 방지 주석 추가
  • 유사한 패턴이 있는 다른 파일은 회귀 위험을 고려해 이번 수정 범위에서 제외하고 별도 관찰 사항으로 기록

검증

  • Drawer open/close 시 목록 API 재호출 4회+4회 → 0회, 필터 파라미터·필터 태그 보존
  • Drawer 내부 API 정상 동작, 유사 Drawer들도 재호출 0회
  • 콘솔 에러 0건, 타입체크 통과 (기존 baseline 외 신규 에러 0건)
  • 재현 경로·원인·검증 결과를 리포트 문서로 정리해 공유

결과

  • Drawer 1회 open/close 시 발생하던 목록 API 재호출 8회 → 0회
  • URL 필터 상태와 기존 기능을 유지하면서 간헐적으로 발생하던 그리드 깜빡임 제거