Skip to content

버그 리포트 남기기

해결한 버그의 문제 상황, 원인, 해결 방법을 기록으로 남겨요. 나중에 참고할 수 있는 기술 자산이 돼요. 팀 위키, Notion, Slack 등에 올리거나 PR 설명에 링크로 첨부해요. 아래는 리포트에 들어갈 내용이에요.

재현 가능성

버그가 언제, 어떤 환경에서 발생했는지 구체적으로 기술해요. “iOS에서만 발생” 같은 문장은 너무 짧고 애매할 수 있으니, 기기·OS·브라우저·상황 등을 명확히 써요.

iOS 17.4.1 (iPhone 13 Pro)
Safari 브라우저에서만 발생
Chrome 및 Android에서는 정상 동작
다크모드일 때만 재현됨

맥락 설명

어떤 화면 / 흐름 / 인터랙션에서 버그가 발생했는지 단계별로 서술해요. “로그인 버튼 클릭 시”처럼 한 문장으로 끝내기보다는, 유저의 행위를 따라가는 형태로 작성하면 좋아요.

1. 로그인 페이지 접속
2. 아이디, 비밀번호 입력
3. 로그인 버튼 클릭
4. 아무 반응 없음 (submit 이벤트 미동작)

혹은

마이페이지 > 알림 설정 > '푸시 알림 받기' OFF 상태에서
다시 ON → 저장 버튼 클릭 → 저장되지 않음

기술적 원인

가능하다면 코드 레벨에서 어떤 문제가 있었는지 설명해요. 해당 컴포넌트, 훅, API 응답, 상태 처리 등의 흐름을 짚어봐요. 코드 링크나 해당 PR diff 링크를 함께 첨부하면 이해가 훨씬 쉬워져요.

`<Button />` 컴포넌트에 onClick 핸들러가 빠져 있음
useEffect 내부에서 의존성 배열 누락 → 초기 렌더에서만 실행됨
서버 응답에 따라 isMounted 조건 없이 상태 변경 → unmounted 상태에서 setState 호출
A/B 테스트 플래그가 잘못된 케이스에 fallback 없음

재발 방지 제안

이 버그가 다시 발생하지 않도록 하기 위해 어떤 조치를 했는지를 함께 기록해요. 수정 이후 어떤 테스트/리팩토링/가이드 도입이 필요했는지도 포함해요. 이 내용이 있어야 문제가 일시적으로 해결된 것이 아닌, 구조적으로 해소됐다는 신뢰를 줄 수 있어요.

onClick 누락 방지를 위해 버튼 컴포넌트에 핸들러 required 타입 지정
CI에서 onClick 없는 버튼이 있으면 lint 에러 나도록 규칙 추가
isMounted 플래그를 useSafeState 훅으로 리팩토링
실험 코드 제거 후 fallback 분기 정리 완료

스크린샷/영상 첨부

직접적인 시각 증거는 이해를 빠르게 도와줘요. 가능하면 다음 내용을 포함한 캡처 또는 영상 링크를 첨부해요