Hive Database Instrumentation
Learn more about the Sentry Hive Database Instrumentation for the Flutter SDK.
This feature is currently in Beta. Beta features are still in progress and may have bugs. We recognize the irony.
(New in version 7.13.1)
Hive is a lightweight and fast key-value database for Flutter and Dart applications. The sentry_hive package provides Hive
support for database instrumentation and allows you to track the performance of your queries.
The created spans will be attached to the transaction on the scope - if no transaction is on the scope the Hive span will not be sent to Sentry.
Before starting, ensure:
- The Sentry Flutter SDK is initialized. Learn more here.
- Performance Monitoring is set up. Learn more here.
Add the sentry_hive
dependency to install the Hive database instrumentation.
pubspec.yaml
dependencies:
sentry_flutter: ^8.2.0
sentry_hive: ^8.2.0
path_provider: ^2.0.0
Use SentryHive
to initialize the instance:
import 'package:path_provider/path_provider.dart';
import 'package:sentry_hive/sentry_hive.dart';
final appDir = await getApplicationDocumentsDirectory();
SentryHive.init(appDir.path);
import 'package:sentry_hive/sentry_hive.dart';
Future<void> hiveTest() async {
final tr = Sentry.startTransaction(
'hiveTest',
'db',
bindToScope: true,
);
final appDir = await getApplicationDocumentsDirectory();
SentryHive.init(appDir.path);
final catsBox = await SentryHive.openBox<Map>('cats');
await catsBox.put('fluffy', {'name': 'Fluffy', 'age': 4});
await catsBox.put('loki', {'name': 'Loki', 'age': 2});
await catsBox.clear();
await catsBox.close();
SentryHive.close();
await tr.finish(status: const SpanStatus.ok());
}
To view the recorded transaction, log into sentry.io and open your project. Clicking Performance will open a page with transactions, where you can select the just recorded transaction with the name hiveTest
.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").