Tracelet Doctor
π Official Documentation: tracelet.ikolvi.com
β‘ Set up Tracelet with AI. Click the badge to copy a ready-made prompt, then paste it into your AI coding assistant (Cursor, Claude Code, Kiro, Copilot Chatβ¦) β it interviews you, then installs and configures Tracelet (and wires up this diagnostic overlay as a debug-only dev dependency) in your Flutter app.
Drop-in diagnostic overlay for Tracelet β visualize permissions, OEM health, battery state, sensors, and tracking status in a single tap.
Screenshot
The Doctor shows a premium dark-themed bottom sheet with:
- β οΈ Warnings β actionable issues (permission denied, power save, aggressive OEM, mock GPS, etc.)
- π‘οΈ Permissions β location, motion activity, accuracy authorization
- π Tracking State β enabled/disabled, mode, motion, odometer, scheduler
- π Battery & OEM β power save, battery optimization, manufacturer, aggression rating meter
- π‘ Sensors β accelerometer, gyroscope, magnetometer, significant-motion
- πΎ Database & Device β pending location count, mock detection, platform, OS version
Quick Start
Tracelet Doctor is a debugging tool, so add it under dev_dependencies β Flutter
excludes dev-dependency packages from release builds, keeping it out of what you ship:
dependencies:
tracelet: ^2.0.6
dev_dependencies:
tracelet_doctor: ^1.0.1
Because it lives in dev_dependencies, guard every reference to it behind
kDebugMode so the import is tree-shaken out of release builds and your app still
compiles in release mode:
import 'package:flutter/foundation.dart' show kDebugMode;
import 'package:tracelet_doctor/tracelet_doctor.dart';
// Show the diagnostic sheet β debug builds only.
if (kDebugMode) {
TraceletDoctor.show(context);
}
A common pattern is a debug-only trigger, so it never appears in production:
Scaffold(
// ...
floatingActionButton: kDebugMode
? FloatingActionButton(
onPressed: () => TraceletDoctor.show(context),
child: const Icon(Icons.medical_services),
)
: null,
);
That's it β one line to show it, and it's automatically stripped from release builds.
Why
dev_dependencies? In release mode Flutter drops dev-dependency packages, and thekDebugModeguards let the Dart tree-shaker remove the Doctor code and its import entirely β so it adds nothing to your production app size and can't be opened by end users. If you instead need the diagnostics available in a production support build, movetracelet_doctorto regulardependenciesand drop thekDebugModeguards.
Features
- Zero native code β pure Dart/Flutter widget
- One-line integration β
TraceletDoctor.show(context) - Dark glassmorphic theme β premium aesthetic with semantic status colors
- 12 warning types β automatically computed from device state
- Copy to clipboard β export the full diagnostic JSON for sharing
- Re-run β refresh diagnostics without dismissing the sheet
- Loading state β animated pulse indicator while gathering data
- Error handling β graceful retry on platform call failures
How It Works
The Doctor calls Tracelet.getHealth() internally, which fires 10 parallel platform calls:
getState()β tracking enabled, mode, motion, odometergetProviderState()β location services, GPS, network, accuracygetSettingsHealth()β OEM manufacturer, aggression ratinggetSensors()β accelerometer, gyroscope, magnetometer, sig-motiongetDeviceInfo()β platform, OS versionisPowerSaveMode()β battery saver activeisIgnoringBatteryOptimizations()β app exemption statusgetPermissionStatus()β location authorizationgetMotionPermissionStatus()β motion/activity recognitiongetCount()β pending locations in the database
All results are aggregated into a typed HealthCheck object with automatically computed warnings.
Architecture
This is a separate, optional package in the Tracelet monorepo:
| Package | Description |
|---|---|
tracelet |
Core SDK β the only package apps depend on (pub.dev) |
tracelet_doctor (this package) |
Diagnostic overlay widget |
tracelet_platform_interface |
Abstract platform interface |
tracelet_android |
Kotlin Android implementation |
tracelet_ios |
Swift iOS implementation |
tracelet_web |
Web implementation |
License
Apache 2.0 β see LICENSE for details.
Libraries
- tracelet_doctor
- Drop-in diagnostic overlay widget for Tracelet.