HeronSignal Flutter

Flutter SDK for HeronSignal mobile analytics and diagnostics.

Use it to send mobile screens, taps, business events, logs, and handled errors to HeronSignal from Flutter apps.

Install

dependencies:
  heronsignal_flutter: ^0.1.5

Dashboard setup

Mobile apps do not use website domains. Before sending events, register your app profile in HeronSignal:

  1. Open Dashboard → Install → Mobile SDK.
  2. Add your Android package name, for example com.company.app.
  3. Copy your workspace public key.

Usage

import 'package:flutter/material.dart';
import 'package:heronsignal_flutter/heronsignal_flutter.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await HeronSignal.init(
    publicKey: "pk_your_workspace_key",
    apiUrl: "https://api.heronsignal.com",
  );

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: [
        HeronSignalNavigatorObserver(),
      ],
      routes: {
        "/": (_) => const HomeScreen(),
      },
    );
  }
}

Track important actions

HeronSignal.screen("Home");

HeronSignal.tap("Request demo button", data: {
  "screen": "Home",
});

HeronSignal.event("demo_requested", {
  "location": "hero",
});

HeronSignal.log("warn", "Checkout retry happened", {
  "area": "checkout",
});

try {
  await submitLeadForm();
} catch (error, stackTrace) {
  HeronSignal.captureError(error, stackTrace: stackTrace);
}

Automatic screen tracking

Use HeronSignalNavigatorObserver when your app uses named Flutter routes. It sends a screen event when a route is pushed, replaced, or popped back to.

If your app does not use named routes, call HeronSignal.screen("Screen name") manually or provide a routeNameBuilder.

Local Android emulator testing

If your backend runs locally on your machine, Android emulators should use 10.0.2.2 instead of localhost:

await HeronSignal.init(
  publicKey: "pk_your_workspace_key",
  apiUrl: "http://10.0.2.2:3000",
  debug: true,
);

Use https://api.heronsignal.com for production.

More docs