# JavaScript Core

## Upload source maps for React Native JavaScript Core application.

Sentry's React Native SDK works out of the box with applications using JavaScript Core (JSC) engine. To see readable stack traces in the product source maps need to be uploaded to Sentry. This guide explains how to manually upload source maps from JSC engine.

## [Set Up Automatic Upload](#set-up-automatic-upload)

The easiest way to configure automatic source maps upload is to use the Sentry Wizard:

```bash
npx @sentry/wizard@latest -i reactNative
```

## [Manual Upload](#manual-upload)

To manually upload source maps, first, you need to generate the source maps and bundle. Then compile the Hermes bytecode bundle, and finally upload the source map to Sentry.

Start by adding Sentry React Native Metro Plugin to your `metro.config.js`:

```javascript
const { getDefaultConfig } = require("@react-native/metro-config");
const { withSentryConfig } = require("@sentry/react-native/metro");

const config = getDefaultConfig(__dirname);
module.exports = withSentryConfig(config);
```

Generate the React Native Packager (Metro) bundle and source maps:

```bash
npx react-native bundle \
  --dev false \
  --minify true \
  --platform android \
  --entry-file index.js \
  --reset-cache \
  --bundle-output index.android.bundle \
  --sourcemap-output index.android.bundle.map
```

Make sure `sentry-cli` is configured for your project and set up your environment variables:

`.env`

```bash
SENTRY_ORG=example-org
SENTRY_PROJECT=example-project
SENTRY_AUTH_TOKEN=sntrys_YOUR_TOKEN_HERE
```

Upload the bundle and source map to Sentry:

```bash
node_modules/@sentry/cli/bin/sentry-cli sourcemaps upload \
  --strip-prefix /path/to/project/root \
  index.android.bundle index.android.bundle.map
```
