API 재호출 8회 → 0회Polestar 10
간헐적으로 발생하던 그리드 깜빡임 원인 추적
재현이 어려웠던 그리드 깜빡임을 Playwright로 반복 검증해 발생 조건을 찾고, 불필요한 API 재호출의 원인을 추적해 해결
ReactRecoilPlaywright
배경·문제
특정 목록 화면에서 상세 Drawer를 열고 닫을 때 목록 그리드가 깜빡이는 문제가 있었습니다. 항상 발생하지 않아 간헐적 버그로 취급되고 있었습니다.
재현 — 발생 조건 특정
Playwright로 반복 재현하며 API 호출 횟수를 확인해 발생 조건을 특정했습니다.
- URL에 필터 파라미터가 있는 상태에서 Drawer를 열고 닫으면 open 시 4회 + close 시 4회 목록 API가 재호출되는 것을 확인
- 파라미터 없이 직접 진입하거나 같은 행을 재오픈할 때는 발생하지 않음 → 발생 여부가 URL 필터 파라미터 상태에 따라 달라지는 것을 확인
원인 체인 분석
Drawer가 열릴 때 URLSearchParams를 통해 URL을 갱신하는 로직이 있었고, 이 변경이 전역 필터 상태와 목록 재조회를 순차적으로 발생시키고 있었습니다.
- 1
Drawer open
URL 교체로 페이지의 필터 파라미터 소실
- 2
전역 Filter 반응
필터 atom 초기화
- 3
useEffect([filterList]) 실행
목록 재조회 호출
- 4
그리드 깜빡임
close 시에도 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 필터 상태와 기존 기능을 유지하면서 간헐적으로 발생하던 그리드 깜빡임 제거
사용 기술
- Playwright
- 반복 재현과 API 호출 횟수 확인을 통해 발생 조건을 특정하고, 수정 전후 동작을 검증하기 위해 사용했습니다.