uxlens // session-replay for flutter3 apps live · 12,481 sessions today
Flutter plugin

Add uxLens to your app.

uxLens ships as a Flutter plugin: session replay, heatmaps, and on-device privacy masking for iOS and Android, in one package. Here is the whole install.

uxlens_sdkView on pub.dev
Install the Flutter plugin

From zero to recording in three steps.

Under two minutes, no backend to stand up. Here is the whole integration.

  1. 1

    Add the package

    Pull the SDK from pub.dev into your Flutter project.

    terminal
    flutter pub add uxlens_sdk
  2. 2

    Get your API key

    Register an app in the dashboard to mint a key. Every app gets its own key and its own sessions.

    Register an app →
  3. 3

    Initialize and wrap your app

    Start uxLens before runApp, then wrap your app so capture, masking, and upload all run automatically.

    lib/main.dart
    import 'package:flutter/material.dart';
    import 'package:uxlens_sdk/uxlens_sdk.dart';
    
    void main() {
      UxLens.start(
        config: UxLensConfig(apiKey: 'YOUR_API_KEY'),
      );
    
      runApp(
        UxLensRecorder(
          child: MaterialApp(
            navigatorObservers: [UxLens.instance!.navigatorObserver],
            home: const HomeScreen(),
          ),
        ),
      );
    }

That's the whole install. Sessions start showing up in your dashboard the moment your app runs.

Going further

Optional, when you need it.

The defaults already mask passwords and payment fields. These are the knobs for everything else.

Mask any widget

Wrap anything private in UxLensMask. It's blacked out on-device before a frame is ever encoded or uploaded.

dart
UxLensMask(
  child: Text(user.cardNumber),
)

Record WebViews safely

Swap WebViewWidget for UxLensWebView. Payment pages are auto-detected and suppressed, no config needed.

dart
UxLensWebView(
  controller: controller,
)

Sample a fraction of sessions

Record a share of sessions to control volume. Sampled-out sessions cost nothing on-device and never upload.

dart
UxLensConfig(
  apiKey: 'YOUR_API_KEY',
  sampleRate: 0.3,
)

Add your own masking rules

Extend the built-in keyword list with fields specific to your app. Matches are masked automatically.

dart
UxLensConfig(
  apiKey: 'YOUR_API_KEY',
  sensitiveLabelKeywords: [
    'account balance',
    'member id',
  ],
)