Releases: getsentry/sentry-dart
8.10.0-beta.2
Fixes
- Temporarily disable Windows native error & obfuscation support (#2363)
8.10.0-beta.1
Features
-
Emit
transaction.data
insidecontexts.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()
orSentryUnmask()
widgets to mask/unmask them, respectively. For example:Β SentryUnmask(Text('Not secret at all'));
-
Support
captureFeedback
(#2230)- Deprecated
Sentry.captureUserFeedback
, usecaptureFeedback
instead. - Deprecated
Hub.captureUserFeedback
, usecaptureFeedback
instead. - Deprecated
SentryClient.captureUserFeedback
, usecaptureFeedback
instead. - Deprecated
SentryUserFeedback
, useSentryFeedback
instead.
- 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
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
- Metrics API (#2312)
Dependencies
8.9.0 (Stable)
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 tofalse
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
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 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
ignoreRoutes
parameter 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
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
andignoreErrors
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 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://[email protected]/add-your-dsn-here'; options.proxy = SentryProxy( type: SenryProxyType.http, host: 'localhost', port: 8080, ); }, // Init your App. appRunner: () => runApp(MyApp()), ); }
- Configure a
Improvements
- Deserialize and serialize unknown fields (#2153)
Dependencies
8.6.0
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
toFlutterError
orminified:nE
toFlutterError
- 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
tofalse
in your Sentry options - You can add your custom exception identifier if there are exceptions that we do not identify out of the box
- Example: transforms issue titles from
// 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 thetracesSampleRate
andtracesSampler
options. If you want to enable performance monitoring, please set
thetracesSampleRate
to a sample rate of your choice, or provide a sampling function astracesSampler
option
instead. If you want to disable performance monitoring, remove thetracesSampler
andtracesSampleRate
options.
- 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.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
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
reportViewHierarchyIdentifiers
to 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
autoAppStarts
isfalse
andsetAppStartEnd
has not been called, the app start event processor will now return early instead of waiting forgetAppStartInfo
to finish
Improvements
- Set dart runtime version with parsed
Platform.version
(#2156)