React Native

React Native SDK가 Android SDK와 Apple SDK 위에서 어떻게 동작하는지, 어떤 패키지로 이루어져 있는지, 문서를 어떤 순서로 읽으면 되는지 설명합니다.

Sophonz React Native SDK는 Sophonz Android SDK와 Apple SDK를 감싸는 바인딩입니다. JavaScript의 에러, 로그, 네트워크 요청, 스팬은 네이티브 모듈을 거쳐 네이티브 SDK에 기록되므로, 네이티브 SDK가 스스로 수집한 데이터와 같은 세션, 같은 기기 식별자, 같은 전송 경로를 공유합니다.

구조

JavaScript 쪽에는 텔레메트리 파이프라인이 없습니다. 코드에서 logError를 호출하거나 스팬을 끝내면 그 호출은 React Native 브리지를 건너가고, 기록은 네이티브 SDK가 합니다. 저장, 재시도, 크래시 복구, OTLP 변환이 모두 네이티브에서 이루어지므로 컬렉터는 네이티브 앱에서 보낸 것과 똑같은 OTLP/JSON을 받습니다.

시작하기 전에 알아 둘 점이 세 가지 있습니다.

  • 설정은 네이티브에 있습니다. Android는 빌드 시점에 sophonz-config.json에서 컬렉터 URL과 앱 키를 읽습니다. iOS는 JavaScript, Sophonz-Info.plist, 네이티브 코드 중 하나에서 받습니다. 키가 빠진 것은 네이티브 쪽 문제이고, JavaScript에서는 아무것도 알려주지 않습니다.
  • 네이티브 수집은 따로 할 일이 없습니다. 크래시, ANR, fetch와 XMLHttpRequest로 보낸 네트워크 요청, 앱 생명주기는 JavaScript가 무엇을 호출하든 네이티브 SDK가 수집합니다.
  • SDK를 먼저 시작한 쪽의 설정이 적용됩니다. MainApplication이나 AppDelegate에서 SDK를 시작했다면 JavaScript의 initialize에 넘긴 옵션은 경고 없이 무시됩니다.

패키지

패키지역할
@sophonz/react-nativeSDK 시작, 전역 JS 에러 핸들러, 로그, 브레드크럼, 세션, 사용자, 수동 네트워크 기록. Expo 설정 플러그인과 설치 마법사 포함
@sophonz/react-native-tracer-provider네이티브 SDK가 스팬을 기록하는 OpenTelemetry TracerProvider
@sophonz/react-native-navigationexpo-router, React Navigation, react-native-navigation의 화면 스팬
@sophonz/react-native-reduxRedux 액션을 디스패치할 때마다 스팬 하나
@sophonz/react-native-otlp같은 텔레메트리를 다른 백엔드로도 보내는 OTLP/HTTP 익스포터

필수는 첫 번째 패키지뿐입니다. navigation과 redux 패키지는 tracer provider가 필요합니다.

버전

구성 요소버전배포 위치
@sophonz/* React Native 패키지0.1.0npm
Sophonz Android SDK1.0.0GitHub Packages (인증 필요)
Sophonz Apple SDK (SophonzIO)1.0.0sophonz-apple-sdk의 git 태그 v1.0.0

npm 패키지 다섯 개는 함께 릴리스되며 버전이 같습니다. 네이티브 SDK 버전은 React Native 패키지가 고정하므로 따로 고를 필요가 없습니다.

읽는 순서

  1. 설치 — 패키지, 네이티브 SDK 접근 권한, Expo, 일반 React Native, SDK 시작
  2. 설정 — 플랫폼별 컬렉터 URL과 앱 키의 위치, 전체 옵션
  3. 계측 — 코드 없이 수집되는 것과 패키지별로 추가되는 것
  4. 네트워크와 분산 추적 — 요청 수집, traceparent, 백엔드 트레이스 연결
  5. 내비게이션 — expo-router, React Navigation, react-native-navigation의 화면 스팬
  6. Redux — 액션 미들웨어와 기록 내용
  7. OpenTelemetry와 OTLP — OpenTelemetry API로 만드는 커스텀 스팬, 추가 익스포터
  8. API 레퍼런스 — 모든 export와 두 플랫폼의 차이
  9. 릴리스 빌드와 심볼리케이션 — JS 번들, R8 매핑, dSYM
  10. 예제 — 전체 시작 순서와 자주 쓰는 패턴

TIP — 이제 시작입니다

이제 앱을 배포하세요. Sophonz가 실사용자가 겪는 문제를 포착하고, 당신의 앱은 스스로 진화합니다.