Upload source maps for React Native Android builds

To get unminified stack traces for JavaScript code in your React Native app built for Android, source maps must be generated and uploaded to BugSnag.

For installation instructions for the BugSnag CLI, please see our Installation guide.

Overview

The react-native-android command uploads the bundled JavaScript and source maps generated during a release build and uploads it to the React Native source map API.

In addition to the source maps, the command extracts version and build information, including your BugSnag API key, required for the upload from your app’s manifest file (AndroidManifest.xml). These values can be overridden, or provided entirely, by command line options.

Example usage

The simplest way to run the command is from the root directory of your React Native project:

$ bugsnag-cli upload react-native-android

Or by providing a specific bundle file and associated mapping file to upload:

$ bugsnag-cli upload react-native-android \
    --bundle android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle \
    --source-map android/app/build/generated/sourcemaps/react/release/index.android.bundle.map

If your build contains multiple variants or has a non-standard project layout, you might need to provide extra options:

$ bugsnag-cli upload react-native-android \
    --app-manifest android/app/build/intermediates/merged_manifests/release/AndroidManifest.xml \
    --variant release

Available options

API key (--api-key)

Your project’s API key. This defaults to the value of com.bugsnag.android.API_KEY in your app’s manifest file, if found.

You can find your API key in Project Settings from your BugSnag dashboard.

App manifest (--app-manifest)

The path to the app’s manifest file (AndroidManifest.xml), which is used to extract app information required for the upload. By default, the command looks for this file in android/app/build/intermediates/merged_manifests/<variant>/AndroidManifest.xml from your project directory.

Bundle path (--bundle)

The path to the bundled JavaScript generated by the React Native build. By default, the command looks for this file in android/app/build/generated/sourcemaps/react/release/index.android.bundle.map from your project directory.

Code Bundle ID (--code-bundle-id)

A unique identifier for the JavaScript bundle. If you use CodePush, or similar mechanism, to update the JavaScript bundle of your app without changing the native version or build number, use the code bundle ID to uniquely identify the update. This same ID must also be set in the BugSnag configuration in your app, so that errors match the uploaded bundle.

Dev (--dev)

Whether the app is a debug or release build. This value should mirror the value used when generating source map files with react-native bundle.

Dry run (--dry-run)

Used to see the files and options that would be uploaded without actually sending them to the BugSnag endpoint.

Overwrite (--overwrite)

Whether to ignore and overwrite existing uploads with same identifier. By default the command will fail if a matching file exists.

Project root (--project-root)

Path to strip from the beginning of source file names referenced in stacktraces when displayed as an error in your dashboard. This will default to your project’s root directory if the command has detected one, otherwise it’s empty.

Retries (--retries)

The number of retry attempts before failing an upload. By default it is only attempted once.

Source map path (--source-map)

The path to the source map generated by the React Native build. By default, the command looks for this file in android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle from your project directory.

Timeout (--timeout)

The number of seconds to wait before failing an upload attempt. By default the upload is given 300s (5 mins).

Upload API root URL (--upload-api-root-url)

The BugSnag On-premise upload server hostname, optionally containing port number. The command will append the appropriate path to access the correct BugSnag API upload endpoint.

Variant (--variant)

The build type/flavor (e.g. ‘debug’ or ‘release’). This is used to disambiguate the between built files when searching your project directory.

Version code (--version-code)

The version code of this build of the app. This defaults to the value of VersionCode in your app’s manifest file, if found.

Version name (--version-name)

The version of the app. This defaults to the value of VersionName in your app’s manifest file, if found.