모바일 오류를 Sentry scope로 구분하기
앱에서 발생하는 오류를 화면별 console.warn으로만 보지 않고, scope와 context를 붙여 추적 가능하게 만든 기록입니다.
Code notes
코드에서 확인한 구현 포인트
배포 기준 2026.05.03
관련 파일
apps/mobile/lib/logger.tsapps/web/app/global-error.tsxapps/mobile/app/_layout.tsx구현 메모
모바일 logger는 알 수 없는 오류 값을 name, message, stack, value 형태로 정규화한다.
logError와 logWarn은 scope를 태그로 붙여 Sentry에 보내므로 기능별 오류 분류가 쉬워진다.
Next.js global-error도 Sentry captureException을 호출해 웹 런타임 오류를 놓치지 않게 했다.
console.warn만으로는 배포 후를 볼 수 없다
개발 중에는 console.warn이 충분해 보인다. 하지만 실제 사용자 기기에서 어떤 오류가 얼마나 자주 나는지는 로컬 콘솔로 볼 수 없다.
특히 모바일은 네트워크, 권한, 기기 상태에 따라 같은 코드도 다르게 실패한다. 그래서 오류에 scope와 context를 붙여 Sentry로 보낼 공통 로거가 필요했다.
오류를 먼저 정규화하다
모든 오류가 Error 객체로 오지는 않는다. 문자열일 수도 있고, 알 수 없는 값일 수도 있다. logger는 먼저 name, message, stack, value를 제품이 읽을 수 있는 형태로 정리한다.
개발 모드에서는 stack을 더 볼 수 있게 하고, 운영에서는 scope와 context를 중심으로 추적한다. 민감한 값은 넣지 않고 어느 흐름에서 실패했는지를 알 수 있게 하는 것이 핵심이다.
scope가 있어야 분류가 된다
logError와 logWarn은 scope를 필수로 받는다. 예를 들어 skin-analysis.unhandled처럼 어느 기능의 어느 단계에서 난 오류인지 태그로 남길 수 있다.
이 방식은 오류 목록을 단순한 에러 문자열 모음이 아니라 제품 기능별 디버깅 큐로 바꿔준다.
앞으로의 기준
새 API나 모바일 흐름을 만들 때 catch 안에서 바로 console.warn을 찍기보다, scope와 context를 붙여 남기는 습관을 들여야 한다.
관측 가능성은 나중에 붙이는 장식이 아니라, 배포 후에도 제품을 고칠 수 있게 하는 기본 인프라다.
Keep reading
다른 글 이어서 보기
Debugging
2026.05.05
6 min read
GitHub 푸시 후 Vercel 배포가 Blocked가 되었을 때
커밋은 올라갔지만 Vercel 자동 배포가 막혔던 상황에서, GitHub 작성자와 프로젝트 권한을 확인해 해결한 기록입니다.
Debugging
2026.05.04
7 min read
서브도메인은 연결됐는데 /admin이 404였던 이유
blog, ad, nacho 서브도메인을 나누는 과정에서 Vercel 404와 앱 내부 라우팅 문제를 구분해 해결한 기록입니다.
Debugging
2026.05.03
8 min read
도메인은 연결됐는데 접속이 거부될 때
tangly.kr과 www 도메인을 Vercel에 붙이며 DNS, 네임서버, SSL 발급 대기 상태를 구분해 해결한 기록입니다.