fullstory_flutter 0.71.0 copy "fullstory_flutter: ^0.71.0" to clipboard
fullstory_flutter: ^0.71.0 copied to clipboard

Visual capture support for Fullstory session replay

fullstory_flutter #

fullstory_flutter provides Fullstory autocapture capabilities to support session replay by integrating with the existing Fullstory Native Mobile SDKs.

This plug-in is intended to be used in conjunction with Fullstory for Mobile Apps.

⚠️ This plugin is currently in Early Access. Some breaking changes are possible before the 1.0.0 release. You may encounter bugs in visual session replay during the Early Access.

Setting up Flutter session replay #

  1. Update to Flutter 3.32 or higher.

  2. Follow the directions to set up the public fullstory_flutter plugin and ensure it is working as expected.

  3. Update Android and iOS SDKs to a minimum version of 1.68.0.

  4. In the app's main.dart (or wherever the app is started) replace runApp($YourAppHere$) with runFullstoryApp($YourAppHere$) and add import 'package:fullstory_flutter/fullstory_flutter.dart';. If you use runWidget, runFullstoryWidget should be used instead.

  5. Run the app again and ensure that a session is successfully captured.

Optional additional setup #

If you wish to enable additional data capture, such as pages, crashes, and network requests, please follow the steps in our developer documentation.

Custom classes and attributes #

Use FSCustomAttributes to add custom classes or attributes to your widgets. Wrap the widget you want to annotate with FSCustomAttributes and add any classes or attributes you wish to include.

Obfuscation support #

If you use --obfuscate to obfuscate your release app, follow these steps to see unobfuscated selectors in selectors in replay. This is necessary for Privacy Rules and other Fullstory features to work.

Note: These steps bundle debfuscation mapping for public class names into app binaries.

  1. Before building, set an environment variable so Fullstory iOS can find the mapping file using export FS_FLUTTER_OBFUSCATION_MAP=/path/to/file.json
  2. When building set --extra-gen-snapshot-options=--save-obfuscation-map=/path/to/file.json as an additional flag.

Disable obfuscation support #

To disable obfuscation support, use the following build-time configuration:

Android: Pass -P flutterSelectorDeobfuscationEnabled=false iOS: Do not set FS_FLUTTER_OBFUSCATION_MAP

Note: This will typically result in fully masked playback.

Example usage #

FSCustomAttributes {
  classes: ['class1', 'class2'],
  attributes: {'field1': 'value1'},
  child: YourAnnotatedWidget(),
}

Known Issues #

  • Not compatible with tools and frameworks like Patrol, which also use custom bindings. Please contact us to determine a way to combine our binding with your framework’s.
  • Apps which have multiple FlutterViews on screen at the same time aren’t supported yet. Please contact us if you use multiple FlutterViews.
  • You may see performance degradation, especially in heavy scrolling or during transitions. Upcoming versions will include performance improvements. --release or --profile builds should perform much better.