debug_kit_riverpod 0.2.1
debug_kit_riverpod: ^0.2.1 copied to clipboard
Riverpod provider observer adapter for DebugKit. Automatically logs provider failures and optionally state updates with sanitization.
DebugKit Riverpod Adapter #
A Riverpod provider observer adapter for DebugKit.
Automatically logs Riverpod provider failures and optionally state updates into the DebugKit in-app console with sanitization.
Installation #
Add both debug_kit and debug_kit_riverpod to your pubspec.yaml:
dependencies:
debug_kit: ^0.5.0
debug_kit_riverpod: ^0.2.0
Setup #
Initialize DebugKit and add DebugKitRiverpodObserver to your ProviderScope:
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:debug_kit/debug_kit.dart';
import 'package:debug_kit_riverpod/debug_kit_riverpod.dart';
void main() {
DebugKit.init(enabled: true);
runApp(
ProviderScope(
observers: [
DebugKitRiverpodObserver(),
],
child: const MyApp(),
),
);
}
Configuration #
By default, only provider failures are logged. Use DebugKitRiverpodConfig to enable update logging or value previews:
DebugKitRiverpodObserver(
config: DebugKitRiverpodConfig(
logProviderUpdates: true, // Log state updates (default: false)
watchedProviders: {'authProvider', 'userProvider'}, // Scope to specific providers
includeValuePreview: true, // Call .toString() on new state (default: false)
maxValuePreviewLength: 300, // Truncate preview at this length
),
)
What is Logged #
- Provider name and event type (
provider_failure,provider_update) - Error message and stack trace on failures
- Sanitized value preview — only when
includeValuePreview: true
What is NOT Logged #
- State updates — ignored by default unless
logProviderUpdates: true - Full state objects — raw models are never stringified unless
includeValuePreview: true - Unfiltered updates — when
watchedProvidersis set, only listed providers emit update logs (failures are always logged regardless)
Security & Sanitization #
- Value previews are passed through the DebugKit core sanitizer before storage. Obvious secrets (tokens, passwords, API keys) in
toString()output are masked. - Previews are truncated at
maxValuePreviewLength(default 300 chars). - If
toString()throws, the preview is replaced with[Un-stringifyable Object].
Warning: If a model's
toString()returns raw PII that does not contain obvious secret keywords, it may appear in the preview. KeepincludeValuePreview: falsein production builds.
Performance #
Zero overhead when DebugKit is disabled (enabled: false). The observer wraps all logging in a try/catch and will never throw or interrupt state updates.
Limitations #
- Value preview sanitization relies on keyword matching. Custom models with non-standard secret field names are not automatically masked.
includeValuePreviewshould remainfalsein production builds.
Links #
Compatibility #
debug_kit_riverpod |
debug_kit |
|---|---|
| 0.2.x | ≥ 0.5.0 |
License #
MIT