These pages show Cloud's URLs. Sign in on Hosted and they show your server's.

Migrating to Dartastic

Leaving Sentry or Datadog does not have to be a rewrite. For Flutter and Dart apps there are three routes, and you can stop at any of them.

RouteWhat changes in your appWhat you get
Add a Dartastic Labs bridgeOne package and one line. Your vendor SDK stays, and keeps sending.What your SDK captures, as standard OTel logs and spans.
Change your Sentry DSNOne string. Your Sentry SDK stays and sends to Dartastic.Errors, transactions and sessions in your Observatory.
Move to Native OTelReplace the vendor SDK.Everything: native crashes, jank attribution, every RUM level.

Want the cost first? The calculator prices your workload on Dartastic, Sentry and Datadog.

Add a Dartastic Labs bridge

A bridge is a Dart package that copies what your vendor SDK captures into standard OpenTelemetry, inside your app. Your vendor keeps getting everything it gets today, so you can run both and compare on your own sessions. The packages come from Dartastic Pub: dart pub token add https://pub.dartastic.io with a Pub token.

yaml
dependencies:
  otel_sentry:
    hosted: https://pub.dartastic.io

Sentry: otel_sentry

One line inside SentryFlutter.init. Every event and breadcrumb Sentry captures also becomes an OpenTelemetry log record, on the trace and span that were active when it happened.

dart
import 'package:dartastic_opentelemetry/dartastic_opentelemetry.dart';
import 'package:flutter/material.dart';
import 'package:otel_sentry/otel_sentry.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> main() async {
  await OTel.initialize(serviceName: 'my-app');
  await SentryFlutter.init(
    (options) {
      options.dsn = const String.fromEnvironment('SENTRY_DSN');
      installOTelSentryBridge(options); // the one new line
    },
    appRunner: () => runApp(const MyApp()),
  );
}

Your existing beforeSend and beforeBreadcrumb keep running, so your scrubbing and sampling stay as they are. If breadcrumbs are too much traffic, pass bridgeBreadcrumbs: false.

Datadog: otel_datadog

This bridge wraps Datadog's RUM SDK. Call rum where your code calls DatadogSdk.instance.rum today. Each call still goes to Datadog, and also emits OpenTelemetry: errors, actions and timings as logs, and each view as a span. Set up OTel with OTel.initialize first, as in the Sentry example.

dart
import 'package:datadog_flutter_plugin/datadog_flutter_plugin.dart';
import 'package:otel_datadog/otel_datadog.dart';

final rum = OTelDatadogRum(DatadogSdk.instance.rum);

rum.addAction(RumActionType.tap, 'checkout');
try {
  await checkout();
} catch (e, st) {
  rum.addError(e, RumErrorSource.source, stackTrace: st);
  rethrow;
}

Other vendors

Dartastic Labs has bridges for New Relic, Bugsnag, Embrace, Dynatrace, Honeycomb, Splunk and more. They are all in the Dartastic Labs catalog.

Your vendor's library integrations

Each of these vendor packages has a Dartastic Labs package that does the same job in standard OTel.

If you useAdd
sentry_diootel_dio
sentry_loggingotel_logging
sentry_sqfliteotel_sqflite
sentry_driftotel_drift
sentry_hiveotel_hive
sentry_isarotel_isar
sentry_linkotel_graphql
sentry_grpcotel_grpc
datadog_diootel_dio
datadog_tracking_http_clientotel_http
datadog_grpc_interceptorotel_grpc
datadog_gql_linkotel_graphql_flutter

Change your Sentry DSN

Your Sentry SDK speaks a protocol, and Dartastic understands it. Point the SDK at Dartastic with a new DSN and your errors, transactions and sessions land in your Observatory. No new package, and no code beyond that one string. Any Sentry SDK works, in any language.

  1. In Control Room, open Sentry DSNs and mint a DSN. It takes the keys.manage permission.
  2. Set that DSN where your app sets its Sentry DSN today.
  3. Run your app, and look for your errors under Issues.
dart
await SentryFlutter.init(
  (options) {
    options.dsn = const String.fromEnvironment('DARTASTIC_SENTRY_DSN');
  },
  appRunner: () => runApp(const MyApp()),
);

What comes across

From your Sentry SDKIn Dartastic
Errors and crashesIssues, with the stack trace your SDK sent
Transactions and their spansTraces
Release health sessionsSessions and crash-free rate

What stays behind

  • Session Replay and profiles. Replay levels come with Native OTel.
  • Source map uploads and your Sentry issue history.
  • Sentry's own issue states, assignments and alert rules. Set alerts up in Dartastic.

Sentry traffic counts as ingress, like every other byte you send. See pricing.

Move to Native OTel

The last step replaces the vendor SDK with Dartastic's, written in Dart and Rust. This is where you get native crash capture, jank attribution down to the widget, targeted recording and every replay level. Add OpenTelemetry to your app has the full setup.

dart
// Before, with Sentry
await SentryFlutter.init((options) => options.dsn = dsn, appRunner: start);
Sentry.captureException(e, stackTrace: st);

// Before, with Datadog
await DatadogSdk.instance.initialize(config, TrackingConsent.granted);
DatadogSdk.instance.rum?.addError(e, RumErrorSource.source, stackTrace: st);

// After
await DOTel.initialize(serviceName: 'my-app', serviceVersion: '1.0.0');
DartasticErrorTracker.recordError(e, st);

DartasticViewObserver() takes the place of SentryNavigatorObserver() or DatadogNavigationObserver in navigatorObservers. Your HTTP, gRPC, database and logging integrations become the Dartastic Labs packages above.

Drop your symbol upload step

Remove sentry_dart_plugin or datadog-ci flutter-symbols upload from your build. Build obfuscated with symbols, and publish the release to your private Dartastic Pub with its .symbols: Dartastic reads them from there, with no upload step.

shell
flutter build apk --release --obfuscate --split-debug-info=symbols/

Where to find what you know

In your vendorIn Dartastic
Sentry Issues, Datadog Error TrackingIssues
Sentry Release HealthSessions and crash-free rate for each build
Datadog RUM ExplorerSessions
Datadog RUM ViewsScreens
Sentry Traces, Datadog APMTraces
Sentry Session Replay, Datadog Session ReplayReplay, at the level you choose
Sentry Seer, Bits AIDartastic AI
Sentry Alerts, Datadog MonitorsAlerts

Sentry and Datadog are trademarks of their respective owners, named here to help you move, not to imply affiliation. See how Dartastic compares.