monitoring_sdk Free
App monitoring abstraction with system logger, noop for build_prepare, and per-vendor implementations.
Version: 1.0.0
Variables
| Variable | Type | Default | Description |
|---|---|---|---|
| appName | string | — | The name of your application |
| isForMonorepo | boolean | true | Whether this is being generated as part of a monorepo |
Architecture
The monitoring system uses an API/Impl/Noop pattern with vendor-specific bricks:
- monitoring_api — Vendor-agnostic contracts (
AppMonitoring,MonitoringLevel) - monitoring_impl — System logger implementation with global error handlers
- monitoring_noop — No-op implementation for release builds (via
build_prepareswap) - Vendor bricks — Per-vendor implementations (selected via multi-select during monorepo generation)
Vendor Bricks
| Brick | Vendor | Key Feature |
|---|---|---|
crashlytics_monitoring_impl | Firebase Crashlytics | Flutter error capture, breadcrumbs |
sentry_monitoring_impl | Sentry | Full tracing, configurable DSN |
newrelic_monitoring_impl | New Relic | Interaction tracking, distributed tracing |
grafana_monitoring_impl | Grafana (Loki+Tempo) | OTLP-compliant tracing, log buffering |
Multi-Select
During flutter_modular_monorepo generation, users select vendors via monitoringVendors (type: array):
? Which monitoring vendors do you want? (Use space to select)
❯ ◉ crashlytics
◯ sentry
◯ newrelic
◯ grafana
◯ noneOnly selected vendor bricks are generated.
Generated Structure
infrastructure/
├── monitoring_api/ # Contracts (always generated)
│ └── lib/src/
│ ├── monitoring/
│ │ ├── app_monitoring.dart # Main interface
│ │ ├── monitoring_level.dart # debug/info/warning/error/fatal
│ │ └── monitoring_vendor.dart # Vendor enum (system only)
│ └── utils/
│ └── monitoring_injector_key.dart
├── monitoring_impl/ # System logger (always generated)
│ └── lib/src/
│ ├── monitoring_impl.dart # System logger + global error handlers
│ └── di/
├── monitoring_noop/ # Noop for release (always generated)
│ └── lib/src/
│ └── monitoring_noop_impl.dart
└── <vendor>_monitoring_impl/ # Per-vendor (only selected)
└── lib/src/
├── <vendor>_monitoring_impl.dart
├── config/ # Vendor-specific config (Sentry, Grafana, New Relic)
└── di/Key Features
- Global error handlers — Captures FlutterError + PlatformDispatcher errors
- build_prepare swap —
monitoring_impl → monitoring_noopfor release builds - Performance transactions — Stopwatch-based timing with vendor routing
- Named DI —
@Named(MonitoringInjectorKey.crashlyticsImpl)for vendor identification - Vendor configs — Sentry DSN, Grafana Cloud endpoints, New Relic tokens