React & React Native/라이브러리 활용
[RN] React Native 환경에서 reactotron-react-native 이해하고 적용하기 -1 : Apisauce, AsyncStorage, Benchmarking, Networking, Redux
adjh54
2024. 11. 25. 14:33
반응형
해당 글에서는 reactotron-react-native 라이브러리를 활용하여 모니터링을 하는 방법에 대해 알아봅니다.
1) reactotron-react-native
💡 reactotron-react-native
- React Native 애플리케이션을 디버깅하고 모니터링하기 위한 강력한 개발 도구입니다.
- 이 도구는 애플리케이션의 상태, API 요청, Redux 액션, 콘솔 로그 등을 실시간으로 추적하고 분석할 수 있게 해 줍니다.
1. 주요 기능
주요 기능 | 설명 |
API 모니터링 | 네트워크 요청과 응답을 실시간으로 추적하고 검사할 수 있습니다. |
Redux 통합 | Redux 스토어의 상태 변화와 디스패치된 액션을 모니터링할 수 있습니다. |
AsyncStorage 검사 | AsyncStorage의 데이터를 실시간으로 확인하고 수정할 수 있습니다. |
콘솔 로깅 | 애플리케이션의 로그를 시각적으로 확인할 수 있습니다. |
성능 모니터링 | 애플리케이션의 성능 지표를 추적하고 분석할 수 있습니다. |
2. 플러그인
💡 플러그인
- reactotron을 사용할 때, 각각 지원해 주는 라이브러리를 확인하고 사용할 수 있습니다.
- 해당 플러그인을 통해서 React Native의 라이브러리들을 디버깅하고 모니터링할 수 있습니다.
플러그인 | 설명 |
Apisauce | Axios 라이브러리의 API 요청과 응답을 모니터링하고 디버깅하기 위한 플러그인 |
AsyncStorage | AsyncStorage 라이브러리의 로컬 저장소 데이터를 확인하고 관리하기 위한 플러그인 |
Benchmarking | React Native의 성능 측정 및 분석을 위한 도구 플러그인 |
Mobx State Tree | Mobx 상태 관리 라이브러리와의 통합하는 플러그인 |
Networking | XMLHttpRequests의 네트워크 요청과 응답을 모니터링을 하는 플러그인 |
Open In Editor | 코드를 에디터에서 바로 열어볼 수 있는 기능 |
Image Overlay | 이미지 오버레이 기능을 통한 UI 디버깅 플러그인 |
MMKV | react-native-mmkv 고성능 키-값 저장소 MMKV 데이터 확인하는 플러그인 |
Redux | Redux 라이브러리의 상태 관리 및 액션 모니터링 |
Storybook | Storybook 라이브러리의 UI 컴포넌트 개발 환경과의 통합하는 플러그인 |
Global Errors | 전역 에러 추적 및 모니터링을 하는 플러그인 |
Global Logs | 전역 로그 추적 및 확인을 하는 플러그인 |
반응형
2) 앱 설치
1. Reactotron App 설치
💡 Reactotron App 설치
# reactotron 앱을 homebrew를 통해 설치합니다.
$ brew install --cask reactotron
💡 [참고] 아래의 경로에서 Reactotron App 앱을 다운로드할 수 있습니다.
💡 앱을 실행하면 아래와 같은 형태로 앱을 확인할 수 있습니다.
2. reactotron 라이브러리 설치
# reactotron 라이브러리 설치(npm)
$ npm i --save-dev reactotron-react-native
# or
# reactotron 라이브러리 설치(yarn)
$ yarn add reactotron-react-native -D
3. index.tsx
💡 index.tsx
- 해당 페이지에서는 앱이 실행될 때 구성한 reactotron을 수행할 수 있도록 구성합니다.
- React Native의 DEV 환경 변수를 통해 개발모드에서만 수행되도록 하며 ./src/reactotron.config를 통해서 구성한 파일을 참조합니다.
/**
* init Register App
* @format
*/
import { AppRegistry } from 'react-native';
import App from './src/App';
import { name as appName } from './app.json';
if (__DEV__) {
import('./src/ReactotronConfig');
}
AppRegistry.registerComponent(appName, () => App);
4. ReactotronConfig.ts
💡 ReactotronConfig.ts
- 해당 페이지에서는 ReactotronConfig의 환경 설정을 수행합니다. 이 부분에서 plug-in을 추가하고 관리가 됩니다.
💡 [참고] 해당 플러그인에 대해서 Reactotron 내에서 모니터링하도록 구성하였습니다.
플러그인 | 설명 |
Apisauce | Axios 라이브러리의 API 요청과 응답을 모니터링하고 디버깅하기 위한 플러그인 |
AsyncStorage | AsyncStorage 라이브러리의 로컬 저장소 데이터를 확인하고 관리하기 위한 플러그인 |
Benchmarking | React Native의 성능 측정 및 분석을 위한 도구 플러그인 |
Networking | XMLHttpRequests의 네트워크 요청과 응답을 모니터링을 하는 플러그인 |
Redux | Redux 라이브러리의 상태 관리 및 액션 모니터링 |
💡 아래와 같이 추가적인 라이브러리 설치가 필요합니다.
- 이외에도 다른 라이브러리가 존재하니, 필요에 따라 각각은 아래의 문서를 참고하여 추가하여야 합니다.
# 라이브러리 설치(npm)
$ npm i --save-dev reactotron-apisauce reactotron-redux
# or
# 라이브러리 설치(yarn)
$ yarn add reactotron-apisauce reactotron-redux -D
💡 ReactotronConfig.ts 구성 소스코드
- 각각 추가하려는 모니터링에 대해서 추가를 수행하였습니다.
import Reactotron, { openInEditor } from 'reactotron-react-native';
import { reactotronRedux } from 'reactotron-redux'
import AsyncStorage from '@react-native-async-storage/async-storage';
import apisaucePlugin from "reactotron-apisauce"
import config from '../app.json';
Reactotron
.configure({
name: config.name,
onDisconnect: () => {
},
})
.setAsyncStorageHandler(AsyncStorage) // AsyncStorage의 모니터링 설정
.useReactNative({
asyncStorage: true, // AsyncStorage의 모니터링 설정
networking: true, // netwrok의 모니터링 설정
})
.use(reactotronRedux()) // Redux 모니터링 설정
.use(apisaucePlugin()) // Apisauce 모니터링 설정
.use(openInEditor()) // 편집기에서 열기 설정
.connect();
3) 앱을 실행합니다.
1. Reactotron App을 실행합니다.
2. 안드로이드의 디바이스를 이용하는 경우 포트포워딩을 해줍니다.
💡 안드로이드의 디바이스를 이용하는 경우 포트포워딩을 해줍니다.
- 안드로이드 디바이스를 사용하는 경우는 안드로이드 기기의 포트를 포트포워딩을 통해서 9090 포트로 연결을 해주어야 합니다.
- 이는 Reactotro이 통신할 수 있도록 안드로이드 디바이스와 Reactotron를 설정하는 필수적인 단계입니다.
- 디바이스를 연결한 뒤 아래의 명령어를 통해서 포트포워딩을 수행합니다.
$ adb reverse tcp:9090 tcp:9090
💡 해당 포트포워딩을 수행하고 Metro Bundler를 새로고침 하면 연결됨을 확인할 수 있습니다.
3. React-native 앱의 Metro Bundler를 재 실행합니다.
4. Timeline 탭을 선택하고 앱을 동작시킵니다.
💡 Timeline 탭을 선택하고 앱을 동작시킵니다.
- 위에서 지정한 Redux(Async Storage)와 API Response에 대한 로그 및 일반 DEBUG에 대해서 출력이 됨을 확인하였습니다.
5. 오른쪽에 필터 버튼을 눌러서 필요한 로그에 대해서만 확인이 가능합니다.
💡 필터를 선택하였습니다.
💡 아래와 같이 ‘API’ 필터만 선택한 경우, 이에 따르는 각각에 대해서만 확인이 가능합니다.
4) 앱 내에 상세 값 확인
1. RTK(Redux Tool Kit) : AsyncStorage 값 확인
💡 RTK(Redux Tool Kit) : AsyncStorage 값 확인
- 아래와 같이 AsyncStorage 내에 저장한 Redux값에 대해 아래와 같이 key, value 형태로 확인 할 수 있음을 확인하였습니다.
2. API 통신 데이터 확인 : Axios 요청/응답 값 확인
2.1. API 통신 요청 값 확인
💡 API 통신 요청 값 확인
- 아래와 같이 데이터 통신 엔드포인트와 요청/응답 시간, 요청 시 사용했던 값을 아래와 같이 확인 할 수 있습니다.
2.2. API 통신 응답 값 확인
💡 API 통신 응답 값 확인
- 아래와 같이 데이터 통신 엔드포인트와 통신 시간, 응답 값을 아래와 같이 확인 할 수 있습니다.
3. 개발자 콘솔 조회
3.1. 디버그 콘솔
💡 디버그 콘솔
- 아래와 같이 하나의 콘솔내에 여러 개 출력 중이며, JSON 형태의 데이터의 경우는 prettier 된 형태로 출력이 됩니다.
3.2. 에러 콘솔
💡 에러 콘솔
- 아래와 같이 에러 콘솔을 출력하고 에러가 발생한 지점을 추적할 수 있습니다.
오늘도 감사합니다. 😀
반응형