Watchman은 React Native 개발에서 왜 필요할까
React Native나 Expo로 개발하다 보면 코드를 고쳤는데 앱에 바로 반영되지 않는 경우가 있습니다. 이때 원인 중 하나가 파일 변경 감시 도구인 Watchman 문제일 수 있습니다.
Watchman이란
Watchman은 Meta가 만든 파일 시스템 변경 감시 도구입니다. 프로젝트 안의 파일이 바뀌면 이를 빠르게 감지해 Metro 같은 도구에 알려줍니다.
대규모 프로젝트에서는 파일이 많기 때문에 단순 폴링 방식보다 전문 감시 도구가 더 안정적입니다.
Metro와 Fast Refresh
React Native의 Metro 번들러는 소스 코드 변경을 감지해 앱에 빠르게 반영합니다. 이 기능이 Fast Refresh입니다.
Watchman이 정상 동작하면 파일 변경이 빠르게 감지되고, 앱 화면도 자연스럽게 갱신됩니다.
문제가 생기면 나타나는 증상
Watchman이나 Metro 캐시가 꼬이면 다음 증상이 나타날 수 있습니다.
- 파일을 저장해도 앱이 갱신되지 않는다.
- 예전 코드가 계속 실행된다.
- Metro를 재시작해야만 변경이 반영된다.
- 특정 파일 변경만 감지되지 않는다.
기본 해결 방법
먼저 Metro 캐시를 비우고 다시 시작해 볼 수 있습니다.
npx expo start -cWatchman 상태가 문제라면 watch를 초기화하는 방법도 있습니다.
watchman watch-del-all환경에 따라 Watchman을 재설치하거나 업데이트해야 할 수도 있습니다.
실무 팁
- 프로젝트가 커질수록 Watchman 설치를 권장합니다.
- 캐시 문제와 코드 문제를 구분해야 합니다.
- 팀 문서에 Metro 캐시 초기화 절차를 남겨두면 좋습니다.
- monorepo나 외부 디렉터리 symlink 구조에서는 감시 범위를 특히 주의해야 합니다.
듀오랩스가 보는 관점
개발 환경 문제는 기능 버그처럼 보일 때가 많습니다. Watchman과 Metro의 역할을 이해하면 “코드가 안 먹는다”는 막연한 문제를 더 빠르게 진단할 수 있습니다.
함께 읽기
- 여러 고객 앱을 운영할 때 계정과 서명 키를 분리하는 방법React Native와 Expo로 여러 고객 앱을 개발·배포한다면 계정, 비용, 서명 키, 스토어 권한을 어떻게 나눌지 초기에 정해야 합니다. 이 구조를 잘못 잡으면 나중에 소유권 이전, 업데이트, 보안 관리가 복잡해집니다.
- React Native와 Expo에서 OTA 업데이트를 이해하는 방법OTA(Over-The-Air) 업데이트는 앱 스토어 심사를 거치지 않고 설치된 앱의 JavaScript 코드와 에셋을 갱신하는 방식입니다. React Native와 Expo 환경에서는 빠른 버그 수정과 작은 기능 개선에 매우 유용합니다.
- Expo로 개발할 때 자주 쓰는 실행 명령어 모음Expo 앱을 개발하다 보면 명령어보다 “지금 다시 빌드해야 하나?”가 더 헷갈립니다. 화면 코드만 바꿨는데 Gradle 빌드를 다시 돌리기도 하고, 반대로 스플래시 이미지를 바꾼 뒤 Metro만 재시작해서 왜 그대로인지 한참 보기도 합니다.
- 모바일 앱 스토어 배포 자동화를 설계할 때 볼 것들모바일 앱 배포는 빌드 파일을 만드는 것에서 끝나지 않습니다. 인증서, 서명 키, 스토어 메타데이터, 심사 정보, 버전 관리, 제출 자동화까지 함께 설계해야 반복 가능한 배포가 됩니다.
- Expo EAS 비용 구조와 절약 전략Expo Application Services(EAS)는 React Native 앱을 빌드, 제출, 업데이트하는 과정을 단순하게 만들어줍니다. 하지만 팀 규모와 빌드 빈도에 따라 비용 구조를 이해하고 써야 합니다.