sentry_flutter 8.11.0-beta.2
sentry_flutter: ^8.11.0-beta.2 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 #
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 tofalsewhen 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 thesetUser(SentryUser? user)instead.attachements, using theattachmentsinstead.
- Remove deprecated field from the
SentryFlutterOptionsclass.anrTimeoutIntervalMillis, using theanrTimeoutIntervalinstead.autoSessionTrackingIntervalMillis, using theautoSessionTrackingIntervalinstead.
- 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 thesetUser(SentryUser? user)instead.attachements, using theattachmentsinstead.
- Remove deprecated field from the
SentryFlutterOptionsclass.anrTimeoutIntervalMillis, using theanrTimeoutIntervalinstead.autoSessionTrackingIntervalMillis, using theautoSessionTrackingIntervalinstead.
- 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) SocketExceptionandFileSystemExceptionwithOSErrors report theOSErroras 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 ifdsnis 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 theSentryEventLikemixinScope#transactionsets and reads from theScope#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 theSentryEventLikemixinScope#transactionsets and reads from theScope#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->SentryAppBrowser->SentryBrowserDevice->SentryDeviceGpu->SentryGpuIntegration->SentryIntegrationMessage->SentryMessageOperatingSystem->SentryOperatingSystemRequest->SentryRequestUser->SentryUserOrientation->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 toSentryLoggerattachStackTraceis renamed toattachStacktrace
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.initandSentryFlutter.inithave an optional callback argument which runs the host App after Sentry initialization.Integrationis anInterfaceinstead of a pure FunctionHintsare 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 aFuture.- 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
SentryClientfrompackage:sentry/sentry.dartwith conditional importSentryBrowserClientfor web frompackage:sentry/browser_client.dartSentryIOClientfor VM and Flutter frompackage: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



