Skip to main content

React Native DevTools

React Native DevTools는 React Native를 위한 현대적인 디버깅 도구다. 처음부터 목적에 맞게 설계되어 이전 디버깅 방법보다 더 통합적이고 정확하며 안정적이다.

React Native DevTools의 "Welcome" 창

React Native DevTools는 React 앱 디버깅을 위해 설계되었으며, 네이티브 도구를 대체하기 위한 것은 아니다. React Native의 기본 플랫폼 레이어를 검사하려면(예: 네이티브 모듈 개발 시) Android Studio와 Xcode의 디버깅 도구를 사용해야 한다(네이티브 코드 디버깅 참조).

💡 호환성 — 0.76 버전에서 출시

React Native DevTools는 Hermes를 실행하는 모든 React Native 앱을 지원한다. 이전의 Flipper, Experimental Debugger, Hermes 디버거(Chrome) 프론트엔드를 대체한다.

이전 버전의 React Native에서는 React Native DevTools를 설정할 수 없다.

  • Chrome 브라우저 DevTools — 지원되지 않음
    • chrome://inspect를 통해 React Native에 연결하는 것은 더 이상 지원되지 않는다. 최신 버전의 Chrome DevTools(최신 브라우저 기능과 API에 맞게 빌드됨)는 테스트되지 않았으며, 이 프론트엔드는 우리의 커스텀 기능이 없다. 대신 React Native DevTools와 함께 지원되는 버전을 제공한다.
  • Visual Studio Code — 지원되지 않음 (기존)
    • Expo Tools나 Radon IDE와 같은 서드파티 확장 프로그램은 호환성이 개선되었을 수 있지만, React 팀에서 직접 지원하지는 않는다.
💡 피드백 & FAQ

우리는 모든 플랫폼에서 React를 디버깅할 때 사용하는 도구가 안정적이고 친숙하며 간단하고 일관되기를 원한다. 이 페이지에서 설명하는 모든 기능은 이러한 원칙을 염두에 두고 구축되었으며, 앞으로 더 많은 기능을 제공할 계획이다.

우리는 React Native DevTools의 미래를 위해 적극적으로 개선 중이며, 이슈, 자주 묻는 질문, 피드백을 관리하기 위해 중앙화된 GitHub 토론을 만들었다.

핵심 기능​

React Native DevTools는 Chrome DevTools 프론트엔드를 기반으로 한다. 웹 개발 경험이 있다면 그 기능이 익숙할 것이다. 시작점으로 Chrome DevTools 문서를 살펴보는 것을 추천한다. 이 문서에는 전체 가이드와 동영상 자료가 포함되어 있다.

콘솔​

React Native DevTools Sources 화면과 함께 표시된 일련의 로그와 기기

콘솔 패널에서는 메시지를 확인하고 필터링할 수 있으며, JavaScript 코드를 실행하고 객체 속성을 검사하는 등 다양한 작업을 수행할 수 있다.

콘솔 기능 참조 | Chrome DevTools

유용한 팁​

  • 앱에서 많은 로그를 출력한다면, 필터 박스를 사용하거나 표시할 로그 레벨을 조정한다.
  • Live Expressions을 통해 시간에 따른 값 변화를 관찰한다.
  • Preserve Logs를 사용해 페이지를 새로고침해도 로그 메시지를 유지한다.
  • 콘솔 화면을 지우려면 Ctrl + L 단축키를 사용한다.

소스 파일과 중단점​

React Native DevTools의 Sources 뷰에서 중단점이 설정된 상태와 디바이스 화면

Sources 패널은 앱 내부의 소스 파일을 확인하고 중단점을 등록할 수 있는 기능을 제공한다. 중단점은 코드 실행을 일시 중지할 위치를 정의하는데, 이를 통해 프로그램의 현재 상태를 확인하고 코드를 한 단계씩 실행할 수 있다.

중단점으로 코드 실행 일시 중지 | Chrome DevTools

tip

미니 가이드​

브레이크포인트는 디버깅 도구 모음에서 가장 기본적이고 중요한 도구다!

  1. 사이드바나 Cmd ⌘+P / Ctrl+P를 사용해 소스 파일로 이동한다.
  2. 코드 라인 옆의 라인 번호 칸을 클릭해 브레이크포인트를 추가한다.
  3. 상단 오른쪽의 네비게이션 컨트롤을 사용해 코드를 단계별로 실행할 수 있다.

