Skip to content

Releases: getsentry/sentry-dart

8.10.0-beta.2

16 Oct 12:57
Compare
Choose a tag to compare
8.10.0-beta.2 Pre-release
Pre-release

Fixes

  • Temporarily disable Windows native error & obfuscation support (#2363)

8.10.0-beta.1

15 Oct 12:20
Compare
Choose a tag to compare
8.10.0-beta.1 Pre-release
Pre-release

Features

  • Emit transaction.data inside contexts.trace.data (#2284)

  • Block reporting of app start metrics 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() or SentryUnmask() widgets to mask/unmask them, respectively. For example:

    Β SentryUnmask(Text('Not secret at all'));
  • Support captureFeedback (#2230)

    • Deprecated Sentry.captureUserFeedback, use captureFeedback instead.
    • Deprecated Hub.captureUserFeedback, use captureFeedback instead.
    • Deprecated SentryClient.captureUserFeedback, use captureFeedback instead.
    • Deprecated SentryUserFeedback, use SentryFeedback instead.
  • 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 onErrorSampleRate is 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 fetchNativeAppStart should return null (#2340)
  • Error when calling SentryFlutter.reportFullyDisplayed() twice (#2339)
  • TTFD measurements should only be added for successful TTFD spans (#2348)

Deprecate

Dependencies

8.9.0 (Stable)

09 Sep 13:52
a00e005
Compare
Choose a tag to compare

Features

  • Session replay Alpha for Android and iOS (#2208, #2269, #2236, #2275, #2270).
    To try out replay, you can set following options, now available in Beta to organizations Free, Team and Business (except Enterprise, talk to you sales person)):

    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 key specified. (#2242)

  • Add enableDartSymbolication option 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.
    • true by default but automatically set to false when using SentryFlutter.init() because the SentryFlutter fetches debug images from the native SDK integrations.

Dependencies

Fixes

  • Only access renderObject if hasSize is true (#2263)

8.8.0

27 Aug 08:00
Compare
Choose a tag to compare

Features

  • Add SentryFlutter.nativeCrash() using MethodChannels for Android and iOS (#2239)
    • This can be used to test if native crash reporting works
  • Add ignoreRoutes parameter to SentryNavigatorObserver. (#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

13 Aug 15:25
Compare
Choose a tag to compare
8.8.0-alpha.1 Pre-release
Pre-release

Features

  • iOS Session Replay Alpha (#2209)
  • Android replay touch tracking support (#2228)
  • Add ignoreRoutes parameter to SentryNavigatorObserver. (#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

09 Aug 11:46
Compare
Choose a tag to compare

Warning

Due to a bug (getsentry/sentry-cocoa#4280) in sentry-cocoa 8.33.0 used in this release, it is required to upgrade to 8.8.0 or newer for Flutter projects. If you keep using 8.7.0 in a Flutter project, your build will fail because sentry-cocoa 8.33.0 has been deprecated.

Features

  • Add support for span level measurements. (#2214)
  • Add ignoreTransactions and ignoreErrors to options (#2207)
    await SentryFlutter.init(
      (options) {
        options.dsn = 'https://[email protected]/0';
        options.ignoreErrors = ["my-error", "^error-.*\$"];
        options.ignoreTransactions = ["my-transaction", "^transaction-.*\$"];
        ...
      },
      appRunner: () => runApp(MyApp()),
    );
  • Add proxy support (#2192)
    • Configure a SentryProxy object and set it on SentryFlutter.init
    import 'package:flutter/widgets.dart';
    import 'package:sentry_flutter/sentry_flutter.dart';
    
    Future<void> main() async {
      await SentryFlutter.init(
        (options) {
          options.dsn = 'https://[email protected]/add-your-dsn-here';
          options.proxy = SentryProxy(
            type: SenryProxyType.http,
            host: 'localhost',
            port: 8080,
          );
        },
        // Init your App.
        appRunner: () => runApp(MyApp()),
      );
    }

Improvements

  • Deserialize and serialize unknown fields (#2153)

Dependencies

8.6.0

01 Aug 13:28
Compare
Choose a tag to compare

If you want to try Session Replay Android Alpha, see our alpha release: https://github.com/getsentry/sentry-dart/releases/tag/8.6.0-alpha.2

Improvements

  • Add error type identifier to improve obfuscated Flutter issue titles (#2170)
    • Example: transforms issue titles from GA to FlutterError or minified:nE to FlutterError
    • This is enabled automatically and will change grouping if you already have issues with obfuscated titles
    • If you want to disable this feature, set enableExceptionTypeIdentification to false in 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()));

Deprecated

  • Deprecate enableTracing (#2199)
    • The enableTracing option has been deprecated and will be removed in the next major version. We recommend removing it
      in favor of the tracesSampleRate and tracesSampler options. If you want to enable performance monitoring, please set
      the tracesSampleRate to a sample rate of your choice, or provide a sampling function as tracesSampler option
      instead. If you want to disable performance monitoring, remove the tracesSampler and tracesSampleRate options.

Dependencies

8.6.0-alpha.2

24 Jul 18:08
Compare
Choose a tag to compare
8.6.0-alpha.2 Pre-release
Pre-release

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.errorSampleRate = 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

24 Jul 13:54
Compare
Choose a tag to compare

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)

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

15 Jul 15:13
Compare
Choose a tag to compare

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() and SentryFlutter.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 reportViewHierarchyIdentifiers to enable or disable the option
  • 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 autoAppStarts is false and setAppStartEnd has not been called, the app start event processor will now return early instead of waiting for getAppStartInfo to finish

Improvements

  • Set dart runtime version with parsed Platform.version (#2156)

Dependencies

Deprecated

  • User segment is now deprecated and will be removed in version 9.0.0. Use a custom tag or context instead. (#2119)
  • Deprecate setExtra and removeExtra (#2159)
    • Use the Contexts structure via setContexts instead