Overview

This package is an extension to the datadog_flutter_plugin. It allows Real User Monitoring to monitor web views created by the flutter_inappwebview package and eliminate blind spots in your hybrid Flutter applications.

Warning

This plugin does not currently support Flutter Web

Instrumenting your web views

The RUM Flutter SDK provides APIs for you to control web view tracking when using the flutter_inappwebview package.

Add both the datadog_inappwebview_tracking package and the flutter_inappwebview package to your pubspec.yaml:

dependencies:
  flutter_inappwebview: ^6.1.5
  datadog_flutter_plugin: ^2.8.0
  datadog_inappwebview_tracking: ^1.0.0

InAppWebView

To instrument an InAppWebView, add the DatadogInAppWebViewUserScript to your initialUserScripts, and call the trackDatadogEvents extension method during the onWebViewCreated callback:

InAppWebView(
  // Other settings...
  initialUserScripts: UnmodifiableListView([
    DatadogInAppWebViewUserScript(
      datadog: DatadogSdk.instance,
      allowedHosts: {'shopist.io'},
    ),
  ]),
  onWebViewCreated: (controller) async {
    controller.trackDatadogEvents(DatadogSdk.instance);
  },
)

InAppBrowser

Warning

InAppBrowser is not tracked on Android 33+ because of this bug. This will be fixed by plugin versions that depends on flutter_inappwebview 6.2.0.

To instrument an InAppBrowser, add an override for onBrowserCreated and call the trackDatadogEvents extension method on webViewController, then add a DatadogInAppWebViewUserScript to the initialUserScripts when creating your custom InAppBrowser:

class MyInAppBrowser extends InAppBrowser {
  MyInAppBrowser({super.windowId, super.initialUserScripts});

  @override
  void onBrowserCreated() {
    webViewController?.trackDatadogEvents(DatadogSdk.instance);
    super.onBrowserCreated();
  }
}

// Browser creation
_browser = MyInAppBrowser(
  initialUserScripts: UnmodifiableListView(
    [
      DatadogInAppWebViewUserScript(
        datadog: DatadogSdk.instance,
        allowedHosts: {'shopist.io'},
      ),
    ],
  ),
);