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 분기 정리 완료

스크린샷/영상 첨부 ​

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