支持范围
| 项目 | 支持情况 |
|---|---|
| SDK 版本 | @flashcatcloud/mobile-react-native 0.1.x(建议 ≥ 0.1.1) |
| 目标平台 | iOS 和 Android(不支持 React Native Web / macOS / Windows) |
| React Native | >= 0.63.4 < 1.0;新架构(Fabric / TurboModules)已在 0.76 上验证 |
| iOS | 部署目标 ≥ 12.0 |
| Android | minSdkVersion ≥ 21 |
| 原生依赖 | Android cloud.flashcat:dd-sdk-android-* 0.5.x(Maven Central);iOS Flashcat* pods ~> 0.5(CocoaPods trunk) |
| RUM 数据源 | 事件固定写入 source: "react-native" |
| 实现方式 | 基于原生 iOS / Android SDK 封装的 React Native 原生模块 |
| 数据上报 | POST /api/v2/rum |
包和能力
| 包 | npm 名 | 说明 |
|---|---|---|
| RUM / Core / Crash | @flashcatcloud/mobile-react-native | 初始化、配置、RUM(view / action / resource / error / session)、原生崩溃采集、Android source map 上传脚本 |
| react-navigation 视图采集 | @flashcatcloud/mobile-react-navigation | 把 NavigationContainer 的路由切换记录为视图 |
| react-native-navigation 视图采集 | @flashcatcloud/mobile-react-native-navigation | 把 Wix react-native-navigation(^7.5.0)的页面切换记录为视图 |
| WebView 追踪 | @flashcatcloud/mobile-react-native-webview | 关联 react-native-webview(>= 11.0.0)内的 Browser RUM 数据 |
| Source map 上传 | @flashcatcloud/flashcat-cli | sourcemaps upload-react-native 命令(≥ 0.4.0) |
JavaScript 类名以
Dd* 开头(DdSdkReactNative、DdSdkReactNativeConfiguration、DdRum、DdLogs)。公有云请保持默认的 site = 'CN';私有化部署请配置完整的 customEndpoints。支持的自动采集
| 能力 | 支持情况 | 说明 |
|---|---|---|
| 自动 view | 支持(需伴生包) | react-navigation 或 react-native-navigation 对应的采集包;其他导航方案用 DdRum.startView 手动管理 |
| 自动 action | 支持 | trackInteractions: true,采集带 onPress 组件的点击 |
| 自动 resource | 支持(仅 JS 请求) | trackResources: true,拦截 XMLHttpRequest / fetch;一律记为 xhr 类型 |
| 未处理 JS 异常 | 支持 | trackErrors: true |
| 原生崩溃 | 支持 | 需 nativeCrashReportEnabled: true |
| 分布式追踪 | 支持 | 对 firstPartyHosts 命中的域名注入 W3C traceparent 与 Datadog 追踪头 |
| 原生移动端性能指标 | 支持 | CPU、内存、刷新率、慢帧 / 冻结帧;iOS 另有启动耗时(冷 / 热启动) |
| JS 线程帧率 | 支持 | React Native 特有指标,控制台「性能」页展示 |
| 卡顿检测 | 支持 | Android 支持 ANR;iOS 设置 appHangThreshold 后支持 App Hang |
| Long task | 支持 | 原生主线程默认开启(200 ms);JS 线程默认关闭,通过 longTaskThresholdMs 开启 |
| WebView 追踪 | 支持(需伴生包) | @flashcatcloud/mobile-react-native-webview |
当前限制
| 限制 | 说明 |
|---|---|
| Session Replay | 不支持 |
| Logs | DdLogs 仅 Android 端会发送日志;iOS 端为空操作,不发送任何数据 |
| 静态资源 | 只采集经 JavaScript 发出的请求;<Image> 等原生网络栈加载的图片、字体等不会被采集,控制台对 React Native 应用不展示静态资源面板 |
| resource 类型 | 所有采集到的请求一律记为 xhr,不按响应 Content-Type 区分 |
| Android 启动耗时 | Android 端暂无启动耗时(app launch)指标;iOS 端上报冷 / 热启动耗时 |
| 平台范围 | 仅 iOS / Android;React Native Web 不支持 |
| 最低版本 | 建议 0.1.1 或更高;0.1.0 在缺少 FLASHCAT_API_KEY 时 Android release 构建会失败 |
符号解析兼容性
React Native 的错误堆栈可能同时包含 JS 帧与原生帧,两者的还原方式不同:| 栈帧类型 | 所需上传文件 | 上传方式 |
|---|---|---|
| JavaScript(Android) | release bundle 的 source map | flashcat-sourcemaps.gradle 随构建自动上传 |
| JavaScript(iOS) | release bundle 的 source map | flashcat-cli sourcemaps upload-react-native --platform ios |
| iOS Native | dSYM | flashcat-cli dsyms upload;总是需要 |
| Android Native(JVM) | mapping 文件 | Flashcat Android Gradle 插件;仅在开启混淆时需要 |
| Android Native(NDK) | NDK 符号文件 | 同上,含原生代码时需要 |
JS source map 按 service + 版本号 + bundle 文件名 匹配,不依赖 Metro 的 debug ID 插件。请保持 SDK 的
serviceName / 版本号与上传参数一致,并把上传纳入每一次发布构建。原生崩溃还需要先把 nativeCrashReportEnabled 设为 true(默认关闭)。两类符号文件的完整说明见 高级配置。