应用监控 SDK

网页与小程序直接引用脚本,不用下载。原生 App 下载对应的包接进工程即可。 四端上报到同一个应用 ID,数据在同一个看板里看。

🌐Web rum.js

网页端的 JS 错误、Promise 异常、资源加载失败、接口异常与性能指标。异步加载,不阻塞渲染。

约 12 KB无依赖支持 SPA 路由
v1.0.0更新于 2026-08-04
更新日志
  • JS 错误、Promise 异常、资源加载失败捕获
  • 接口异常与性能指标采集
  • Source Map 堆栈还原
  • 会话录制关联

📱小程序 mp.js

微信 / 支付宝 / 抖音 / 百度小程序。自动接管 request 上报与页面路由,捕获内存告警。

约 11 KB四平台通用本地存储降级
v1.0.0更新于 2026-08-04
更新日志
  • 微信 / 支付宝 / 抖音 / 百度四平台适配
  • 自动接管 request 上报接口异常
  • 页面路由与内存告警监听

🍎iOS 1.0.0

Swift 实现。崩溃时只落盘不发网络,下次启动补报 —— 进程正在死亡时网络请求发不出去。

Swift 5.9+iOS 13+单文件接入
v1.0.0更新于 2026-08-04
更新日志
  • 信号与 NSException 崩溃捕获
  • 崩溃落盘 + 下次启动补报
  • 符号表还原调用链
  • 操作轨迹记录

🤖Android 1.0.0

Kotlin 实现。捕获未捕获异常与 ANR,处理完把控制权还给系统 —— 不会让你在 Google Play 后台丢掉崩溃数据。

Kotlin 1.9+minSdk 24单文件接入
v1.0.0更新于 2026-08-04
更新日志
  • 未捕获异常与 ANR 监测
  • 崩溃落盘 + 下次启动补报
  • R8 反混淆还原调用链(含内联)
  • 操作轨迹记录

🐦Flutter 1.0.0

Dart 异常与 Promise 拒绝自动捕获,路由变化记进操作轨迹。原生崩溃仍由平台 SDK 负责 —— Dart 层感知不到进程已经在死了。

Flutter 3.10+Dart 3.0+Android + iOS
v1.0.0 更新于 2026-08-05
更新日志
  • Dart 异常与 Promise 拒绝捕获
  • 路由 observer 自动记录页面轨迹
  • 渠道归因结果读取
  • 原生崩溃由平台 SDK 捕获

⚛️React Native 1.0.0

JS 未捕获异常与未处理的 Promise 拒绝自动上报,JS 堆栈原样透传。红屏不会被吞掉。

RN 0.70+Android + iOS无第三方依赖
v1.0.0 更新于 2026-08-05
更新日志
  • JS 未捕获异常与 unhandledrejection
  • JS 堆栈透传,不被原生栈覆盖
  • 红屏不被吞掉
  • 渠道归因结果读取

接入说明

把「你的应用ID」换成看板里给你的那一串。四端上报到同一个 ID,数据在同一个看板里。

1. 引入脚本

放在 </body> 之前。不用下载,直接引用:

<script src="https://你的域名/rum.js" crossorigin="anonymous"></script> <script> Woodpecker.init({ id: "你的应用ID", release: "1.0.0", // 建议填,便于按版本区分问题 sendSpaPv: true // 单页应用:路由变化自动上报 }); </script>

2. 记录用户身份与操作轨迹(可选)

// 关联业务用户,错误列表里能看到「影响了哪些人」 Woodpecker.identify("user_10086"); // 手动埋一条轨迹,出错时会带上出错前的操作过程 Woodpecker.addBreadcrumb("click", { button: "结算" }); // 主动上报一个已捕获的异常 try { risky(); } catch (e) { Woodpecker.capture(e); }

3. 上传 Source Map(压缩过的代码必须传)

不传的话堆栈是 a.b.c:1:2345,定位不到源码:

curl -X POST "https://你的域名/api/apm/你的应用ID/sourcemaps?release=1.0.0&filename=app.js.map" \ -H "Cookie: <登录 Cookie>" \ --data-binary @dist/app.js.map

上传后请把 .map 文件从公开目录删掉 —— source map 等价于源码。

关于符号文件的安全

Source map、mapping、符号表都等价于源代码。它们只用于还原堆栈, 不会被任何接口返回,也不存放在任何可公开访问的目录下。