Cursor에서 자동완성, Cursor Tab, AI Suggestion 등 GPT 기능이 전부 작동하지 않는 현상이 발생했다.처음에는 단순히 설정이 꼬인 줄 알고 쉽게 해결될 문제라고 생각했다. 하지만 예상보다 깊고 구조적인 문제가 있었고, 최종적으로는 Cursor 팀에 직접 피드백을 보내야 하는 상황이었다.이 글은 해당 문제를 겪는 사용자가 어디서부터 점검하면 좋을지를 기록한 경험 기반 트러블슈팅 로그이다.🌱 초기 판단: 설정 꼬임 정도로 여겼다Cursor의 자동완성 기능은 평소에는 잘 작동했기 때문에, 이번 현상도 단순한 일시적 오류로 생각했다.과거에도 자동완성이 먹통이 될 때가 있었지만, Cursor 앱을 껐다 켜면 정상 작동했기 때문에 설정 문제일 거라 판단했다.그래서 Settings > Au..
로컬에서 npm run build를 했을 때는 아무 문제가 없었는데, GitHub에 push를 하면 빌드 오류가 발생하는 문제가 있었다. 이 문제 때문에 배포 브랜치에 여러 번 커밋을 푸시하게 되었고, 그 결과 서버 쪽에서 오류가 발생했다. 이후 백엔드 개발자로부터 "빌드 에러를 미리 잡는 방법을 고민해보는 게 어떻겠느냐"는 피드백을 받았다.하지만 당시에는 이렇게 생각했다.→ "로컬에서 build가 잘 되는데, 뭘 더 어떻게 하라는 거지?"그럼에도 불구하고 개선 방법을 찾아보기로 했다.🌱 해결 방법을 찾기까지build 에러가 GitHub Actions에서만 발생하는 것이라면, GitHub Actions에서만 실행되는 환경 차이를 먼저 의심해볼 수 있다.따라서 디버깅용 빌드 전용 브랜치를 따로 만들어, ..
Next.js + React Hook Form 기반으로 콘텐츠 생성/수정 페이지를 구현하면서, footer 버튼에서 form의 현재 상태를 필요로 하는 요구가 생겼다.초기 접근처음에는 useForm() 내부에서 watch()를 사용해 전체 form 데이터를 실시간으로 추적하고, 해당 값을 ContentFooter 컴포넌트에 prop으로 전달하는 방식으로 구현했다. 문제 발생하지만 watch()는 form의 모든 필드가 변경될 때마다 리렌더링을 유발한다. 특히 이미지나 파일 업로드 등 상태가 큰 컴포넌트가 포함된 경우 watch()의 호출 비용이 커져 성능 저하로 이어졌다.실시간 렌더링이 잦아지고버튼과 무관한 필드 변경에도 전체 리렌더가 발생함원인 분석watch()는 전체 상태를 추적하기 때문에, 모든 입..
로그인 기능을 구현하다가 예상치 못한 문제가 하나 생겼다.로그인은 정상적으로 성공했고, 상태도 잘 저장되었지만 router.push()가 작동하지 않았다. 상태 저장도 되고, 콘솔에도 데이터가 잘 찍히는데 페이지 이동이 일어나지 않았다.문제 상황- 로그인 API 요청을 보낸 뒤, 응답으로 받은 사용자 정보를 Zustand에 저장하고 그 직후 router.push()를 호출했는데 페이지가 이동하지 않았다.- 아무런 에러도 없고, 상태도 잘 저장되었는데 라우팅만 반응이 없었다.재현 조건- 상태 저장 없이 router.push()만 실행하면 잘 작동했다.-상태 저장을 한 다음 줄에 라우팅 코드를 넣으면 작동하지 않았다. >> 상태 저장과 라우팅이 한 번에 일어날 때 문제가 발생했다.검색1. router.pus..