sentry_flutter 9.7.0  sentry_flutter: ^9.7.0 copied to clipboard
sentry_flutter: ^9.7.0 copied to clipboard
Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs.
Changelog #
9.7.0 #
Features #
- Add W3C traceparentheader support (#3246)- Enable the option propagateTraceparentto allow the propagation of the W3C Trace Context HTTP headertraceparenton outgoing HTTP requests.
 
- Enable the option 
- Add nativeDatabasePathoption toSentryFlutterOptionsto set the database path for Sentry Native (#3236)
- Add sentry.originto logs created byLoggingIntegration(#3153)
- Tag all spans with thread info on non-web platforms (#3101, #3144)
- feat(feedback): Add option to disable keyboard resize (#3154)
- Support firebase_remote_config: >=5.4.3 <7.0.0(#3213)
Enhancements #
- Prefix firebase remote config feature flags with firebase:(#3258)
- Replay: continue processing if encountering InheritedWidget(#3200)- Prevents false debug warnings when using provider for example which extensively uses InheritedWidget
 
- Prevents false debug warnings when using provider for example which extensively uses 
- Add DioExceptionresponse data to error breadcrumb (#3164)- Bumped diomin verion to5.2.0
 
- Bumped 
- Use FFI/JNI for captureEnvelopeon iOS and Android (#3115)
- Log a warning when dropping envelope items (#3165)
- Call options.log for structured logs (#3187)
- Remove async usage from FlutterErrorIntegration(#3202)
- Tag all spans during app start with start type info (#3190)
- Refactor loadContextsandloadDebugImagesto use JNI and FFI (#3224)
- Improve envelope conversion to Uint8ListinFileSystemTransport(#3147)
Fixes #
- Safely access browser navigator.deviceMemory(#3268)
- Recursion in openDatabasewhen usingSentrySqfliteDatabaseFactory(#3231)
- Implement prefill logic in SentryFeedbackWidgetforuseSentryUserparameter to populate fields with current user data (#3180)
- Structured Logs: Don't add template when there are no 'sentry.message.parameter.x' attributes (#3219)
Dependencies #
- Bump Cocoa SDK from v8.55.1 to v8.56.2 (#3276)
- Bump Android SDK from v8.20.0 to v8.21.1 (#3243)
- Pin ffigento19.0.0and addobjective_cversion8.0.0package used inffigenon iOS and macOS (#3163)
- Bump JavaScript SDK from v9.40.0 to v10.6.0 (#3167, #3201)
- Bump Native SDK from v0.9.1 to v0.10.0 (#3223)
9.7.0-beta.5 #
9.7.0-beta.4 #
9.7.0-beta.3 #
9.7.0-beta.2 #
Features #
- Add sentry.originto logs created byLoggingIntegration(#3153)
- Tag all spans with thread info on non-web platforms (#3101, #3144)
- feat(feedback): Add option to disable keyboard resize (#3154)
- Support firebase_remote_config: >=5.4.3 <7.0.0(#3213)
Fixes #
- Implement prefill logic in SentryFeedbackWidgetforuseSentryUserparameter to populate fields with current user data (#3180)
- Structured Logs: Don’t add template when there are no 'sentry.message.parameter.x’ attributes (#3219)
Enhancements #
- Add DioExceptionresponse data to error breadcrumb (#3164)- Bumped diomin verion to5.2.0
 
- Bumped 
- Use FFI/JNI for captureEnvelopeon iOS and Android (#3115)
- Log a warning when dropping envelope items (#3165)
- Call options.log for structured logs (#3187)
- Remove async usage from FlutterErrorIntegration(#3202)
- Tag all spans during app start with start type info (#3190)
- Refactor loadContextsandloadDebugImagesto use JNI and FFI (#3224)
Dependencies #
9.7.0-beta.1 #
9.6.0 #
Note: this release might require updating your Android Gradle Plugin version to at least 8.1.4.
Fixes #
- False replay config restarts because of ScreenshotWidgetStatusequality issues (#3114)
- Debug meta not loaded for split debug info only builds (#3104)
- TTID/TTFD root transactions (#3099, #3111)
- Web, Linux and Windows now create a UI transaction for the root page
- iOS, Android now correctly create idle transactions
- Fixes behaviour of traceId generation and TTFD for app start
 
- Directionality assertion issue in debug mode (#3088)
Dependencies #
Internal #
- Use lifecycle hook for before send event (#3017)
9.6.0-beta.2 #
9.6.0-beta.1 #
Fixes #
- Debug meta not loaded for split debug info only builds (#3104)
- TTID/TTFD root transactions (#3099, #3111)
- Web, Linux and Windows now create a UI transaction for the root page
- iOS, Android now correctly create idle transactions
- Fixes behaviour of traceId generation and TTFD for app start
 
- Directionality assertion issue in debug mode (#3088)
Dependencies #
Internal #
- Use lifecycle hook for before send event (#3017)
9.5.0 #
Features #
- Report Flutter framework feature flags (#2991)
- Search for feature flags that are prefixed with flutter:*
- This works on Flutter builds that include this PR
 
- Search for feature flags that are prefixed with 
- Add LoggingIntegrationsupport forSentryLog(#3050)
- Add enableNewTraceOnNavigationflag toSentryNavigatorObserver(#3096)- Default: true
- Disable by passing false, e.g.:SentryNavigatorObserver(enableNewTraceOnNavigation: false)
- Note: traces differ from transactions/spans — see tracing concepts here
 
- Default: 
Fixes #
- Ensure consistent sampling per trace (#3079)
Enhancements #
- Add sampled flag in propagation context (#3084)
Dependencies #
- Bump Native SDK from v0.9.0 to v0.9.1 (#3018)
- Bump JavaScript SDK from v9.5.0 to v9.40.0 (#3085, #3092)
Internal #
- Automate Sentry JS SDK version updates (#3080)
9.4.1 #
Fixes #
- Span ids not re-generating for headers created from scope (#3051)
- ScreenshotIntegrationnot being added for web (#3055)
- PropagationContextnot being set when- Scopeis cloned resulting in different trace ids when using- withScope(#3069)
- Drift transaction rollback not executed when parent span is null (#3062)
Enhancements #
9.4.0 #
Fixes #
- SPM should use exactinstead offromwhen defining the sentry-cocoa package (#3065)
- Respect ancestor text direction in SentryScreenshotWidget(#3046)
- Add additional crashpad path candidate (#3016)
- Replay JNI usage with SentryFlutterPlugin(#3036, #3039)
- Do not set isTerminatingoncaptureReplayfor Android (#3037)- Previously segments might be missing on Android replays if an unhandled error happened
 
Dependencies #
9.4.0-beta.1 #
9.3.0 #
Breaking Change (Tooling) #
- Upgrade Kotlin languageVersionto1.8(#3032)- This allows usage of the Kotlin Android Plugin 2.2.0which requires alanguageVersionof1.8or higher
- If you are experiencing an issue we recommend upgrading to a toolchain compatible with Kotlin 1.8or higher
 
- This allows usage of the Kotlin Android Plugin 
Features #
- SentryFeedbackWidget Improvements (#2964)
- Capture a device screenshot for feedback
- Customize tests and required fields
- Customization moved from the SentryFeedbackWidgetconstructor toSentryFlutterOptions:
 
// configure your feedback widget
options.feedback.showBranding = false;
9.2.0 #
9.1.0 #
Features #
- Flutter Web: add debug ids to events (#2917)
- This allows support for symbolication based on debug ids
- This only works if you use the Sentry Dart Plugin version 3.0.0or higher
 
- Improved TTID/TTFD API (#2866)
- This improves the stability and consistency of TTFD reporting by introducing new APIs
 
// Prerequisite: `SentryNavigatorObserver` is set up and routes you navigate to have unique names, e.g configured via `RouteSettings`
// Info: Stateless widgets will report TTFD automatically when wrapped with `SentryDisplayWidget` - no need to call `reportFullyDisplayed`.
// Method 1: wrap your widget that you navigate to in `SentryDisplayWidget` 
SentryDisplayWidget(child: YourWidget())
// Then report TTFD after long running work (File I/O, Network) within your widget.
@override
void initState() {
  super.initState();
  // Do some long running work...
  Future.delayed(const Duration(seconds: 3), () {
    if (mounted) {
      SentryDisplayWidget.of(context).reportFullyDisplayed();
    }
  });
}
// Method 2: use the API directly to report TTFD - this does not require wrapping your widget with `SentryDisplayWidget`:
@override
void initState() {
  super.initState();
  // Get a reference to the current display before doing work.
  final currentDisplay = SentryFlutter.currentDisplay();
  // Do some long running work...
  Future.delayed(const Duration(seconds: 3), () {
    currentDisplay?.reportFullyDisplayed();
  });
}
- Add messageparameter tocaptureException()(#2882)
- Add module in SentryStackFrame (#2931)
- Set SentryOptions.includeModuleInStackTrace = trueto enable this. This may change grouping of exceptions.
 
- Set 
Dependencies #
Enhancements #
- Only enable load debug image integration for obfuscated apps (#2907)
9.0.0 #
Version 9.0.0 marks a major release of the Sentry Dart/Flutter SDKs containing breaking changes.
The goal of this release is the following:
- Bump the minimum Dart and Flutter versions to 3.5.0and3.24.0respectively
- Bump the minimum Android API version to 21
- Add interoperability with the Sentry Javascript SDK in Flutter Web for features such as release health and reporting native JS errors
- GA the Session Replay feature
- Provide feature flag support as well as Firebase Remote Config support
- Trim down unused and potentially confusing APIs
How To Upgrade #
Please carefully read through the migration guide in the Sentry docs on how to upgrade from version 8 to version 9
Breaking changes #
- Increase minimum SDK version requirements to Dart v3.5.0and Flutterv3.24.0(#2643)
- Update naming of LoadImagesListIntegrationtoLoadNativeDebugImagesIntegration(#2833)
- Set sentry-native backend to crashpadby default andbreakpadfor Windows ARM64 (#2791)- Setting the SENTRY_NATIVE_BACKENDenvironment variable will override the defaults.
 
- Setting the 
- Remove manual TTID implementation (#2668)
- Remove screenshot option attachScreenshotOnlyWhenResumed(#2664)
- Remove deprecated beforeScreenshot(#2662)
- Remove old user feedback api (#2686)
- This is replaced by beforeCaptureScreenshot
 
- This is replaced by 
- Remove deprecated loggers (#2685)
- Remove user segment (#2687)
- Enable Sentry JS SDK native integration by default (#2688)
- Remove enableTracing(#2695)
- Remove options.autoAppStartandsetAppStartEnd(#2680)
- Bump Drift min version to 2.24.0and useQueryInterceptorinstead ofQueryExecutor(#2679)
- Add hint for transactions (#2675)
- BeforeSendTransactionCallbacknow has a- Hintparameter
 
- Remove dart:htmlusage in favour ofpackage:web(#2710)
- Remove max response body size (#2709)
- Responses are now only attached if size is below ~0.15mb
- Responses are attached to the Hintobject, which can be read inbeforeSend/beforeSendTransactioncallbacks viahint.response.
- For now, only the diointegration is supported.
 
- Enable privacy masking for screenshots by default (#2728)
- Set option anrEnabledtotrueby default (#2878)
- Mutable Data Classes (#2818)
- Some SDK classes do not have constconstructors anymore.
- The copyWithandclonemethods of SDK classes were deprecated.
 
- Some SDK classes do not have 
// old
options.beforeSend = (event, hint) {
  event = event.copyWith(release: 'my-release');
  return event;
}
// new
options.beforeSend = (event, hint) {
  event.release = 'my-release';
  return event;
}
Features #
- Sentry Structured Logs Beta (#2919)
- The old SentryLoggerhas been renamed toSdkLogCallbackand can be accessed throughoptions.lognow.
- Adds support for structured logging though Sentry.logger:
 
- The old 
// Enable in `SentryOptions`:
options.enableLogs = true;
// Use `Sentry.logger`
Sentry.logger.info("This is a info log.");
Sentry.logger.warn("This is a warning log with attributes.", attributes: {
  'string-attribute': SentryLogAttribute.string('string'),
  'int-attribute': SentryLogAttribute.int(1),
  'double-attribute': SentryLogAttribute.double(1.0),
  'bool-attribute': SentryLogAttribute.bool(true),
});
// Manually track a feature flag
Sentry.addFeatureFlag('my-feature', true);
// or use the Sentry Firebase Remote Config Integration (sentry_firebase_remote_config package is required)
// Add the integration to automatically track feature flags from firebase remote config.
await SentryFlutter.init(
  (options) {
    options.dsn = 'https://example@sentry.io/add-your-dsn-here';
    options.addIntegration(
      SentryFirebaseRemoteConfigIntegration(
        firebaseRemoteConfig: yourFirebaseRemoteConfig,
      ),
    );
  },
);
- Properly generates and links trace IDs for errors and spans (#2869, #2861):
- With SentryNavigatorObserver- each navigation event starts a new trace.
- Without SentryNavigatorObserveron non-web platforms - a new trace is started from app lifecycle hooks.
- Web without SentryNavigatorObserver- the same trace ID is reused until the page is refreshed or closed.
 
- With 
- Add support for Flutter Web release health (#2794)
- Requires using SentryNavigatorObserver;
 
- Requires using 
Behavioral changes #
- Set log level to warningby default whendebug = true(#2836)
- Set HTTP client breadcrumbs log level based on response status code (#2847)
- 5xx is mapped to SentryLevel.error
- 4xx is mapped to SentryLevel.warning
 
- 5xx is mapped to 
- Parent-child relationship for the PlatformExceptions and Cause (#2803)
- Improves and more accurately represent exception groups
- Disabled by default as it may cause issues to group differently
- You can enable this feature by setting options.groupException = true
 
Improvements #
- Replay: improve Android native interop performance by using JNI (#2670)
- Align User Feedback API (#2949)
- Don’t apply breadcrumbs and extras from scope to feedback events
- Capture session replay when processing feedback events
- Record feedbackclient report for dropped feedback events
- Record feedbackclient report for errors when usingHttpTransport
 
- Truncate feedback message to max 4096 characters (#2954)
- Replay: Mask RichText Widgets by default (#2975)
Dependencies #
- Bump Android SDK from v7.22.4 to v8.12.0 (#2941, #2819, #2831, #2848, [#2873](https://github.com/getsentry/sentry-dart/pull/2873, #2883))
- Bump Cocoa SDK from v8.46.0 to v8.51.0 (#2820, #2851, #2884, #2951))
- Bump Native SDK from v0.8.2 to v0.8.4 (#2823, #2872)
- Bump jni from v0.14.0 to v0.14.1 ([#2800])(https://github.com/getsentry/sentry-dart/pull/2800)
9.0.0-RC.3 #
Features #
- Sentry Structured Logs (#2919)
- The old SentryLoggerhas been renamed toSdkLogCallbackand can be accessed throughoptions.lognow.
- Adds support for structured logging though Sentry.logger:
 
- The old 
// Enable in `SentryOptions`:
options.enableLogs = true;
// Use `Sentry.logger`
Sentry.logger.info("This is a info log.");
Sentry.logger.warn("This is a warning log with attributes.", attributes: {
  'string-attribute': SentryLogAttribute.string('string'),
  'int-attribute': SentryLogAttribute.int(1),
  'double-attribute': SentryLogAttribute.double(1.0),
  'bool-attribute': SentryLogAttribute.bool(true),
});
9.0.0-RC.2 #
9.0.0-RC #
Various fixes & improvements #
- build(deps): bump ruby/setup-ruby from 1.233.0 to 1.237.0 (#2908) by @dependabot
- build(deps): bump actions/create-github-app-token from 2.0.2 to 2.0.6 (#2909) by @dependabot
9.0.0-beta.2 #
9.0.0-beta.1 #
Features #
- Properly generates and links trace IDs for errors and spans (#2869, #2861):
- With SentryNavigatorObserver- each navigation event starts a new trace.
- Without SentryNavigatorObserveron non-web platforms - a new trace is started from app lifecycle hooks.
- Web without SentryNavigatorObserver- the same trace ID is reused until the page is refreshed or closed.
 
- With 
- Add FeatureFlagIntegration(#2825)
// Manually track a feature flag
Sentry.addFeatureFlag('my-feature', true);
- Firebase Remote Config Integration (#2837)
// Add the integration to automatically track feature flags from firebase remote config.
await SentryFlutter.init(
  (options) {
    options.dsn = 'https://example@sentry.io/add-your-dsn-here';
    options.addIntegration(
      SentryFirebaseRemoteConfigIntegration(
        firebaseRemoteConfig: yourFirebaseRemoteConfig,
      ),
    );
  },
);
- Make hierarchical exception grouping opt-in (#2858)
Fixes #
- Trace propagation in HTTP tracing clients not correctly set up if performance is disabled (#2850)
Behavioral changes #
- Mutable Data Classes (#2818)
- Some SDK classes do not have constconstructors anymore.
- The copyWithandclonemethods of SDK classes were deprecated.
 
- Some SDK classes do not have 
- Set log level to warningby default whendebug = true(#2836)
- Set HTTP client breadcrumbs log level based on response status code (#2847)
- 5xx is mapped to SentryLevel.error
- 4xx is mapped to SentryLevel.warning
 
- 5xx is mapped to 
- Parent-child relationship for the PlatformExceptions and Cause (#2803, #2858)
- Improves and changes exception grouping. To opt in, set groupExceptions=true
 
- Improves and changes exception grouping. To opt in, set 
- Set anrEnabledenabled per default (#2878)
API Changes #
- Update naming of LoadImagesListIntegrationtoLoadNativeDebugImagesIntegration(#2833)
- Remove otherfromSentryRequest(#2879)
Dependencies #
8.14.2 #
9.0.0-alpha.2 #
Features #
- Add support for Flutter Web release health (#2794)
- Requires using SentryNavigatorObserver;
 
- Requires using 
Dependencies #
- Bump Native SDK from v0.7.20 to v0.8.2 (#2761, #2807)
- Bump Javascript SDK from v8.42.0 to v9.5.0 (#2784)
Behavioral changes #
- Set sentry-native backend to crashpadby default andbreakpadfor Windows ARM64 (#2791)- Setting the SENTRY_NATIVE_BACKENDenvironment variable will override the defaults.
 
- Setting the 
- Remove renderer from flutter_context(#2751)
API changes #
8.14.1 #
8.14.0 #
This release fixes an issue where Cold starts can be incorrectly reported as Warm starts on Android.
Behavioral changes #
- ⚠️ Auto IP assignment for SentryUseris now guarded bysendDefaultPii(#2726)- If you rely on Sentry automatically processing the IP address of the user, set options.sendDefaultPii = trueor manually set the IP address of theSentryUserto{{auto}}
 
- If you rely on Sentry automatically processing the IP address of the user, set 
- Adding the device name to Contexts is now guarded by sendDefaultPii(#2741)- Set options.sendDefaultPii = trueif you want to have the device name reported
 
- Set 
- Remove macOS display refresh rate support (#2628)
- Can't reliably detect on multi-monitor systems and on older macOS versions.
- Not very meaningful, as other applications may be running in parallel and affecting it.
 
Enhancements #
- Add Flutter runtime information (#2742)
- This works if the version of Flutter you're using includes this code.
 
- Use loadDebugImagesForAddressesAPI for Android (#2706)- This reduces the envelope size and data transferred across method channels
- If debug images received by loadDebugImagesForAddressesare empty, the SDK loads all debug images as fallback
 
- Disable ScreenshotIntegration,WidgetsBindingIntegrationandSentryWidgetin multi-view apps #2366 (#2366)
Fixes #
- Pass missing captureFailedRequestsparam toFailedRequestInterceptor(#2744)
- Bind root screen transaction to scope (#2756)
- Reference to SentryWidgetsFlutterBindingin warning message inFramesTrackingIntegration(#2704)
Deprecations #
- Deprecate Drift SentryQueryExecutor(#2715)- This will be replace by SentryQueryInterceptorin the next major v9
 
- This will be replace by 
// Example usage in Sentry Flutter v9
final executor = NativeDatabase.memory().interceptWith(
  SentryQueryInterceptor(databaseName: 'your_db_name'),
);
final db = AppDatabase(executor);
- Deprecate autoAppStartandsetAppStartEnd(#2681)
Dependencies #
9.0.0-alpha.1 #
Breaking changes #
- Remove SentryDisplayWidgetand manual TTID implementation (#2668)
- Increase minimum SDK version requirements to Dart v3.5.0 and Flutter v3.24.0 (#2643)
- Remove screenshot option attachScreenshotOnlyWhenResumed(#2664)
- Remove deprecated beforeScreenshot(#2662)
- Remove old user feedback api (#2686)
- Remove deprecated loggers (#2685)
- Remove user segment (#2687)
- Enable JS SDK native integration by default (#2688)
- Remove enableTracing(#2695)
- Remove options.autoAppStartandsetAppStartEnd(#2680)
- Bump Drift min version to 2.24.0and useQueryInterceptorinstead ofQueryExecutor(#2679)
- Add hint for transactions (#2675)
- BeforeSendTransactionCallbacknow has a- Hintparameter
 
- Remove dart:htmlusage in favour ofpackage:web(#2710)
- Remove max response body size (#2709)
- Responses are now only attached if size is below ~0.15mb
- Responses are attached to the Hintobject, which can be read inbeforeSend/beforeSendTransactioncallbacks viahint.response.
- For now, only the diointegration is supported.
 
- Enable privacy masking for screenshots by default (#2728)
Enhancements #
- Replay: improve Android native interop performance by using JNI (#2670)
Dependencies #
8.14.0-beta.1 #
Behavioral changes #
- ⚠️ Auto IP assignment for SentryUseris now guarded bysendDefaultPii(#2726)- If you rely on Sentry automatically processing the IP address of the user, set options.sendDefaultPii = trueor manually set the IP address of theSentryUserto{{auto}}
 
- If you rely on Sentry automatically processing the IP address of the user, set 
- Adding the device name to Contexts is now guarded by sendDefaultPii(#2741)- Set options.sendDefaultPii = trueif you want to have the device name reported
 
- Set 
Features #
- Disable ScreenshotIntegration,WidgetsBindingIntegrationandSentryWidgetin multi-view apps #2366 (#2366)
Enhancements #
- Use loadDebugImagesForAddressesAPI for Android (#2706)- This reduces the envelope size and data transferred across method channels
- If debug images received by loadDebugImagesForAddressesare empty, the SDK loads all debug images as fallback
 
Fixes #
- Reference to SentryWidgetsFlutterBindingin warning message inFramesTrackingIntegration(#2704)
Deprecations #
- Deprecate Drift SentryQueryExecutor(#2715)- This will be replace by SentryQueryInterceptorin the next major v9
 
- This will be replace by 
// Example usage in Sentry Flutter v9
final executor = NativeDatabase.memory().interceptWith(
  SentryQueryInterceptor(databaseName: 'your_db_name'),
);
final db = AppDatabase(executor);
- Deprecate autoAppStartandsetAppStartEnd(#2681)
Other #
- Remove macOS display refresh rate support (#2628)
- Can't reliably detect on multi-monitor systems and on older macOS versions.
- Not very meaningful, as other applications may be running in parallel and affecting it.
 
Dependencies #
8.13.3 #
8.13.2 #
Warning
This release contains an issue where Cold starts can be incorrectly reported as Warm starts on Android. We recommend staying on version 8.12.0 if you use this feature on Android. See issue #2769 for more details.
Fixes #
- build_web_compilererror (#2736)- Use if (dart.library.html)instead ofif (dart.html)for imports
 
- Use 
8.13.1 #
Warning
This release contains an issue where Cold starts can be incorrectly reported as Warm starts on Android. We recommend staying on version 8.12.0 if you use this feature on Android. See issue #2769 for more details.
Fixes #
- Replay video interruption if a navigationbreadcrumb is missingtoroute info (#2720)
Dependencies #
8.13.0 #
Warning
This release contains an issue where Cold starts can be incorrectly reported as Warm starts on Android. We recommend staying on version 8.12.0 if you use this feature on Android. See issue #2769 for more details.
Breaking changes #
- Remove Metrics API (#2571)
- The Metrics product never reached maturity from beta and has officially ended in October 7th, 2024
- Read this post for more information
 
Features #
- Add beforeCapturefor View Hierarchy (#2523)- View hierarchy calls are now debounced for 2 seconds.
 
- JS SDK integration (#2572)
- Enable the integration by setting options.enableSentryJs = true
- Features:
- Sending envelopes through Sentry JS transport layer
- Capturing native JS errors
 
 
- Enable the integration by setting 
- Add SentryReplayQuality setting (options.experimental.replay.quality) (#2582)
- SPM Support (#2280)
Enhancements #
- Replay: improve iOS native interop performance (#2530, #2573)
- Replay: improve orientation change tracking accuracy on Android (#2540)
- Print a warning if the rate limit was reached (#2595)
- Add replay masking config to tags and report SDKs versions (#2592)
- Enable options.debugwhen in debug mode (#2597)
- Propagate sample seed in baggage header (#2629)
- Read more about the specs here
 
- Finish and start new transaction when tapping same element again (#2623)
Fixes #
- Replay: fix masking for frames captured during UI changes (#2553, #2657)
- Replay: fix widget masks overlap when navigating between screens (#2486, #2576)
- WASM compat for Drift (#2580)
- Fix image flickering when using SentryAssetBundle(#2577)
- Fix print recursion detection (#2624)
Misc #
- Transfer ownership of sentry_linkto Sentry. You can view the changelog for the previous versions here (#2338)- No functional changes have been made. This version is identical to the previous one.
- Change license from Apache to MIT
 
Dependencies #
8.13.0-beta.3 #
8.13.0-beta.2 #
8.13.0-beta.1 #
Breaking changes #
- Remove Metrics API (#2571)
- The Metrics product never reached maturity from beta and has officially ended in October 7th, 2024
- Read this post for more information
 
Features #
- Add beforeCapturefor View Hierarchy (#2523)- View hierarchy calls are now debounced for 2 seconds.
 
- JS SDK integration (#2572)
- Enable the integration by setting options.enableSentryJs = true
- Features:
- Sending envelopes through Sentry JS transport layer
- Capturing native JS errors
 
 
- Enable the integration by setting 
Enhancements #
- Replay: improve iOS native interop performance (#2530, #2573)
- Replay: improve orientation change tracking accuracy on Android (#2540)
Fixes #
- Replay: fix masking for frames captured during UI changes (#2553)
- Replay: fix widget masks overlap when navigating between screens (#2486, #2576)
Dependencies #
8.12.0 #
Deprecations #
- Manual TTID (#2477)
Fixes #
- Missing replay gestures on Android (#2515)
- Replay mask sizing on scaling transform widget children (#2520)
- Masking semi-transparent widgets (#2472)
- Check SentryTracertype in TTFD tracker (#2508)
Features #
- 
Replay: device orientation change support & improve video size fit on Android (#2462) 
- 
Support custom Sentry.runZoneGuardedzone creation (#2088)- Sentry will not create a custom zone anymore if it is started within a custom one.
- This fixes Zone miss-match errors when trying to initialize WidgetsBinding before Sentry on Flutter Web
- Sentry.runZonedGuardedcreates a zone and also captures exceptions & breadcrumbs automatically.
 Sentry.runZonedGuarded(() { WidgetsBinding.ensureInitialized(); // Errors before init will not be handled by Sentry SentryFlutter.init( (options) { ... }, appRunner: () => runApp(MyApp()), ); }, (error, stackTrace) { // Automatically sends errors to Sentry, no need to do any // captureException calls on your part. // On top of that, you can do your own custom stuff in this callback. });
- 
Warning (in a debug build) if a potentially sensitive widget is not masked or unmasked explicitly (#2375) 
- 
Replay: ensure visual update before capturing screenshots (#2527) 
Dependencies #
8.12.0-beta.2 #
Deprecations #
- Manual TTID (#2477)
Fixes #
- Missing replay gestures on Android (#2515)
- Replay mask sizing on scaling transform widget children (#2520)
Enhancements #
- Check SentryTracertype in TTFD tracker (#2508)
- Warning (in a debug build) if a potentially sensitive widget is not masked or unmasked explicitly (#2375)
- Replay: ensure visual update before capturing screenshots (#2527)
Dependencies #
8.11.2 #
Changes #
- 
Windows & Linux native crash handlers: add SENTRY_NATIVE_BACKENDenv var with default setting ofnone. (#2522) Native crash reporting support withsentry-native'scrashpadwas added in v8.11.0 and has caused build-time issues for some users, because it required newer build tools (newer versions of MSVC/Clang/GCC) than base Flutter SDK. This broke the ability to build the app for some users compiling Windows and Linux apps with older toolchains.To avoid this issue, we're disabling the native crash handling by default for Linux and Windows for now. You can enable it manually by setting the SENTRY_NATIVE_BACKEND=crashpadenvironment variable before runningflutter build. You can read more about available backends that fit your use-case in sentry-native docs.We plan to change the default back to crashpadin the next major SDK release.
8.11.1 #
8.12.0-beta.1 #
Features #
- Replay: device orientation change support & improve video size fit on Android (#2462)
- Support custom Sentry.runZoneGuardedzone creation (#2088)- Sentry will not create a custom zone anymore if it is started within a custom one.
- This fixes Zone miss-match errors when trying to initialize WidgetsBinding before Sentry on Flutter Web
- Sentry.runZonedGuardedcreates a zone and also captures exceptions & breadcrumbs automatically.
 Sentry.runZonedGuarded(() { WidgetsBinding.ensureInitialized(); // Errors before init will not be handled by Sentry SentryFlutter.init( (options) { ... }, appRunner: () => runApp(MyApp()), ); }, (error, stackTrace) { // Automatically sends errors to Sentry, no need to do any // captureException calls on your part. // On top of that, you can do your own custom stuff in this callback. });
Fixes #
- Masking semi-transparent widgets (#2472)
8.11.0 #
Features #
- 
Android 15: Add support for 16KB page sizes (#3620) - See https://developer.android.com/guide/practices/page-sizes for more details
 
- 
Support for screenshot PII content masking (#2361) By default, masking is enabled for SessionReplay. To also enable it for screenshots captured with events, you can specify options.experimental.privacy:await SentryFlutter.init( (options) { ... // the defaults are: options.experimental.privacy.maskAllText = true; options.experimental.privacy.maskAllImages = true; options.experimental.privacy.maskAssetImages = false; // you cal also set up custom masking, for example: options.experimental.privacy.mask<WebView>(); }, appRunner: () => runApp(MyApp()), );Actually, just accessing this field will cause it to be initialized with the default settings to mask all text and images: await SentryFlutter.init( (options) { ... // this has a side-effect of creating the default privacy configuration, thus enabling Screenshot masking: options.experimental.privacy; }, appRunner: () => runApp(MyApp()), );
- 
Linux native error & obfuscation support (#2431) 
- 
Improve Device context on plain Dart and Flutter desktop apps (#2441) 
- 
Add debounce to capturing screenshots (#2368) - 
Per default, screenshots are debounced for 2 seconds. 
- 
If you need more granular screenshots, you can opt out of debouncing: await SentryFlutter.init((options) { options.beforeCaptureScreenshot = (event, hint, debounce) { if (debounce) { return true; // Capture screenshot even if the SDK wants to debounce it. } else { // check event and hint ... } }; });
- 
Replace deprecated BeforeScreenshotCallbackwith newBeforeCaptureCallback.
 
- 
- 
Improve app start measurements by using addTimingsCallbackinstead ofaddPostFrameCallbackto determine app start end (#2405)- ⚠️ This change may result in reporting of shorter app start durations
 
- 
Improve frame tracking accuracy (#2372) - 
Introduces SentryWidgetsFlutterBindingthat tracks a frame starting fromhandleBeginFrameand ending inhandleDrawFrame, this is approximately the buildDuration time
- 
By default, SentryFlutter.init()automatically initializesSentryWidgetsFlutterBindingthrough theWidgetsFlutterBindingIntegration
- 
If you need to initialize the binding before SentryFlutter.init, useSentryWidgetsFlutterBinding.ensureInitializedinstead ofWidgetsFlutterBinding.ensureInitialized:void main() async { // Replace WidgetsFlutterBinding.ensureInitialized() SentryWidgetsFlutterBinding.ensureInitialized(); await SentryFlutter.init(...); runApp(MyApp()); }
- 
⚠️ Frame tracking will be disabled if a different binding is used 
 
- 
Enhancements #
- Only send debug images referenced in the stacktrace for events (#2329)
- Remove sentryframes if SDK falls back to current stack trace (#2351)- Flutter doesn't always provide stack traces for unhandled errors - this is normal Flutter behavior
- When no stack trace is provided (in Flutter errors, captureException, orcaptureMessage):- SDK creates a synthetic trace using StackTrace.current
- Internal SDK frames are removed to reduce noise
 
- SDK creates a synthetic trace using 
- Original stack traces (when provided) are left unchanged
 
Fixes #
- Catch errors thrown during handleBeginFrameandhandleDrawFrame(#2446)
- OS & device contexts missing on Windows (#2439)
- Native iOS/macOS SDK session didn't start after Flutter hot-restart (#2452)
- Kotlin 2.1.0 compatibility on Android, bump Kotlin language version from 1.4to1.6(#2456)
- Apply default IP address ({{auto}}) to transactions (#2395)- Previously, transactions weren't getting the default IP address when user context was loaded
- Now consistently applies default IP address to both events and transactions when:
- No user context exists
- User context exists but IP address is null
 
 
Dependencies #
8.11.0-beta.2 #
Features #
- Support for screenshot PII content masking (#2361)
By default, masking is enabled for SessionReplay. To also enable it for screenshots captured with events, you can specify options.experimental.privacy:
 Actually, just accessing this field will cause it to be initialized with the default settings to mask all text and images:await SentryFlutter.init( (options) { ... // the defaults are: options.experimental.privacy.maskAllText = true; options.experimental.privacy.maskAllImages = true; options.experimental.privacy.maskAssetImages = false; // you cal also set up custom masking, for example: options.experimental.privacy.mask<WebView>(); }, appRunner: () => runApp(MyApp()), );await SentryFlutter.init( (options) { ... // this has a side-effect of creating the default privacy configuration, thus enabling Screenshot masking: options.experimental.privacy; }, appRunner: () => runApp(MyApp()), );
- Linux native error & obfuscation support (#2431)
- Improve Device context on plain Dart and Flutter desktop apps (#2441)
- Add debounce to capturing screenshots (#2368)
- Per default, screenshots are debounced for 2 seconds.
- If you need more granular screenshots, you can opt out of debouncing:
 await SentryFlutter.init((options) { options.beforeCaptureScreenshot = (event, hint, debounce) { if (debounce) { return true; // Capture screenshot even if the SDK wants to debounce it. } else { // check event and hint ... } }; });- Replace deprecated BeforeScreenshotCallbackwith newBeforeCaptureCallback.
 
Fixes #
- Catch errors thrown during handleBeginFrameandhandleDrawFrame(#2446)
- OS & device contexts missing on Windows (#2439)
- Native iOS/macOS SDK session didn't start after Flutter hot-restart (#2452)
- Kotlin 2.1.0 compatibility on Android, bump Kotlin language version from 1.4to1.6(#2456)
Dependencies #
8.11.0-beta.1 #
Features #
- Windows native error & obfuscation support (#2286, #2426)
- Improve app start measurements by using addTimingsCallbackinstead ofaddPostFrameCallbackto determine app start end (#2405)- ⚠️ This change may result in reporting of shorter app start durations
 
- Improve frame tracking accuracy (#2372)
- Introduces SentryWidgetsFlutterBindingthat tracks a frame starting fromhandleBeginFrameand ending inhandleDrawFrame, this is approximately the buildDuration time
- By default, SentryFlutter.init()automatically initializesSentryWidgetsFlutterBindingthrough theWidgetsFlutterBindingIntegration
- If you need to initialize the binding before SentryFlutter.init, useSentryWidgetsFlutterBinding.ensureInitializedinstead ofWidgetsFlutterBinding.ensureInitialized:
 void main() async { // Replace WidgetsFlutterBinding.ensureInitialized() SentryWidgetsFlutterBinding.ensureInitialized(); await SentryFlutter.init(...); runApp(MyApp()); }- ⚠️ Frame tracking will be disabled if a different binding is used
 
- Introduces 
Enhancements #
- Only send debug images referenced in the stacktrace for events (#2329)
- Remove sentryframes if SDK falls back to current stack trace (#2351)- Flutter doesn't always provide stack traces for unhandled errors - this is normal Flutter behavior
- When no stack trace is provided (in Flutter errors, captureException, orcaptureMessage):- SDK creates a synthetic trace using StackTrace.current
- Internal SDK frames are removed to reduce noise
 
- SDK creates a synthetic trace using 
- Original stack traces (when provided) are left unchanged
 
Fixes #
- Apply default IP address ({{auto}}) to transactions (#2395)- Previously, transactions weren't getting the default IP address when user context was loaded
- Now consistently applies default IP address to both events and transactions when:
- No user context exists
- User context exists but IP address is null
 
 
Dependencies #
8.10.0 #
Features #
- 
Emit transaction.datainsidecontexts.trace.data(#2284)
- 
Blocking app starts span if "appLaunchedInForeground" is false. (Android only) (#2291) 
- 
Replay: user-configurable masking (redaction) for widget classes and specific widget instances. (#2324) Some examples of the configuration: await SentryFlutter.init( (options) { ... options.experimental.replay.mask<IconButton>(); options.experimental.replay.unmask<Image>(); options.experimental.replay.maskCallback<Text>( (Element element, Text widget) => (widget.data?.contains('secret') ?? false) ? SentryMaskingDecision.mask : SentryMaskingDecision.continueProcessing); }, appRunner: () => runApp(MyApp()), );Also, you can wrap any of your widgets with SentryMask()orSentryUnmask()widgets to mask/unmask them, respectively. For example:SentryUnmask(Text('Not secret at all'));
- 
Support captureFeedback(#2230)- Deprecated Sentry.captureUserFeedback, usecaptureFeedbackinstead.
- Deprecated Hub.captureUserFeedback, usecaptureFeedbackinstead.
- Deprecated SentryClient.captureUserFeedback, usecaptureFeedbackinstead.
- Deprecated SentryUserFeedback, useSentryFeedbackinstead.
 
- Deprecated 
- 
Add SentryFeedbackWidget(#2240)Navigator.push( context, MaterialPageRoute( builder: (context) => SentryFeedbackWidget(associatedEventId: id), fullscreenDialog: true, ), );
- 
Add screenshot to SentryFeedbackWidget(#2369)- Use SentryFlutter.captureScreenshotto create a screenshot attachment
- Call SentryFeedbackWidgetwith this attachment to add it to the user feedback
 final id = await Sentry.captureMessage('UserFeedback'); final screenshot = await SentryFlutter.captureScreenshot(); Navigator.push( context, MaterialPageRoute( builder: (context) => SentryFeedbackWidget( associatedEventId: id, screenshot: screenshot, ), fullscreenDialog: true, ), );
- Use 
Enhancements #
- Avoid sending too many empty client reports when Http Transport is used (#2380)
- Cache parsed DSN (#2365)
- Handle backpressure earlier in pipeline (#2371)
- Drops max un-awaited parallel tasks earlier, so event processors & callbacks are not executed for them.
- Change by setting SentryOptions.maxQueueSize. Default is 30.
 
- Use native spotlight integrations on Flutter Android, iOS, macOS (#2285)
- Improve app start integration (#2266)
- Only store slow and frozen frames for frame delay calculation (#2337)
- Add ReplayIntegration to the integrations list on events when replay is enabled. (#2349)
Fixes #
- App lag with frame tracking enabled when span finishes after a long time (#2311)
- Only start frame tracking if we receive valid display refresh data (#2307)
- Rounding error used on frames.total and reject frame measurements if frames.total is less than frames.slow or frames.frozen (#2308)
- iOS replay integration when only onErrorSampleRateis specified (#2306)
- Fix TTID timing issue (#2326)
- TTFD fixes
- Accessing invalid json fields from fetchNativeAppStartshould return null (#2340)
Deprecate #
- Metrics API (#2312)
Dependencies #
8.10.0-beta.1 #
Features #
- 
Emit transaction.datainsidecontexts.trace.data(#2284)
- 
Blocking app starts if "appLaunchedInForeground" is false. (Android only) (#2291) 
- 
Windows native error & obfuscation support (#2286) 
- 
Replay: user-configurable masking (redaction) for widget classes and specific widget instances. (#2324) Some examples of the configuration: await SentryFlutter.init( (options) { ... options.experimental.replay.mask<IconButton>(); options.experimental.replay.unmask<Image>(); options.experimental.replay.maskCallback<Text>( (Element element, Text widget) => (widget.data?.contains('secret') ?? false) ? SentryMaskingDecision.mask : SentryMaskingDecision.continueProcessing); }, appRunner: () => runApp(MyApp()), );Also, you can wrap any of your widgets with SentryMask()orSentryUnmask()widgets to mask/unmask them, respectively. For example:SentryUnmask(Text('Not secret at all'));
- 
Support captureFeedback(#2230)- Deprecated Sentry.captureUserFeedback, usecaptureFeedbackinstead.
- Deprecated Hub.captureUserFeedback, usecaptureFeedbackinstead.
- Deprecated SentryClient.captureUserFeedback, usecaptureFeedbackinstead.
- Deprecated SentryUserFeedback, useSentryFeedbackinstead.
 
- Deprecated 
- 
Add SentryFeedbackWidget(#2240)Navigator.push( context, MaterialPageRoute( builder: (context) => SentryFeedbackWidget(associatedEventId: id), fullscreenDialog: true, ), );
Enhancements #
- Use native spotlight integrations on Flutter Android, iOS, macOS (#2285)
- Improve app start integration (#2266)
- Only store slow and frozen frames for frame delay calculation (#2337)
- Add ReplayIntegration to the integrations list on events when replay is enabled. (#2349)
Fixes #
- App lag with frame tracking enabled when span finishes after a long time (#2311)
- Only start frame tracking if we receive valid display refresh data (#2307)
- Rounding error used on frames.total and reject frame measurements if frames.total is less than frames.slow or frames.frozen (#2308)
- iOS replay integration when only onErrorSampleRateis specified (#2306)
- Fix TTID timing issue (#2326)
- Start missing TTFD for root screen transaction (#2332)
- Match TTFD to TTID end timespan if TTFD is unfinished when user navigates to another screen (#2347)
- Accessing invalid json fields from fetchNativeAppStartshould return null (#2340)
- Error when calling SentryFlutter.reportFullyDisplayed()twice (#2339)
- TTFD measurements should only be added for successful TTFD spans (#2348)
Deprecate #
- Metrics API (#2312)
Dependencies #
8.9.0 #
Features #
- 
Session replay Alpha for Android and iOS (#2208, #2269, #2236, #2275, #2270). To try out replay, you can set following options (access is limited to early access orgs on Sentry. If you're interested, sign up for the waitlist): await SentryFlutter.init( (options) { ... options.experimental.replay.sessionSampleRate = 1.0; options.experimental.replay.onErrorSampleRate = 1.0; }, appRunner: () => runApp(MyApp()), );
- 
Support allowUrls and denyUrls for Flutter Web (#2227) await SentryFlutter.init( (options) { ... options.allowUrls = ["^https://sentry.com.*\$", "my-custom-domain"]; options.denyUrls = ["^.*ends-with-this\$", "denied-url"]; }, appRunner: () => runApp(MyApp()), );
- 
Collect touch breadcrumbs for all buttons, not just those with keyspecified. (#2242)
- 
Add enableDartSymbolicationoption to Sentry.init() for Flutter iOS, macOS and Android (#2256)- This flag enables symbolication of Dart stack traces when native debug images are not available.
- Useful when using Sentry.init() instead of SentryFlutter.init() in Flutter projects for example due to size limitations.
- trueby default but automatically set to- falsewhen using SentryFlutter.init() because the SentryFlutter fetches debug images from the native SDK integrations.
 
Dependencies #
Fixes #
- Only access renderObject if hasSizeis true (#2263)
8.8.0 #
Features #
- Add SentryFlutter.nativeCrash()using MethodChannels for Android and iOS (#2239)- This can be used to test if native crash reporting works
 
- Add ignoreRoutesparameter toSentryNavigatorObserver. (#2218)- This will ignore the Routes and prevent the Route from being pushed to the Sentry server.
- Ignored routes will also create no TTID and TTFD spans.
 
SentryNavigatorObserver(ignoreRoutes: ["/ignoreThisRoute"]),
Improvements #
- Debouncing of SentryWidgetsBindingObserver.didChangeMetrics with delay of 100ms. (#2232)
Dependencies #
8.8.0-alpha.1 #
Features #
- iOS Session Replay Alpha (#2209)
- Android replay touch tracking support (#2228)
- Add ignoreRoutesparameter toSentryNavigatorObserver. (#2218)- This will ignore the Routes and prevent the Route from being pushed to the Sentry server.
- Ignored routes will also create no TTID and TTFD spans.
 
SentryNavigatorObserver(ignoreRoutes: ["/ignoreThisRoute"]),
Dependencies #
8.7.0 #
Features #
- 
Add support for span level measurements. (#2214) 
- 
Add ignoreTransactionsandignoreErrorsto options (#2207)await SentryFlutter.init( (options) { options.dsn = 'https://examplePublicKey@o0.ingest.sentry.io/0'; options.ignoreErrors = ["my-error", "^error-.*\$"]; options.ignoreTransactions = ["my-transaction", "^transaction-.*\$"]; ... }, appRunner: () => runApp(MyApp()), );
- 
Add proxy support (#2192) - Configure a SentryProxyobject and set it onSentryFlutter.init
 import 'package:flutter/widgets.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; Future<void> main() async { await SentryFlutter.init( (options) { options.dsn = 'https://example@sentry.io/add-your-dsn-here'; options.proxy = SentryProxy( type: SentryProxyType.http, host: 'localhost', port: 8080, ); }, // Init your App. appRunner: () => runApp(MyApp()), ); }
- Configure a 
Improvements #
- Deserialize and serialize unknown fields (#2153)
Dependencies #
8.6.0 #
Improvements #
- Add error type identifier to improve obfuscated Flutter issue titles (#2170)
- Example: transforms issue titles from GAtoFlutterErrororminified:nEtoFlutterError
- This is enabled automatically and will change grouping if you already have issues with obfuscated titles
- If you want to disable this feature, set enableExceptionTypeIdentificationtofalsein your Sentry options
- You can add your custom exception identifier if there are exceptions that we do not identify out of the box
 // How to add your own custom exception identifier class MyCustomExceptionIdentifier implements ExceptionIdentifier { @override String? identifyType(Exception exception) { if (exception is MyCustomException) { return 'MyCustomException'; } if (exception is MyOtherCustomException) { return 'MyOtherCustomException'; } return null; } } SentryFlutter.init((options) => options..prependExceptionTypeIdentifier(MyCustomExceptionIdentifier()));
- Example: transforms issue titles from 
Deprecated #
- Deprecate enableTracing(#2199)- The enableTracingoption has been deprecated and will be removed in the next major version. We recommend removing it in favor of thetracesSampleRateandtracesSampleroptions. If you want to enable performance monitoring, please set thetracesSampleRateto a sample rate of your choice, or provide a sampling function astracesSampleroption instead. If you want to disable performance monitoring, remove thetracesSamplerandtracesSampleRateoptions.
 
- The 
Dependencies #
8.6.0-alpha.2 #
Features #
- 
Android Session Replay Alpha (#2032) To try out replay, you can set following options: await SentryFlutter.init( (options) { ... options.experimental.replay.sessionSampleRate = 1.0; options.experimental.replay.onErrorSampleRate = 1.0; }, appRunner: () => runApp(MyApp()), );Access is limited to early access orgs on Sentry. If you're interested, sign up for the waitlist 
8.5.0 #
Features #
- Add dart platform to sentry frames (#2193)
- This allows viewing the correct dart formatted raw stacktrace in the Sentry UI
 
- Support ignoredExceptionsForType(#2150)- Filter out exception types by calling SentryOptions.addExceptionFilterForType(Type exceptionType)
 
- Filter out exception types by calling 
Fixes #
- Disable sff & frame delay detection on web, linux and windows (#2182)
- Display refresh rate is locked at 60 for these platforms which can lead to inaccurate metrics
 
Improvements #
- Capture meaningful stack traces when unhandled errors have empty or missing stack traces (#2152)
- This will affect grouping for unhandled errors that have empty or missing stack traces.
 
Dependencies #
8.4.0 #
Features #
- Add API for pausing/resuming iOS and macOS app hang tracking (#2134)
- This is useful to prevent the Cocoa SDK from reporting wrongly detected app hangs when the OS shows a system dialog for asking specific permissions.
- Use SentryFlutter.pauseAppHangTracking()andSentryFlutter.resumeAppHangTracking()
 
- Capture total frames, frames delay, slow & frozen frames and attach to spans (#2106)
- Support WebAssembly compilation (dart2wasm) (#2113)
- Add flag to disable reporting of view hierarchy identifiers (#2158)
- Use reportViewHierarchyIdentifiersto enable or disable the option
 
- Use 
- Record dropped spans in client reports (#2154)
- Add memory usage to contexts (#2133)
- Only for Linux/Windows applications, as iOS/Android/macOS use native SDKs
 
Fixes #
- Fix sentry_drift compatibility with Drift 2.19.0 (#2162)
- App starts hanging for 30s (#2140)
- Time out for app start info retrieval has been reduced to 10s
- If autoAppStartsisfalseandsetAppStartEndhas not been called, the app start event processor will now return early instead of waiting forgetAppStartInfoto finish
 
Improvements #
- Set dart runtime version with parsed Platform.version(#2156)
Dependencies #
Deprecated #
8.4.0-beta.1 #
Features #
- Add API for pausing/resuming iOS and macOS app hang tracking (#2134)
- This is useful to prevent the Cocoa SDK from reporting wrongly detected app hangs when the OS shows a system dialog for asking specific permissions.
- Use SentryFlutter.pauseAppHangTracking()andSentryFlutter.resumeAppHangTracking()
 
- Capture total frames, frames delay, slow & frozen frames and attach to spans (#2106)
- Support WebAssembly compilation (dart2wasm) (#2113)
Deprecated #
- User segment is now deprecated and will be removed in version 9.0.0. Use a custom tag or context instead. (#2119)
Dependencies #
8.3.0 #
8.2.0 #
Enhancements #
- Include sentry frames in stacktraces to enable SDK crash detection (#2050)
Fixes #
- Event processor blocking transactions from being sent if autoAppStartis false (#2028)
Features #
- Create app start transaction when no SentryNavigatorObserveris present (#2017)
- Adds native spans to app start transaction (#2027)
- Adds app start spans to first transaction (#2009)
Fixes #
- Fix PlatformExceptiontitle parsing (#2033)
Dependencies #
8.1.0 #
Features #
- Set snapshot to trueif stacktrace is not provided (#2000)- If the stacktrace is not provided, the Sentry SDK will fetch the current stacktrace via StackTrace.currentand the snapshot will be set totrue- this may change the grouping behavior
- snapshot = truemeans it's a synthetic exception, reflecting the current state of the thread rather than the stack trace of a real exception
 
- If the stacktrace is not provided, the Sentry SDK will fetch the current stacktrace via 
Fixes #
- Timing metric aggregates metrics in the created span (#1994)
Dependencies #
8.0.0 #
This release contains breaking changes, please read the changelog carefully.
Changes from the latest v7 release are included in this major release
Breaking Changes #
- Bump iOS minimum deployment target from 11 to 12 (#1821)
- Mark exceptions not handled by the user as handled: false(#1535)- This will affect your release health data, and is therefore considered a breaking change.
 
- Refrain from overwriting the span status for unfinished spans (#1577)
- Older self-hosted sentry instances will drop transactions containing unfinished spans.
- This change was introduced in relay/#1690 and released with 22.12.0
 
 
- Older self-hosted sentry instances will drop transactions containing unfinished spans.
- Do not leak extensions of external classes (#1576)
- Make hintnon-nullable inBeforeSendCallback,BeforeBreadcrumbCallandEventProcessor(#1574)- This will affect your callbacks, making this a breaking change.
 
- Load Device Contexts from Sentry Java (#1616)
- Now the device context from Android is available in BeforeSendCallback
 
- Now the device context from Android is available in 
- Set ip_address to {{auto}} by default, even if sendDefaultPII is disabled (#1665)
- Instead use the "Prevent Storing of IP Addresses" option in the "Security & Privacy" project settings on sentry.io
 
Features #
- Add support for exception aggregates (#1866)
7.20.0 #
7.19.0 #
Features #
- Experimental: Add support for Sentry Developer Metrics (#1940, #1949, #1954, #1958)
Use the Metrics API to track processing time, download sizes, user signups, and conversion rates and correlate them back to tracing data in order to get deeper insights and solve issues faster. Our API supports counters, distributions, sets, gauges and timers, and it's easy to get started:
 To learn more about Sentry Developer Metrics, head over to our Dart and Flutter docs page.Sentry.metrics() .increment( 'button_login_click', // key value: 1.0, unit: null, tags: {"provider": "e-mail"} );
Dependencies #
- Expand package_info_plusversion range to6.0.0(#1948)
Improvements #
- Set sentry_flutter.podspecversion frompubspec.yaml(#1941)
7.18.0 #
Features #
- Add TTFD (time to full display), which allows you to measure the time it takes to render the full screen (#1920)
- Requires using the routing instrumentation.
- Set enableTimeToFullDisplayTracing = truein yourSentryFlutterOptionsto enable TTFD
- Manually report the end of the full display by calling SentryFlutter.reportFullyDisplayed()
- If not reported within 30 seconds, the span will be automatically finish with the status deadline_exceeded
 
- Add TTID (time to initial display), which allows you to measure the time it takes to render the first frame of your screen (#1910)
- Requires using the routing instrumentation.
- Introduces two modes:
- automaticmode is enabled by default for all screens and will yield only an approximation result.
- manualmode requires manual instrumentation and will yield a more accurate result.- To use manualmode, you need to wrap your desired widget:SentryDisplayWidget(child: MyScreen()).
 
- To use 
- You can mix and match both modes in your app.
 
- Other significant fixes
- didPopdoesn't trigger a new transaction
- Change transaction operation name to ui.loadinstead ofnavigation
 
 
- Add override captureFailedRequestsoption (#1931)- The diointegration andSentryHttpClientnow take an additionalcaptureFailedRequestsoption.
- This is useful if you want to disable this option on native and only enable it on diofor example.
 
- The 
Improvements #
- Update root name for navigator observer (#1934)
- The root name for transactions is now root /instead ofroot ("/").
 
- The root name for transactions is now 
Dependencies #
7.17.0 #
Fixes #
- Fix transaction end timestamp trimming (#1916)
- Transaction end timestamps are now correctly trimmed to the latest child span end timestamp
 
- remove transitive dart:io reference for web (#1898)
Features #
- Use recordHttpBreadcrumbsto set iOSenableNetworkBreadcrumbs(#1884)
- Apply beforeBreadcrumbon native iOS crumbs (#1914)
- Add maxQueueSizeto limit the number of unawaited events sent to Sentry (#1868)
Improvements #
- App start is now fetched within integration instead of event processor (#1905)
Dependencies #
7.16.1 #
8.0.0-beta.2 #
Breaking Changes #
- Bump iOS minimum deployment target from 11 to 12 (#1821)
- Mark exceptions not handled by the user as handled: false(#1535)- This will affect your release health data, and is therefore considered a breaking change.
 
- Refrain from overwriting the span status for unfinished spans (#1577)
- Older self-hosted sentry instances will drop transactions containing unfinished spans.
- This change was introduced in relay/#1690 and released with 22.12.0
 
 
- Older self-hosted sentry instances will drop transactions containing unfinished spans.
- Do not leak extensions of external classes (#1576)
- Make hintnon-nullable inBeforeSendCallback,BeforeBreadcrumbCallandEventProcessor(#1574)- This will affect your callbacks, making this a breaking change.
 
- Load Device Contexts from Sentry Java (#1616)
- Now the device context from Android is available in BeforeSendCallback
 
- Now the device context from Android is available in 
- Set ip_address to {{auto}} by default, even if sendDefaultPII is disabled (#1665)
- Instead use the "Prevent Storing of IP Addresses" option in the "Security & Privacy" project settings on sentry.io
 
Fixes #
- Remove Flutter dependency from Drift integration (#1867)
- Remove dead code, cold start bool is now always present (#1861)
- Fix iOS "Arithmetic Overflow" (#1874)
Dependencies #
8.0.0-beta.1 #
This release is replaced by 8.0.0-beta.2
7.16.0 #
Features #
- Add SentryWidget(#1846)- Prefer to use SentryWidgetnow instead ofSentryScreenshotWidgetandSentryUserInteractionWidgetdirectly
 
- Prefer to use 
- Performance monitoring support for Isar (#1726)
- Tracing without performance for Dio integration (#1837)
- Accept Map<String, dynamic>inHintclass (#1807)- Please check if everything works as expected when using Hint- Factory constructor Hint.withMap(Map<String, dynamic> map)now takesMap<String, dynamic>instead ofMap<String, Object>
- Method hint.addAll(Map<String, dynamic> keysAndValues)now takesMap<String, dynamic>instead ofMap<String, Object>
- Method set(String key, dynamic value)now takes value ofdynamicinstead ofObject
- Method hint.get(String key)now returnsdynamicinstead ofObject?
 
- Factory constructor 
 
- Please check if everything works as expected when using 
Dependencies #
7.15.0 #
Features #
- Add Spotlight support (#1786)
- Set options.spotlight = Spotlight(enabled: true)to enable Spotlight
 
- Set 
- Add ConnectivityIntegrationfor web (#1765)- We only get the info if online/offline on web platform. The added breadcrumb is set to either wifiornone.
 
- We only get the info if online/offline on web platform. The added breadcrumb is set to either 
- Add isar breadcrumbs (#1800)
- Starting with Flutter 3.16, Sentry adds the appFlavorto theflutter_context(#1799)
- Add beforeScreenshotCallback to SentryFlutterOptions (#1805)
- Add support for readTransactioninsqflite(#1819)
Dependencies #
7.14.0 #
- Add option to opt out of fatal level for automatically collected errors (#1738)
Fixes #
- Add debug_meta to all events (#1756)
- Fixes obfuscated stacktraces when captureMessageorcaptureEventis called withattachStacktraceoption
 
- Fixes obfuscated stacktraces when 
Features #
- Add option to opt out of fatal level for automatically collected errors (#1738)
- Add Hivebreadcrumbs (#1773)
Dependencies #
7.13.2 #
7.13.1 #
7.13.0 #
Fixes #
- Fixes setting the correct locale to contexts with navigatorKey (#1724)
- If you have a selected locale in e.g MaterialApp, this fix will retrieve the correct locale for the event context.
 
- Flutter renderer information was removed on dart:io platforms since it didn't add the correct value (#1723)
- Unsupported types with Expando (#1690)
Features #
- Add APM integration for Drift (#1709)
- StackTraces in PlatformException.messagewill get nicely formatted too when present (#1716)
- Breadcrumbs for database operations (#1656)
- APM for hive (#1672)
- Add attachScreenshotOnlyWhenResumedto options (#1700)
Dependencies #
7.12.0 #
7.11.0 #
7.10.1 #
Enhancements #
- Add Sampling Decision to Trace Envelope Header (#1639)
- Add http.request.method attribute to http spans data (#1633)
- Add db.system and db.name attributes to db spans data (#1629)
- Log SDK errors to the console if the log level is fataleven ifdebugis disabled (#1635)
Features #
- Tracing without performance (#1621)
Fixes #
- Normalize data properties of SentryUserandBreadcrumbbefore sending over method channel (#1591)
- Fixing memory leak issue in SentryFlutterPlugin (Android Plugin) (#1588)
- Discard empty stack frames (#1625)
- Disable scope sync for cloned scopes (#1628)
Dependencies #
7.9.0 #
Features #
- Send trace origin (#1534)
Trace origin indicates what created a trace or a span. Not all transactions and spans contain enough information to tell whether the user or what precisely in the SDK created it. Origin solves this problem. The SDK now sends origin for transactions and spans.
- Add appHangTimeoutIntervaltoSentryFlutterOptions(#1568)
- DioEventProcessor: Append http response body (#1557)
- This is opt-in and depends on maxResponseBodySize
- Only for diopackage
 
- This is opt-in and depends on 
Dependencies #
7.8.0 #
7.7.0 #
7.6.3 #
Fixes #
- Check if the Native SDKs are enabled when using autoInitializeNativeSdk=false(#1489)
- Align http method to span convention (#1477)
- Wrapped methods return a Futureinstead of executing right away (#1476)- Relates to (#1462)
 
- Fix readTimeoutMillis wrongly configures connectionTimeoutMillis instead of the correct field (#1485)
Dependencies #
7.6.2 #
7.6.1 #
Features #
- Add sent_atto envelope header (#1428)
Fixes #
- Fix battery level conversion for iOS 16.4 (#1433)
- Adds a namespace for compatibility with AGP 8.0. (#1427)
- Avoid dependency conflict with package_info_plus v4 (#1440)
Breaking Changes #
- Android minSdkVersionis now 19 (Flutter already defines 19-20 as best effort)
- Deprecate extrain favor ofcontexts(#1435)
Dependencies #
7.5.2 #
7.5.0 #
Features #
- Add SentryIOOverridesIntegrationthat automatically wrapsFileintoSentryFile(#1362)
import 'package:sentry_file/sentry_file.dart';
// SDK init. options
options.addIntegration(SentryIOOverridesIntegration());
- Add enableTracingoption (#1395)- This change is backwards compatible. The default is nullmeaning existing behaviour remains unchanged (setting eithertracesSampleRateortracesSamplerenables performance).
- If set to true, performance is enabled, even if notracesSampleRateortracesSamplerhave been configured.
- If set to true, sampler will use default sample rate of 1.0, if notracesSampleRateis set.
- If set to falseperformance is disabled, regardless oftracesSampleRateandtracesSampleroptions.
 
- This change is backwards compatible. The default is 
// SDK init. options
options.enableTracing = true;
- Sync connectionTimeoutandreadTimeoutto Android (#1397)
// SDK init. options
options.connectionTimeout = Duration(seconds: 10);
options.readTimeout = Duration(seconds: 10);
- Set User nameandgeoin native plugins (#1393)
Sentry.configureScope(
  (scope) => scope.setUser(SentryUser(
      id: '1234',
      name: 'Jane Doe',
      email: 'jane.doe@example.com',
      geo: SentryGeo(
        city: 'Vienna',
        countryCode: 'AT',
        region: 'Austria',
      ))),
);
import 'dart:convert';
options.beforeSend = (event, {hint}) {
  final text = 'This event should not be sent happen in prod. Investigate.';
  final textAttachment = SentryAttachment.fromIntList(
    utf8.encode(text),
    'event_info.txt',
    contentType: 'text/plain',
  );
  hint?.attachments.add(textAttachment);
  return event;
};
Fixes #
- Screenshots and View Hierarchy should only be added to errors (#1385)
- View Hierarchy is removed from Web errors since we don't symbolicate minified View Hierarchy yet.
 
- More improvements related to not awaiting FutureOr<T>if it's not a future (#1385)
- Do not report only async gap frames for logging calls (#1398)
Dependencies #
7.4.1 #
Fixes #
- Fix Dart web builds breaking due to dart:ioimports when usingSentryIsolateorSentryIsolateExtension(#1371)- When using SentryIsolateorSentryIsolateExtension, importsentry_io.dart.
 
- When using 
- Export SentryBaggage(#1377)
- Remove breadcrumbs from transaction to avoid duplication (#1366)
Dependencies #
7.4.0 #
7.3.0 #
7.2.0 #
7.1.0 #
7.0.0 #
Features #
- Platform Exception Event Processor (#1297)
- Support failedRequestTargets for HTTP Client errors (#1285)
- Captures errors for the default range 500-599ifcaptureFailedRequestsis enabled
 
- Captures errors for the default range 
- Sentry Isolate Extension (#1266)
- Allow sentry user to control resolution of captured Flutter screenshots (#1288)
- Support beforeSendTransaction (#1238)
- Add In Foreground to App context (#1260)
- Error Cause Extractor (#1198, #1236)
- Add throwabletoSentryException
 
- Add 
- Dart 3 Support (#1220)
- Introduce Hintdata bag (#1136)
- Use Hintfor screenshots (#1165)
- Support custom units for custom measurements (#1181)
Enhancements #
- Replace toImagewithtoImageSyncfor Flutter >= 3.7 (1268)
- Don't await FutureOr<T>if it's not a future. This should marginally improve the performance (#1310)
- Replace StackTrace.emptywithStackTrace.current(#1183)
Breaking Changes #
- Enable enableNdkScopeSync by default (#1276)
- Update sentry_dioto dio v5 (#1282)
- Remove deprecated fields (#1227)
- Remove deprecated fields from the Scopeclass.- user(SentryUser? user), using the- setUser(SentryUser? user)instead.
- attachements, using the- attachmentsinstead.
 
- Remove deprecated field from the SentryFlutterOptionsclass.- anrTimeoutIntervalMillis, using the- anrTimeoutIntervalinstead.
- autoSessionTrackingIntervalMillis, using the- autoSessionTrackingIntervalinstead.
 
 
- Remove deprecated fields from the 
- Rename APM tracking feature flags to tracing (#1222)
- Rename
- enableAutoPerformanceTracking to enableAutoPerformanceTracing
- enableOutOfMemoryTracking to enableWatchdogTerminationTracking
 
 
- Rename
- Enable APM features by default (#1217)
- Enable by default
- captureFailedRequests
- enableStructuredDataTracing
- enableUserInteractionTracing
 
 
- Enable by default
- Mark transaction as internal_error in case of unhandled errors (#1218)
- Removed various deprecated fields (#1036):
- Removed the following fields from the devicecontext- language
- timezone
- screenResolution
- theme
 
- Removed isolate name from Dart context. It's now reported via the threads interface. It can be enabled via options.attachThreads
 
- Removed the following fields from the 
- Use sentryClientNameinstead ofsdk.identifier(#1135)
- Refactor BindingUtilstoBindingWrapperto enable the use of custom bindings (#1184)
- Bump Flutter min to 3.0.0 and Dart to 2.17.0 (#1180)
Dependencies #
Fixes #
7.0.0-rc.2 #
Features #
- Platform Exception Event Processor (#1297)
- Support failedRequestTargets for HTTP Client errors (#1285)
- Captures errors for the default range 500-599ifcaptureFailedRequestsis enabled
 
- Captures errors for the default range 
- Sentry Isolate Extension (#1266)
- Allow sentry user to control resolution of captured Flutter screenshots (#1288)
Enhancements #
6.22.0 #
7.0.0-rc.1 #
6.21.0 #
7.0.0-beta.4 #
7.0.0-alpha.5 #
7.0.0-alpha.4 #
Breaking Changes #
- Remove deprecated fields (#1227)
- Remove deprecated fields from the Scopeclass.- user(SentryUser? user), using the- setUser(SentryUser? user)instead.
- attachements, using the- attachmentsinstead.
 
- Remove deprecated field from the SentryFlutterOptionsclass.- anrTimeoutIntervalMillis, using the- anrTimeoutIntervalinstead.
- autoSessionTrackingIntervalMillis, using the- autoSessionTrackingIntervalinstead.
 
 
- Remove deprecated fields from the 
Dependencies #
7.0.0-alpha.3 #
7.0.0-alpha.2 #
7.0.0-alpha.1 #
Features #
- Feat: Introduce Hintdata bag (#1136)
- Feat: Use Hintfor screenshots (#1165)
- Feat: Support custom units for custom measurements (#1181)
Fixes #
- Fix: Remove SentryOptionsrelated parameters from classes which also takeHubas a parameter (#816)
Enhancements #
- Enha: Replace StackTrace.emptywithStackTrace.current(#1183)
Breaking Changes #
- Removed various deprecated fields (#1036):
- Removed the following fields from the devicecontext- language
- timezone
- screenResolution
- theme
 
- Removed isolate name from Dart context. It's now reported via the threads interface. It can be enabled via options.attachThreads
 
- Removed the following fields from the 
- Use sentryClientNameinstead ofsdk.identifier(#1135)
- Refactor BindingUtilstoBindingWrapperto enable the use of custom bindings (#1184)
- Bump Flutter min to 3.0.0 and Dart to 2.17.0 (#1180)
6.19.0 #
6.18.3 #
6.18.2 #
6.18.1 #
6.18.0 #
6.17.0 #
6.16.1 #
6.16.0 #
Features #
- Add request context to HttpException,SocketExceptionandNetworkImageLoadException(#1118)
- SocketExceptionand- FileSystemExceptionwith- OSErrors report the- OSErroras root exception (#1118)
Fixes #
- VendorId should be a String (#1112)
- Disable enableUserInteractionBreadcrumbson Android whenenableAutoNativeBreadcrumbsis disabled (#1131)
- Transaction name is reset after the transaction finishes (#1125)
Dependencies #
6.15.0 #
6.14.0 #
6.13.0 #
6.12.0 #
6.11.2 #
6.11.1 #
6.11.0 #
6.9.1 #
6.9.0 #
6.8.1 #
6.8.0 #
6.7.0 #
Fixes #
- Maps with Key Object, Object would fail during serialization if not String, Object (#935)
- Breadcrumbs "Concurrent Modification" (#948)
- Duplicative Screen size changed breadcrumbs (#888)
- Duplicated Android Breadcrumbs with no Mechanism (#954)
- Fix windows native method need default result (#943)
- Add request instead of response data to SentryRequestinDioEventProcessor#933
Features #
6.6.2 #
Features #
Fixes #
- Send DidBecomeActiveNotification when OOM enabled (#905)
- dio.addSentryhangs if- dsnis empty and SDK NoOp (#920)
- addBreadcrumb throws on Android API < 24 because of NewApi usage (#923)
- sentry_diois promoted to GA and not experimental anymore (#914)
6.6.0 #
Fixes #
- Bump: Sentry-Cocoa to 7.18.0 and Sentry-Android to 6.1.2 (#892)
- Fix: Add missing iOS contexts (#761)
- Fix serialization of threads (#844)
- Fix: SentryAssetBundleon Flutter >= 3.1 (#877)
Features #
- Feat: Client Reports (#829)
- Feat: Allow manual init of the Native SDK (#765)
- Feat: Attach Isolate name to thread context (#847)
- Feat: Add Android thread to platform stacktraces (#853)
- Feat: Sync Scope to Native (#858)
Sentry Self-hosted Compatibility #
- Starting with version 6.6.0ofsentry, Sentry's version >= v21.9.0 is required or you have to manually disable sending client reports via thesendClientReportsoption. This only applies to self-hosted Sentry. If you are using sentry.io, no action is needed.
6.6.0-beta.4 #
- Bump: Sentry-Cocoa to 7.17.0 and Sentry-Android to 6.1.1 (#891)
6.6.0-beta.3 #
- Bump: Sentry-Cocoa to 7.16.1 (#886)
6.6.0-beta.2 #
- Fix: Add user setter back in the scope (#883)
- Fix: clear method sets all properties synchronously (#882)
6.6.0-beta.1 #
- Feat: Sync Scope to Native (#858)
6.6.0-alpha.3 #
- Feat: Attach Isolate name to thread context (#847)
- Fix: SentryAssetBundleon Flutter >= 3.1 (#877)
- Feat: Add Android thread to platform stacktraces (#853)
- Fix: Rename auto initialize property (#857)
- Bump: Sentry-Android to 6.0.0 (#879)
6.6.0-alpha.2 #
- Fix serialization of threads (#844)
- Feat: Allow manual init of the Native SDK (#765)
6.6.0-alpha.1 #
- Feat: Client Reports (#829)
- Fix: Add missing iOS contexts (#761)
Sentry Self-hosted Compatibility #
- Starting with version 6.6.0ofsentry, Sentry's version >= v21.9.0 is required or you have to manually disable sending client reports via thesendClientReportsoption. This only applies to self-hosted Sentry. If you are using sentry.io, no action is needed.
6.5.1 #
- Update event contexts (#838)
6.5.0 #
- No documented changes.
6.5.0-beta.2 #
- Fix: Do not set the transaction to scope if no op (#828)
6.5.0-beta.1 #
- No documented changes.
6.5.0-alpha.3 #
- Feat: Support for platform stacktraces on Android (#788)
6.5.0-alpha.2 #
- Bump: Sentry-Android to 5.7.0 and Sentry-Cocoa to 7.11.0 (#796)
- Fix: Dio event processor safelly bails if no DioError in the exception list (#795)
6.5.0-alpha.1 #
- Feat: Mobile Vitals - Native App Start (#749)
- Feat: Mobile Vitals - Native Frames (#772)
6.4.0 #
Various fixes & improvements #
- Fix: Missing userId on iOS when userId is not set (#782) by @marandaneto
- Allow to set startTimestamp & endTimestamp manually to SentrySpan (#676) by @fatihergin
6.4.0-beta.3 #
- Feat: Allow to set startTimestamp & endTimestamp manually to SentrySpan (#676)
- Bump: Sentry-Cocoa to 7.10.0 (#777)
- Feat: Additional Dart/Flutter context information (#778)
- Bump: Kotlin plugin to 1.5.31 (#763)
- Fix: Missing userId on iOS when userId is not set (#782)
6.4.0-beta.2 #
- No documented changes.
6.4.0-beta.1 #
- Fix: Disable log by default in debug mode (#753)
- [Dio] Ref: Replace FailedRequestAdapter with FailedRequestInterceptor (#728)
- Fix: Add missing return values - dart analyzer (#742)
- Feat: Add DioEventProcessorwhich improves DioError crash reports (#718)
- Fix: Do not report duplicated packages and integrations (#760)
- Feat: Allow manual init of the Native SDK or no Native SDK at all (#765)
6.3.0 #
- Feat: Support maxSpan for performance API and expose SentryOptions through Hub (#716)
- Fix: await ZonedGuard integration to run (#732)
- Fix: sentry_loggingincorrectly setting SDK name (#725)
- Bump: Sentry-Android to 5.6.1 and Sentry-Cocoa to 7.9.0 (#736)
- Feat: Support Attachment.addToTransactions (#709)
- Fix: captureTransaction should return emptyId when transaction is discarded (#713)
- Add SentryAssetBundlefor automatic spans for asset loading (#685)
- Fix: maxRequestBodySizeshould beneverby default when using the FailedRequestClientAdapter directly (#701)
- Feat: Add support for Dio (#688)
- Fix: Use correct data/extras type in tracer (#693)
- Fix: Do not throw when Throwable type is not supported for associating errors to a transaction (#692)
- Feat: Automatically create transactions when navigating between screens (#643)
6.3.0-beta.4 #
- Feat: Support Attachment.addToTransactions (#709)
- Fix: captureTransaction should return emptyId when transaction is discarded (#713)
6.3.0-beta.3 #
- Feat: Auto transactions duration trimming (#702)
- Add SentryAssetBundlefor automatic spans for asset loading (#685)
- Feat: Configure idle transaction duration (#705)
- Fix: maxRequestBodySizeshould beneverby default when using the FailedRequestClientAdapter directly (#701)
6.3.0-beta.2 #
- Feat: Improve configuration options of SentryNavigatorObserver(#684)
- Feat: Add support for Dio (#688)
- Bump: Sentry-Android to 5.5.2 and Sentry-Cocoa to 7.8.0 (#696)
6.3.0-beta.1 #
- Enha: Replace flutter default root name '/' with 'root' (#678)
- Fix: Use 'navigation' instead of 'ui.load' for auto transaction operation (#675)
- Fix: Use correct data/extras type in tracer (#693)
- Fix: Do not throw when Throwable type is not supported for associating errors to a transaction (#692)
6.3.0-alpha.1 #
- Feat: Automatically create transactions when navigating between screens (#643)
6.2.2 #
- Fix: ConcurrentModificationError in when finishing span (#664)
- Feat: Add enableNdkScopeSync Android support (#665)
6.2.1 #
- Fix: sentry_loggingworks now on web (#660)
- Fix: sentry_loggingtimestamps are in UTC (#660)
- Fix: sentry_loggingLevel.Off is never recorded (#660)
- Fix: Rate limiting fallback to retryAfterHeader (#658)
6.2.0 #
- Feat: Integration for logging(#631)
- Feat: Add logger name to SentryLoggerand send errors in integrations to the registered logger (#641)
6.1.2 #
- Fix: Remove is Enum check to support older Dart versions (#635)
6.1.1 #
- Fix: Transaction serialization if not encodable (#633)
6.1.0 #
- Bump: Sentry-Android to 5.3.0 and Sentry-Cocoa to 7.5.1 (#629)
- Fix: event.origin tag for macOS and other Apple platforms (#622)
- Feat: Add current route as transaction (#615)
- Feat: Add Breadcrumbs for Flutters debugPrint(#618)
- Feat: Enrich Dart context with isolate name (#600)
- Feat: Sentry Performance for HTTP client (#603)
- Performance API for Dart/Flutter (#530)
Breaking Changes: #
- SentryEventinherits from the- SentryEventLikemixin
- Scope#transactionsets and reads from the- Scope#spanobject if bound to the Scope
6.1.0-beta.1 #
- Feat: Add current route as transaction (#615)
- Feat: Add Breadcrumbs for Flutters debugPrint(#618)
6.1.0-alpha.2 #
6.1.0-alpha.1 #
- Performance API for Dart/Flutter (#530)
Breaking Changes: #
- SentryEventinherits from the- SentryEventLikemixin
- Scope#transactionsets and reads from the- Scope#spanobject if bound to the Scope
6.0.1 #
- Fix: Set custom SentryHttpClientError when HTTP error is captured without an exception (#580)
- Bump: Android AGP 4.1 (#586)
- Bump: Sentry Cocoa to 7.3.0 (#589)
6.0.0 #
- Fix: Update SentryUseraccording to docs (#561)
- Feat: Enable or disable reporting of packages (#563)
- Bump: Sentry-Cocoa to 7.2.7 (#578)
- Bump: Sentry-Android to 5.1.2 (#578)
- Fix: Read Sentry config from environment variables as fallback (#567)
6.0.0-beta.4 #
Breaking Changes: #
- Feat: Lists of exceptions and threads (#524)
- Feat: Collect more information for exceptions collected via FlutterError.onError(#538)
- Feat: Add maxAttachmentSize option (#553)
- Feat: HTTP breadcrumbs have the request & response size if available (#552)
6.0.0-beta.3 #
- Fix: Re-initialization of Flutter SDK (#526)
- Enhancement: Call toString()on all non-serializable fields (#528)
- Fix: Always call Flutter.onErrorin order to not swallow messages (#533)
- Bump: Android SDK to 5.1.0-beta.6 (#535)
6.0.0-beta.2 #
- Fix: Serialization of Flutter Context (#520)
- Feat: Add support for attachments (#505)
- Feat: Add support for User Feedback (#506)
6.0.0-beta.1 #
- Feat: Browser detection (#502)
- Feat: Enrich events with more context (#452)
- Feat: Add Culture Context (#491)
- Feat: Add DeduplicationEventProcessor (#498)
- Feat: Capture failed requests as event (#473)
- Feat: beforeSendcallback accepts async code (#494)
Breaking Changes: #
- Ref: EventProcessor changed to an interface (#489)
- Feat: Support envelope based transport for events (#391)
- The method signature of Transportchanged fromFuture<SentryId> send(SentryEvent event)toFuture<SentryId> send(SentryEnvelope envelope)
 
- The method signature of 
- Remove Sentry.currentHub(#490)
- Ref: Rename cacheDirSizetomaxCacheItemsand addmaxCacheItemsfor iOS (#495)
- Ref: Add error and stacktrace parameter to logger (#503)
- Feat: Change timespans to Durations in SentryOptions (#504)
- Feat: beforeSendcallback accepts async code (#494)
Sentry Self Hosted Compatibility #
- Since version 6.0.0of thesentry, Sentry's version >= v20.6.0 is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed.
5.1.0 #
- Fix: Merge user from event and scope (#467)
- Feature: Allow setting of default values for in-app-frames via SentryOptions.considerInAppFramesByDefault(#482)
- Bump: sentry-android to v5.0.1 (#486)
- Bump: Sentry-Cocoa to 7.1.3 for iOS and macOS (#488)
5.1.0-beta.1 #
- Fix: Sentry.close()closes native SDK integrations (#388)
- Feat: Support for macOS (#389)
- Feat: Support for Linux (#402)
- Feat: Support for Windows (#407)
- Fix: Mark Sentry.currentHubas deprecated (#406)
- Fix: Set console logger as default logger in debug mode (#413)
- Fix: Use name from pubspec.yaml for release if package id is not available (#411)
- Feat: SentryHttpClienttracks the duration which a request takes and logs failed requests (#414)
- Bump: sentry-cocoa to v7.0.0 (#424)
- Feat: Support for Out-of-Memory-Tracking on macOS/iOS (#424)
- Fix: Trim \u0000from Windows package info (#420)
- Feature: Log calls to print()as Breadcrumbs (#439)
- Fix: distwas read fromSENTRY_DSN, now it's read fromSENTRY_DIST(#442)
- Bump: sentry-cocoa to v7.0.3 (#445)
- Fix: Fix adding integrations on web (#450)
- Fix: Use log()instead ofprint()for SDK logging (#453)
- Bump: sentry-android to v5.0.0-beta.2 (#457)
- Feature: Add withScopecallback to capture methods (#463)
- Fix: Add missing properties language,screenHeightPixelsandscreenWidthPixelstoSentryDevice(#465)
Sentry Self Hosted Compatibility #
- This version of the sentryDart package requires Sentry server >= v20.6.0. This only applies to on-premise Sentry, if you are using sentry.io no action is needed.
5.0.0 #
- Sound null safety
- Fix: event.origin and event.environment tags have wrong value for iOS (#365) and (#369)
- Fix: Fix deprecated registrar.messengercall inSentryFlutterWeb(#364)
- Fix: Enable breadcrumb recording mechanism based on platform (#366)
- Feat: Send default PII options (#360)
- Bump: sentry-cocoa to v6.2.1 (#360)
- Feat: Migration from package_infotopackage_info_plusplugin (#370)
- Fix: Set SentryOptions.debuginsentry(#376)
- Fix: Read all environment variables in sentry(#375)
Breaking Changes: #
- Return type of Sentry.close()changed fromvoidtoFuture<void>andIntegration.close()changed fromvoidtoFutureOr<void>(#395)
- Remove deprecated member enableLifecycleBreadcrumbs. UseenableAppLifecycleBreadcrumbsinstead. (#366)
4.1.0-nullsafety.1 #
- Bump: sentry-android to v4.3.0 (#343)
- Fix: Multiple FlutterError.onError calls in FlutterErrorIntegration (#345)
- Fix: Pass hint to EventProcessors (#356)
- Fix: EventProcessors were not dropping events when returning null (#353)
Breaking Changes: #
- Fix: Plugin Registrant class moved to barrel file (#358)
- This changed the import from import 'package:sentry_flutter/src/sentry_flutter_web.dart';toimport 'package:sentry_flutter/sentry_flutter_web.dart';
- This could lead to breaking changes. Typically it shouldn't because the referencing file is auto-generated.
 
- This changed the import from 
- Fix: Prefix classes with Sentry (#357)
- A couple of classes were often conflicting with user's code.
Thus this change renames the following classes:
- App->- SentryApp
- Browser->- SentryBrowser
- Device->- SentryDevice
- Gpu->- SentryGpu
- Integration->- SentryIntegration
- Message->- SentryMessage
- OperatingSystem->- SentryOperatingSystem
- Request->- SentryRequest
- User->- SentryUser
- Orientation->- SentryOrientation
 
 
- A couple of classes were often conflicting with user's code.
Thus this change renames the following classes:
4.1.0-nullsafety.0 #
- Fix: Do not append stack trace to the exception if there are no frames
- Fix: Empty DSN disables the SDK and runs the App
- Feat: sentry and sentry_flutter null-safety thanks to @ueman and @fzyzcjy
4.0.6 #
- Fix: captureMessage defaults SentryLevel to info
- Fix: SentryEvent.throwable returns the unwrapped throwable instead of the throwableMechanism
- Feat: Support enableNativeCrashHandling on iOS
4.0.5 #
- Bump: sentry-android to v4.0.0
- Fix: Pana Flutter upper bound deprecation
- Fix: sentry_flutter static analysis (pana) using stable version
4.0.4 #
- Fix: Call WidgetsFlutterBinding.ensureInitialized() within runZoneGuarded
4.0.3 #
- Fix: Auto session tracking start on iOS #274
- Bump: Sentry-cocoa to 6.1.4
4.0.2 #
- Fix: Mark session as erroredin iOS #270
- Fix: Pass auto session tracking interval to iOS
- Fix: Deprecated binaryMessenger (MethodChannel member) for Flutter Web
- Ref: Make WidgetsFlutterBinding.ensureInitialized();the first thing the Sentry SDK calls.
- Bump: Sentry-cocoa to 6.0.12
- Feat: Respect FlutterError silent flag #248
- Bump: Android SDK to v3.2.1 #273
4.0.1 #
- Ref: Changed category of Flutter lifecycle tracking #240
- Fix: Envelope length should be based on the UTF8 array instead of String length
4.0.0 #
Release of Sentry's new SDK for Dart/Flutter.
New features not offered by <= v4.0.0:
Dart SDK #
- Sentry's Unified API.
- Complete Sentry's Protocol available.
- Dart SDK docs.
- Automatic HTTP Breadcrumbs for http.Client
- No boilerplate for runZonedGuardedandIsolate.current.addErrorListener
- All events are enriched with Scope's Contexts, this includes Breadcrumbs, tags, User, etc...
Flutter SDK #
- The Flutter SDK is built on top of the Dart SDK, so it includes all the available features, plus
- Flutter SDK docs.
- Automatic NavigatorObserver Breadcrumbs
- Automatic Device's Breadcrumbs through the Android and iOS SDKs or via Sentry's WidgetsBindingObserverwrapper
- No boilerplate for FlutterError.onError
- All events are enriched with Contexts's data, this includes Device's, OS, App info, etc...
- Offline caching
- Release health
- Captures not only Dart and Flutter errors, but also errors caused on the native platforms, Like Kotlin, Java, C and C++ for Android and Swift, ObjC, C, C++ for iOS
- Supports Fatal crashes, Event is going to be sent on App's restart
- Supports split-debug-infofor Android only
- Flutter Android, iOS and limited support for Flutter Web
Improvements:
- Feat: Added a copyWith method to all the protocol classes
Packages were released on sentry pubdev and sentry_flutter pubdev
Sentry Self Hosted Compatibility #
- Since version 4.0.0of thesentry_flutter, Sentry's version >= v20.6.0 is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed.
4.0.0-beta.2 #
- Ref: Remove duplicated attachStackTrace field
- Fix: Flutter Configurations should be able to mutate the SentryFlutterOptions
- Enhancement: Add SentryWidgetsBindingObserver, an Integration that captures certain window and device events.
- Enhancement: Set options.environmenton SDK init based on the flags (kReleaseMode, kDebugMode, kProfileMode or SENTRY_ENVIRONMENT).
- Feature: SentryHttpClient to capture HTTP requests as breadcrumbs
- Ref: Only assign non-null option values in Android native integration in order preserve default values
- Enhancement: Add 'attachThreads' in options. When enabled, threads are attached to all logged events for Android
- Ref: Rename typedef LoggertoSentryLoggerto prevent name clashes with logging packages
- Fix: Scope Event processors should be awaited
- Fix: Package usage as git dependency
Breaking changes #
- Loggertypedef is renamed to- SentryLogger
- attachStackTraceis renamed to- attachStacktrace
4.0.0-beta.1 #
- Fix: StackTrace frames with 'package' uri.scheme are inApp by default #185
- Fix: Missing App's StackTrace frames for Flutter errors
- Enhancement: Add isolateErrorIntegration and runZonedGuardedIntegration to default integrations in sentry-dart
- Fix: Breadcrumb list is a plain list instead of a values list #201
- Ref: Remove deprecated classes (Flutter Plugin for Android) and cleaning up #186
- Fix: Handle immutable event lists and maps
- Fix: NDK integration was being disabled by a typo
- Fix: Missing toList for debug meta #192
- Enhancement: NavigationObserver to record Breadcrumbs for navigation events #197
- Fix: Integrations should be closeable
- Feat: Support split-debug-info for Android #191
- Fix: the event payload must never serialize null or empty fields
- Ref: Make hints optional
Breaking changes #
- Sentry.initand- SentryFlutter.inithave an optional callback argument which runs the host App after Sentry initialization.
- Integrationis an- Interfaceinstead of a pure Function
- Hintsare optional arguments
- Sentry Dart SDK adds an IsolateErrorhandler by default
4.0.0-alpha.2 #
- Enhancement: Contextswere added to theScope#154
- Fix: App. would hang if debugmode was enabled and refactoring ##157
- Enhancement: Sentry Protocol v7
- Enhancement: Added missing Protocol fields, Request,SentryStackTrace...) #155
- Feat: Added attachStackTraceoptions to attach stack traces oncaptureMessagecalls
- Feat: Flutter SDK has the Native SDKs embedded (Android and Apple) #158
Breaking changes #
- Sentry.initreturns a- Future.
- Dart min. SDK is 2.8.0
- Flutter min. SDK is 1.17.0
- Timestamp has millis precision.
- For better groupping, add your own package to the addInAppIncludelist, e.g.options.addInAppInclude('sentry_flutter_example');
- A few classes of the Protocolwere renamed.
Sentry Self Hosted Compatibility #
- Since version 4.0.0of thesentry_flutter,Sentryversion >=v20.6.0is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed.
4.0.0-alpha.1 #
First Release of Sentry's new SDK for Dart/Flutter.
New features not offered by <= v4.0.0:
- Sentry's Unified API.
- Complete Sentry Protocol available.
- Docs and Migration is under review on this PR
- For all the breaking changes follow this PR, they'll be soon available on the Migration page.
Packages were released on pubdev
We'd love to get feedback and we'll work in getting the GA 4.0.0 out soon. Until then, the stable SDK offered by Sentry is at version 3.0.1
3.0.1 #
- Add support for Contexts in Sentry events
3.0.0+1 #
- pubspec.yamland example code clean-up.
3.0.0 #
- Support Web
- SentryClientfrom- package:sentry/sentry.dartwith conditional import
- SentryBrowserClientfor web from- package:sentry/browser_client.dart
- SentryIOClientfor VM and Flutter from- package:sentry/io_client.dart
 
2.3.1 #
- Support non-standard port numbers and paths in DSN URL.
2.3.0 #
- Add breadcrumb support.
2.2.0 #
- Add a stackFrameFilterargument toSentryClient'scapturemethod (96be842).
- Clean-up code using pre-Dart 2 API (91c7706, b01ebf8).
2.1.1 #
- Defensively copy internal maps event attributes to avoid shared mutable state (https://github.com/flutter/sentry/commit/044e4c1f43c2d199ed206e5529e2a630c90e4434)
2.1.0 #
- Support DNS format without secret key.
- Remove dependency on package:quiver.
- The clockargument toSentryClientconstructor should now beClockProvider(but still acceptsClockfor backwards compatibility).
2.0.2 #
- Add support for user context in Sentry events.
2.0.1 #
- Invert stack frames to be compatible with Sentry's default culprit detection.
2.0.0 #
- Fixed deprecation warnings for Dart 2
- Refactored tests to work with Dart 2
1.0.0 #
- first and last Dart 1-compatible release (we may fix bugs on a separate branch if there's demand)
- fix code for Dart 2
0.0.6 #
- use UTC in the timestampfield
0.0.5 #
- remove sub-seconds from the timestamp
0.0.4 #
- parse and report async gaps in stack traces
0.0.3 #
- environment attributes
- auto-generate event_id and timestamp for events
0.0.2 #
- parse and report stack traces
- use x-sentry-error HTTP response header
- gzip outgoing payloads by default
0.0.1 #
- basic ability to send exception reports to Sentry.io



