Asset Bundle Instrumentation

AssetBundle instrumentation provides insight into how long your app takes to load its assets, such as files.

The instrumentation starts a span from an active transaction that's bound to the scope of the following calls:

  • load and loadString - The SDK sets the span operation to
  • loadStructuredData - The SDK sets the span operation to serialize.

Before starting, ensure:

  1. The Sentry Flutter SDK is initialized. Learn more here.
  2. Performance Monitoring is set up. Learn more here.

Wrap the runApp method with a DefaultAssetBundle and SentryAssetBundle.

import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> main() async {
  await SentryFlutter.init(
    (options) => options.dsn = '',
      appRunner: () => runApp(
          bundle: SentryAssetBundle(),
          child: MyApp(),

final transaction = Sentry.startTransaction(
  bindToScope: true,

final text = await DefaultAssetBundle.of(context).loadString('assets/lorem-ipsum.txt');

await transaction.finish(status: const SpanStatus.ok());

To view the recorded transaction, log into and open your project. Clicking Performance will open a page with transactions, where you can select the just recorded transaction with the name asset-bundle-transaction.

The loadStructuredData is an opt-out feature. The following example shows how to disable it:

import 'package:sentry_flutter/sentry_flutter.dart';

SentryAssetBundle(enableStructuredDataTracing: false)
Help improve this content
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").