NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3336 most downloaded on pub.dev
Sentry integration to use feature flags from Firebase Remote Config.
Last release 5 days ago
02 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 36 of 36 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
70 releases · first in 2025
One column per month.
Add os and device attributes to Flutter logs
Flutter Web: add debug ids to events
3.0.0 or higher// 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();
});
}
message parameter to captureException() (#2882)SentryOptions.includeModuleInStackTrace = true to enable this. This may change grouping of exceptions.Version 9.0.0 marks a major release of the Sentry Dart/Flutter SDKs containing breaking changes.
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:
3.5.0 and 3.24.0 respectivelyPlease carefully read through the migration guide in the Sentry docs on how to upgrade from version 8 to version 9
v3.5.0 and Flutter v3.24.0 (#2643)LoadImagesListIntegration to LoadNativeDebugImagesIntegration (#2833)crashpad by default and breakpad for Windows ARM64 (#2791)
SENTRY_NATIVE_BACKEND environment variable will override the defaults.attachScreenshotOnlyWhenResumed (#2664)beforeScreenshot (#2662)beforeCaptureScreenshotenableTracing (#2695)options.autoAppStart and setAppStartEnd (#2680)2.24.0 and use QueryInterceptor instead of QueryExecutor (#2679)BeforeSendTransactionCallback now has a Hint parameterdart:html usage in favour of package:web (#2710)Hint object, which can be read in beforeSend/beforeSendTransaction callbacks via hint.response.dio integration is supported.anrEnabled to true by default (#2878)const constructors anymore.copyWith and clone methods of SDK classes were deprecated.// old
options.beforeSend = (event, hint) {
event = event.copyWith(release: 'my-release');
return event;
}
// new
options.beforeSend = (event, hint) {
event.release = 'my-release';
return event;
}
SentryLogger has been renamed to SdkLogCallback and can be accessed through options.log now.Sentry.logger:// 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,
),
);
},
);
SentryNavigatorObserver - each navigation event starts a new trace.SentryNavigatorObserver on non-web platforms - a new trace is started from app
lifecycle hooks.SentryNavigatorObserver - the same trace ID is reused until the page is
refreshed or closed.SentryNavigatorObserver;warning by default when debug = true (#2836)SentryLevel.errorSentryLevel.warningoptions.groupException = truefeedback client report for dropped feedback eventsfeedback client report for errors when using HttpTransportErrors caught by OnErrorIntegration should be unhandled by default
The copyWith and clone methods of SDK classes were deprecated.
SentryNavigatorObserver - each navigation event starts a new trace.SentryNavigatorObserver on non-web platforms - a new trace is started from app
lifecycle hooks.SentryNavigatorObserver - the same trace ID is reused until the page is
refreshed or closed.FeatureFlagIntegration (#2825)// Manually track a feature flag
Sentry.addFeatureFlag('my-feature', true);
// 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,
),
);
},
);
const constructors anymore.copyWith and clone methods of SDK classes were deprecated.warning by default when debug = true (#2836)SentryLevel.errorSentryLevel.warninggroupExceptions=trueanrEnabled enabled per default (#2878)LoadImagesListIntegration to LoadNativeDebugImagesIntegration (#2833)other from SentryRequest (#2879)### Enhancements - Replay: Mask RichText Widgets
The old SentryLogger has been renamed to SdkLogCallback and can be accessed through options.log now.
SentryLogger has been renamed to SdkLogCallback and can be accessed through options.log now.Sentry.logger:// 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),
});
Add hasSize guard when using a renderObject in SentryUserInteractionWidget
hasSize guard when using a renderObject in SentryUserInteractionWidget (#2946)### Fixes - Fix feature flag model keys
build(deps): bump ruby/setup-ruby from 1.233.0 to 1.237.0 (#2908) by @dependabot
Your coding agent can read these notes before it upgrades. Set up the MCP server →