Asset Bundle Instrumentation

Learn more about the Sentry App Start Instrumentation for the Flutter SDK.

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 file.read.
  • loadStructuredData - The SDK sets the span operation to serialize.

Before starting, ensure:

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

Wrap the runApp method with a DefaultAssetBundle and SentryAssetBundle.

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

Future<void> main() async {
  await SentryFlutter.init(
    (options) => options.dsn = 'https://examplePublicKey@o0.ingest.sentry.io/0',
      appRunner: () => runApp(
        DefaultAssetBundle(
          bundle: SentryAssetBundle(),
          child: MyApp(),
        ),
    ),
  );
}

Copied
final transaction = Sentry.startTransaction(
  'asset-bundle-transaction',
  'load',
  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 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 asset-bundle-transaction.

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

Copied
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").