+```
+
+```bash {tabTitle: Flutter Web}
+flutter build web --release --source-maps
+```
+
+For Flutter web run `flutter build web --release --source-maps` to generate source maps.
+
+
+## Running the Plugin
+
+After building your application, run the plugin to upload debug symbols:
+
+```bash
+flutter pub run sentry_dart_plugin
+```
+
+
+
+If you don't obfuscate your build, the plugin won't upload debug symbols. Additionally, source context (viewing source code in stack trace frames on Sentry) is not currently supported for non-obfuscated builds. GitHub Issue: [sentry-dart/#1314](https://github.com/getsentry/sentry-dart/issues/1314)
+
+
+
+## Android ProGuard Integration
+
+If you have ProGuard (`minifyEnabled`) enabled and you want to see proper native Android stacktraces, you must upload Android Proguard/R8 mapping files. You have two options:
+
+1. **Use the Sentry Android Gradle Plugin (Recommended)**
+
+ After installing the [Sentry Android Gradle Plugin](/platforms/android/configuration/gradle/), set `autoInstallation` to `false` in your `app/build.gradle` file:
+
+ ```groovy {filename: app/build.gradle}
+ sentry {
+ autoInstallation {
+ enabled = false
+ }
+ }
+ ```
+
+ This is necessary because Sentry Flutter already ships with a compatible Sentry Android SDK, so we need to avoid conflicts.
+
+ Follow the [Android Gradle Plugin guide](/platforms/android/configuration/gradle/#proguardr8--dexguard) to complete the ProGuard mapping setup.
+
+2. **Use the Sentry CLI**
+
+ Alternatively, you can use the [Sentry CLI](/cli/dif/#uploading-files) to manually upload mapping files.
+
+
+
+Sentry's Flutter SDK doesn't currently support the `uploadNativeSymbols` flag from the Sentry Gradle Plugin.
+
+
+
+## Configuration Reference
+
+The following table lists all available configuration options for the Sentry Dart Plugin:
+
+
+
+| Option | Type | Default | Description | Environment Variable |
+|--------|------|---------|-------------|---------------------|
+| `project` | string | | **Required.** Your project's name (e.g., `sentry-flutter`) | `SENTRY_PROJECT` |
+| `org` | string | | **Required.** Your organization's slug (e.g., `sentry-sdks`) | `SENTRY_ORG` |
+| `auth_token` | string | | **Required.** The Sentry auth token | `SENTRY_AUTH_TOKEN` |
+| `upload_debug_symbols` | boolean | `true` | Enables or disables automatic upload of debug symbols | |
+| `upload_source_maps` | boolean | `false` | Enables or disables automatic upload of source maps | |
+| `upload_sources` | boolean | `false` | Enables or disables source code upload | |
+| `url` | string | | The URL of your Sentry instance | `SENTRY_URL` |
+| `wait_for_processing` | boolean | `false` | Whether to wait for server-side processing of uploaded files | |
+| `log_level` | string | `warn` | Configures the log level for sentry-cli (`trace`, `debug`, `info`, `warn`, `error`) | `SENTRY_LOG_LEVEL` |
+| `release` | string | `name@version` from pubspec | The release version for source maps | `SENTRY_RELEASE` |
+| `dist` | string | | Custom distribution identifier | `SENTRY_DIST` |
+| `web_build_path` | string | `build/web` | The web build folder path | |
+| `commits` | string | `auto` | Release commits integration | |
+| `ignore_missing` | boolean | `false` | Ignore missing commits previously used in the release | |
+| `bin_dir` | string | `.dart_tool/pub/bin/sentry_dart_plugin` | The folder where the plugin downloads the sentry-cli binary | |
+| `bin_path` | string | | Path to a sentry-cli binary to use instead of downloading | |
+| `sentry_cli_cdn_url` | string | `https://downloads.sentry-cdn.com/sentry-cli` | Alternative place to download sentry-cli | `SENTRYCLI_CDNURL` |
+
+
+
+## Troubleshooting
+
+If you encounter any issues with the Sentry Dart Plugin, refer to [Troubleshooting - Sentry Dart Plugin](/platforms/dart/guides/flutter/troubleshooting#sentry-dart-plugin) for solutions to common problems.
diff --git a/platform-includes/debug-symbols/dart-plugin/flutter.mdx b/platform-includes/debug-symbols/dart-plugin/flutter.mdx
new file mode 100644
index 0000000000000..1975c9758a986
--- /dev/null
+++ b/platform-includes/debug-symbols/dart-plugin/flutter.mdx
@@ -0,0 +1,140 @@
+## Installation
+
+In your `pubspec.yaml`, add `sentry_dart_plugin` as a new dev dependency:
+
+```yaml {filename: pubspec.yaml}
+dev_dependencies:
+ sentry_dart_plugin: ^{{@inject packages.version('sentry.dart.plugin', '2.0.0') }}
+```
+
+## Configuration
+
+The Sentry Dart Plugin requires basic configuration in your `pubspec.yaml` file:
+
+
+
+```yaml {filename:pubspec.yaml} {"onboardingOptions": {"source-context": "7-8", "source-maps": "9-10"}}
+sentry:
+ project: ___PROJECT_SLUG___
+ org: ___ORG_SLUG___
+ auth_token: ___ORG_AUTH_TOKEN___
+ # Disable automatic upload of debug symbols
+ # upload_debug_symbols: false
+ # Enable source context
+ upload_source_context: true
+ # Enable source maps
+ upload_source_maps: true
+```
+
+
+The `upload_debug_symbols` option defaults to `true` when not specified.
+
+
+### Alternative Configuration Methods
+
+In addition to configuring the plugin in `pubspec.yaml`, you can use:
+- Environment variables
+- Properties file
+
+For more information, read the [Sentry Dart Plugin README](https://github.com/getsentry/sentry-dart-plugin/tree/main?tab=readme-ov-file#configuration-optional).
+
+## Building Your Application
+
+Before running the plugin, build your Flutter application with one of the following commands. Obfuscated is encouraged for production builds, and will make uploading debug symbols necessary to get readable stack traces.
+
+```bash {tabTitle: Obfuscated}
+flutter build apk --obfuscate --split-debug-info=
+flutter build ios --obfuscate --split-debug-info=
+flutter build macos --obfuscate --split-debug-info=
+flutter build windows --obfuscate --split-debug-info=
+flutter build linux --obfuscate --split-debug-info=
+```
+
+```bash {tabTitle: Flutter Web}
+flutter build web --release --source-maps
+```
+
+For Flutter web run `flutter build web --release --source-maps` to generate source maps.
+
+
+## Running the Plugin
+
+After building your application, run the plugin to upload debug symbols:
+
+```bash
+flutter pub run sentry_dart_plugin
+```
+
+
+
+If you don't obfuscate your build, the plugin won't upload debug symbols. Additionally, source context (viewing source code in stack trace frames on Sentry) is not currently supported for non-obfuscated builds. GitHub Issue: [sentry-dart/#1314](https://github.com/getsentry/sentry-dart/issues/1314)
+
+
+
+## Android ProGuard Integration
+
+If you have ProGuard (`minifyEnabled`) enabled, you must upload Android Proguard/R8 mapping files. You have two options:
+
+1. **Use the Sentry Android Gradle Plugin (Recommended)**
+
+ After installing the [Sentry Android Gradle Plugin](/platforms/android/configuration/gradle/), set `autoInstallation` to `false` in your `app/build.gradle` file:
+
+ ```groovy {filename: app/build.gradle}
+ sentry {
+ autoInstallation {
+ enabled = false
+ }
+ }
+ ```
+
+ This is necessary because Sentry Flutter already ships with a compatible Sentry Android SDK, so we need to avoid conflicts.
+
+ Follow the [Android Gradle Plugin guide](/platforms/android/configuration/gradle/#proguardr8--dexguard) to complete the ProGuard mapping setup.
+
+2. **Use the Sentry CLI**
+
+ Alternatively, you can use the [Sentry CLI](/cli/dif/#uploading-files) to manually upload mapping files.
+
+
+
+Sentry's Flutter SDK doesn't currently support the `uploadNativeSymbols` flag from the Sentry Gradle Plugin.
+
+
+
+## Configuration Reference
+
+The following table lists all available configuration options for the Sentry Dart Plugin:
+
+
+
+| Option | Type | Default | Description | Environment Variable |
+|--------|------|---------|-------------|---------------------|
+| `project` | string | | **Required.** Your project's name (e.g., `sentry-flutter`) | `SENTRY_PROJECT` |
+| `org` | string | | **Required.** Your organization's slug (e.g., `sentry-sdks`) | `SENTRY_ORG` |
+| `auth_token` | string | | **Required.** The Sentry auth token | `SENTRY_AUTH_TOKEN` |
+| `upload_debug_symbols` | boolean | `true` | Enables or disables automatic upload of debug symbols | |
+| `upload_source_maps` | boolean | `false` | Enables or disables automatic upload of source maps | |
+| `upload_sources` | boolean | `false` | Enables or disables source code upload | |
+| `url` | string | | The URL of your Sentry instance | `SENTRY_URL` |
+| `wait_for_processing` | boolean | `false` | Whether to wait for server-side processing of uploaded files | |
+| `log_level` | string | `warn` | Configures the log level for sentry-cli (`trace`, `debug`, `info`, `warn`, `error`) | `SENTRY_LOG_LEVEL` |
+| `release` | string | `name@version` from pubspec | The release version for source maps | `SENTRY_RELEASE` |
+| `dist` | string | | Custom distribution identifier | `SENTRY_DIST` |
+| `web_build_path` | string | `build/web` | The web build folder path | |
+| `commits` | string | `auto` | Release commits integration | |
+| `ignore_missing` | boolean | `false` | Ignore missing commits previously used in the release | |
+| `bin_dir` | string | `.dart_tool/pub/bin/sentry_dart_plugin` | The folder where the plugin downloads the sentry-cli binary | |
+| `bin_path` | string | | Path to a sentry-cli binary to use instead of downloading | |
+| `sentry_cli_cdn_url` | string | `https://downloads.sentry-cdn.com/sentry-cli` | Alternative place to download sentry-cli | `SENTRYCLI_CDNURL` |
+
+
+
+## Troubleshooting
+
+If you encounter any issues with the Sentry Dart Plugin, refer to [Troubleshooting - Sentry Dart Plugin](/platforms/dart/guides/flutter/troubleshooting#sentry-dart-plugin) for solutions to common problems.
diff --git a/platform-includes/debug-symbols/manual-upload/dart.mdx b/platform-includes/debug-symbols/manual-upload/dart.mdx
new file mode 100644
index 0000000000000..f197e7fb3c1a1
--- /dev/null
+++ b/platform-includes/debug-symbols/manual-upload/dart.mdx
@@ -0,0 +1,31 @@
+## iOS and macOS
+
+Sentry requires a dSYM upload to symbolicate your crash logs. The symbolication process unscrambles Apple's crash logs to reveal the function, file names, and line numbers of the crash.
+
+[Learn how to upload the dSYM files](/platforms/apple/dsym/)
+
+## Android
+
+For Android applications, you need to upload mapping files manually with the Sentry CLI.
+
+[Learn how to upload Debug Information Files](/cli/dif/#uploading-files)
+
+## Android NDK
+
+For native code crashes in Android applications, you need to upload ELF DWARF debug files.
+
+[Learn how to upload Debug Information Files](/cli/dif/#uploading-files)
+
+If you're using a version of `sentry_flutter` earlier than 5.1, native symbolication on Android requires a specific configuration. Refer to [Troubleshooting](/platforms/dart/guides/flutter/troubleshooting/#native-symbolication-on-android) for more information.
+
+
+
+Sentry's Flutter SDK doesn't currently support the `uploadNativeSymbols` flag from the [Sentry Gradle Plugin](/platforms/android/configuration/gradle/).
+
+
+
+## Web
+
+For web applications, you need to upload source maps to get readable stack traces.
+
+[Learn how to upload Source Maps](/cli/releases/#upload-source-maps)
\ No newline at end of file
diff --git a/redirects.js b/redirects.js
index a3521ae2e5217..d826b517c583d 100644
--- a/redirects.js
+++ b/redirects.js
@@ -1005,6 +1005,30 @@ const userDocsRedirects = [
source: '/platforms/flutter/:path*',
destination: '/platforms/dart/guides/flutter/:path*',
},
+ {
+ source: '/platforms/dart/guides/flutter/upload-debug/',
+ destination: '/platforms/dart/guides/flutter/debug-symbols/',
+ },
+ {
+ source: '/platforms/dart/guides/flutter/upload-debug/#when-to-upload',
+ destination: '/platforms/dart/guides/flutter/debug-symbols/#when-to-upload-debug-symbols',
+ },
+ {
+ source: '/platforms/dart/guides/flutter/upload-debug/#source-context',
+ destination: '/platforms/dart/guides/flutter/debug-symbols/dart-plugin/#configuration',
+ },
+ {
+ source: '/platforms/dart/guides/flutter/upload-debug/#uploading-source-code-context-for-flutter-android-ios-and-macos',
+ destination: '/platforms/dart/guides/flutter/debug-symbols/manual-upload/',
+ },
+ {
+ source: '/platforms/dart/guides/flutter/upload-debug/#uploading-for-android-ndk',
+ destination: '/platforms/dart/guides/flutter/debug-symbols/manual-upload/#android-ndk',
+ },
+ {
+ source: '/platforms/dart/guides/flutter/upload-debug/#automatically-upload-debug-symbols',
+ destination: '/dart/guides/flutter/debug-symbols/dart-plugin/',
+ },
{
source: '/platforms/dart/guides/flutter/configuration/integrations/:path*',
destination: '/platforms/dart/guides/flutter/integrations/:path*',
diff --git a/src/components/onboarding/index.tsx b/src/components/onboarding/index.tsx
index 9538b82487f25..03d002d6387c0 100644
--- a/src/components/onboarding/index.tsx
+++ b/src/components/onboarding/index.tsx
@@ -51,7 +51,7 @@ const optionDetails: Record<
),
},
'source-context': {
- name: 'Source context',
+ name: 'Source Context',
description: (
Upload your source code to allow Sentry to display snippets of your code next to
@@ -59,6 +59,24 @@ const optionDetails: Record<
),
},
+ dsym: {
+ name: 'dSYM',
+ description: (
+
+ Debug symbols for iOS and macOS that provide the necessary information to convert
+ program addresses back to function names, source file names, and line numbers.
+
+ ),
+ },
+ 'source-maps': {
+ name: 'Source Maps',
+ description: (
+
+ Source maps for web applications that help translate minified code back to the
+ original source for better error reporting.
+
+ ),
+ },
opentelemetry: {
name: 'OpenTelemetry',
description: Combine Sentry with OpenTelemetry.,
@@ -71,6 +89,8 @@ const OPTION_IDS = [
'profiling',
'session-replay',
'source-context',
+ 'dsym',
+ 'source-maps',
'opentelemetry',
] as const;
diff --git a/yarn.lock b/yarn.lock
index f572dc7fc8386..2d702def6a93a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10459,9 +10459,9 @@ prisma@^5.8.1:
fsevents "2.3.3"
prismjs@^1.23.0:
- version "1.29.0"
- resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz"
- integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
+ version "1.30.0"
+ resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9"
+ integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==
progress@^2.0.3:
version "2.0.3"
@@ -13043,4 +13043,4 @@ zod@^3.22.4:
zwitch@^2.0.0, zwitch@^2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz"
- integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==
+ integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==
\ No newline at end of file