Overview
This page documents Bugsee React Native SDK 7.x, which is in beta and can change between betas. The stable release is 6.x: see the 6.x documentation. Upgrading? See Migrating from 6.x to 7.x.
The Bugsee React Native SDK (@bugsee/react-native) captures what happened before a bug: a video of the screen, network traffic, console logs and the steps that led to it. It attaches that timeline to crash, error and bug reports you can replay in the Bugsee dashboard.
The package is built on the native Bugsee SDKs for Android and iOS, and gives both platforms one JavaScript API: a report from a React Native app is the same report a native app produces, with the JavaScript layer added.
What Bugsee records
Every report carries a synchronized timeline of the session that led up to it:
- Video: a rolling recording of the screen. Wrap anything that must never be recorded in
<BugseeSecure>; see Privacy: Video. - Network: requests your app makes through
fetchandXMLHttpRequesttravel through the platform's networking stack, where the SDK records them (on Android, only with the Bugsee Gradle plugin applied; see Installation). You can add events from other stacks yourself and filter what is recorded; see Network events. - Console logs:
console.error,warn,log,infoanddebugare forwarded to Bugsee and still print as before; see Console logs. - Breadcrumbs: system events recorded automatically (such as app lifecycle changes), plus breadcrumbs you add. The package records no automatic touch or navigation breadcrumbs for React components. Off until you turn them on; see Breadcrumbs.
- Custom events, traces and attributes: see Custom events & traces and User & session data.
- Performance (APM): transactions and spans you start from JavaScript.
What Bugsee detects
The SDK turns problems into reports automatically:
- JavaScript exceptions:
Bugsee.launch()installs global handlers for uncaught errors and unhandled promise rejections. An error boundary reports render errors. - Native crashes: on Android, uncaught Java and Kotlin exceptions and native (NDK) crashes; on iOS, uncaught Objective-C exceptions and fatal signals, including Swift runtime traps. See Native crashes.
- Handled errors you report yourself; see Crash & error reporting.
- Manual reports: let users shake the device to report, or open the report dialog or upload a report from code; see Bug reporting.
How it works
- One package.
@bugsee/react-nativebrings the native SDKs with it: autolinking adds the Android module, and the iOS SDK comes through the package'sPackage.swiftwhen your app uses React Native's Swift Package Manager integration (0.87 and later), or through the package's podspec with CocoaPods. You don't add the native SDKs yourself: no Podfile pod, no Maven dependency. - Launch from JavaScript. One call,
Bugsee.launch(token, options), starts the SDK; see Installation and Lifecycle & status. - One option namespace. The same
com.bugsee.option.*keys work on both platforms, so one options object configures both; see Configuration. - Privacy on the device. Mask views with
<BugseeSecure>, and filter or drop network, log and breadcrumb data before it is recorded; see Privacy. - Readable release reports. Release builds can upload JavaScript source maps, Android mapping and native symbols, and iOS dSYMs, so crash frames resolve to your source. An Expo app gets this from the config plugin; a bare app adds a few build steps; see Symbolication.
- Automatic upload. Reports upload to the dashboard in the background.
The in-app feedback chat ships separately, as @bugsee/react-native-feedback, so apps that never show it do not depend on it; see Feedback.
Requirements
| React Native | 0.81 or later, with the New Architecture enabled |
| JavaScript engine | Hermes (React Native's default) |
| iOS | 15.0 or later |
| Android | API 21 or later |
The New Architecture is the default from React Native 0.76. On 0.81 it can still be turned off; this package requires it on.
Hermes is required. JavaScriptCore (Hermes off) is not supported: React Native removed JSC from core in 0.81, and the community package that replaces it, @react-native-community/javascriptcore, does not work with current React Native.
Versions
This beta, 7.0.0-beta3, is built on these native SDKs:
| Platform | Native SDK | Notes |
|---|---|---|
| Android | com.bugsee:bugsee-android 7.4.2 | Bugsee Gradle plugin 4.0.8 for release uploads and Android network capture |
| iOS | Bugsee iOS SDK 7.0.0-beta7 | The iOS SDK is itself a beta |
@bugsee/react-native 7.x replaces react-native-bugsee 6.x. They are different packages with different APIs, not an upgrade in place: remove the old package and follow Migrating from 6.x to 7.x.
Get started
Head to Installation for a React Native CLI app, or Expo if you use Expo prebuild. From there, Configuration covers the launch options, and Privacy covers redaction.
Related pages
- Installation: add the package and launch the SDK.
- Expo: the config plugin for Expo prebuild.
- Configuration: launch options for both platforms.
- Lifecycle & status: launch, stop, relaunch and querying status.