Sentry Plus
This package includes a collection of community maintained integrations for Sentry.
Please note, that because this has integrations for file and network io, it depends on specific versions of Dart. Therefor, this package always raises the minimal required Dart version when there's a change in the file or network io API of Dart.
Automatic integrations
Add all automatic integrations
import 'package:sentry_plus/sentry_plus.dart';
Future<void> main() {
// also works for SentryFlutter.init
return Sentry.init(
(options) {
options.addSentryPlus();
// other configuration omitted
},
appRunner: () {
// app code
},
);
}
File tracing
This enables automatic creation of performance traces for most file IO. It includes traces for reading, writing, modifying and deleting files.
This is only available on non-web platforms.
import 'package:sentry_plus/sentry_plus.dart';
Future<void> main() {
// also works for SentryFlutter.init
return Sentry.init(
(options) {
// Add tracing for files
options.addFileTracing();
// other configuration omitted
},
appRunner: () {
// app code
},
);
}
HTTP tracing
Enable automatic creation of performance traces for HTTP requests for dart:io
platforms.
- This also works for the
http
anddio
packages. - This also captures requests from Flutters
Image.network
widget
This is only available on non-web platforms.
Remarks:
Make sure to disable performance tracing for the http
or dio
packages, if you're using them. Otherwise you're creating two traces for the same request.
import 'package:sentry_plus/sentry_plus.dart';
Future<void> main() {
// also works for SentryFlutter.init
return Sentry.init(
(options) {
// Add tracing for http
options.addHttpTracing();
// other configuration omitted
},
appRunner: () {
// app code
},
);
}
UnhandledEventProcessor
This event processor marks all exceptions caught by Sentry as unhandled: true
. This kinda goes against Sentrys typical usage of it, as unhandled: true
means that the application did a hard crash, which Flutter applications
typically don't do.
import 'package:sentry_plus/sentry_plus.dart';
Future<void> main() {
// also works for SentryFlutter.init
return Sentry.init(
(options) {
options.addEventProcessor(UnhandledEventProcessor());
// other configuration omitted
},
appRunner: () {
// app code
},
);
}
Manual integrations
dart:convert
This repo includes some utilities to make it easier to add performance traces
for conversion done by dart:convert
.
import 'package:sentry_plus/sentry_plus.dart';
final List<int> data = [/* ...*/];
// call the extension method `wrapWithTraces()` on a codec or converter
final decoder = utf8.decoder.wrapWithTraces();
final converted = decoder.convert(data);
Design & support philosophy
This code differs from Sentrys design and support philosophy:
- This code doesn't try to be as backwards compatible as possible. This enables this code to make use of newer features.
- This code doesn't try to stay free of dependencies. Low quality dependencies are still not allowed, though.
- This code has no guarantees for API stability
- When comparable features are implemented in (or moved to) Sentry, it will be removed from this package.
- Features & integrations should be easy to integrate and use