유용한 팁​

  • 앱이 일시 중지되면 "디버거에서 일시 중지됨" 오버레이가 나타난다. 이 오버레이를 탭하면 실행을 재개할 수 있다.
  • 브레이크포인트에 도달했을 때 오른쪽 패널에 주의를 기울여라. 현재 스코프와 호출 스택을 확인하고, 감시 표현식을 설정할 수 있다.
  • 텍스트 편집기에서 debugger; 문을 사용해 빠르게 브레이크포인트를 설정할 수 있다. 이 방법은 Fast Refresh를 통해 즉시 디바이스에 반영된다.
  • 다양한 종류의 브레이크포인트가 있다! 예를 들어, 조건부 브레이크포인트와 로그포인트가 있다.

메모리​

메모리 패널에서 힙 스냅샷을 검사하는 화면

메모리 패널을 사용하면 힙 스냅샷을 찍고, 시간에 따른 자바스크립트 코드의 메모리 사용량을 확인할 수 있다.

힙 스냅샷 기록하기 | Chrome DevTools

유용한 팁​

  • 힙에서 특정 객체를 필터링하려면 Cmd ⌘+F 또는 Ctrl+F를 사용한다.
  • 할당 타임라인 리포트를 활용하면 시간에 따른 메모리 사용량을 그래프로 확인할 수 있다. 이를 통해 메모리 누수를 식별하는 데 도움이 된다.

React DevTools 기능​

통합된 컴포넌트(Components)와 프로파일러(Profiler) 패널에서 React DevTools 브라우저 확장 프로그램의 모든 기능을 확인할 수 있다. 이 기능들은 React Native DevTools에서도 원활하게 동작한다.

React 컴포넌트​

React Components 패널을 사용해 엘리먼트 선택 및 위치 확인

React Components 패널을 통해 렌더링된 React 컴포넌트 트리를 검사하고 업데이트할 수 있다.

  • DevTools에서 엘리먼트 위에 마우스를 올리거나 선택하면 기기에서 해당 엘리먼트가 강조 표시된다.
  • DevTools에서 엘리먼트를 찾으려면, 왼쪽 상단의 "Select element" 버튼을 클릭한 후 앱 내의 아무 엘리먼트나 탭하면 된다.

유용한 팁​

  • 컴포넌트의 props와 state는 런타임 중에 오른쪽 패널을 통해 확인하고 수정할 수 있다.
  • React Compiler로 최적화된 컴포넌트는 "Memo ✨" 뱃지로 표시된다.
tip

프로 팁: 리렌더링 하이라이트​

리렌더링은 React 앱에서 성능 문제의 주요 원인 중 하나다. DevTools를 사용하면 컴포넌트가 리렌더링될 때 이를 실시간으로 강조 표시할 수 있다.

  • 이 기능을 활성화하려면, View Settings(⚙︎) 아이콘을 클릭하고 "Highlight updates when components render" 옵션을 선택한다.

리렌더링 하이라이트 설정 위치와 실시간 렌더링 오버레이 기록

React 프로파일러​

플레임 그래프로 렌더링된 프로파일

React 프로파일러 패널을 사용하면 컴포넌트 렌더링과 React 커밋의 타이밍을 이해하기 위해 성능 프로파일을 기록할 수 있다.

더 자세한 정보는 2018년 가이드를 참고한다. (일부 내용이 최신 버전과 다를 수 있음)

DevTools 재연결하기​

가끔 DevTools가 타겟 디바이스와의 연결이 끊어지는 경우가 있다. 이런 상황은 다음과 같은 경우에 발생할 수 있다:

  • 앱이 종료된 경우
  • 앱이 재빌드된 경우 (새로운 네이티브 빌드가 설치된 경우)
  • 앱이 네이티브 측에서 크래시된 경우
  • 개발 서버(Metro)가 종료된 경우
  • 물리적 디바이스가 연결 해제된 경우

연결이 끊어지면 "디버깅 연결이 종료되었습니다"라는 메시지와 함께 다이얼로그가 표시된다.

디바이스 연결이 끊어졌을 때 표시되는 재연결 다이얼로그

여기서 다음과 같은 선택지를 사용할 수 있다:

  • 닫기: 닫기(×) 아이콘을 선택하거나 다이얼로그 외부를 클릭하면 연결이 끊기기 전의 마지막 상태로 DevTools UI로 돌아간다.
  • 재연결: 연결이 끊어진 원인을 해결한 후 "DevTools 재연결"을 선택한다.