Tracelet Ecosystem & Packages
Tracelet is built using a Federated Plugin Architecture. Rather than forcing a massive, monolithic dependency into your app, Tracelet is split into several modular packages. This ensures your app size remains small, you only ship the native permissions and code that you actually need, and backend logic remains entirely decoupled from location tracking.
Below is an overview of every package in the Tracelet ecosystem and what it does.
The Core Packages
These packages are the foundation of Tracelet. Most apps will only ever need to interact directly with the main tracelet package.
tracelet
This is the primary frontend package you add to your pubspec.yaml. It provides the main Dart API (Tracelet.start(), Tracelet.ready()), the configuration objects (Config.balanced()), and handles the Dart-to-Rust bindings.
tracelet_platform_interface
The abstract common interface that connects the frontend tracelet package to the underlying native platforms. You will never interact with this directly, but it ensures all platforms conform to the exact same methods and return types.
tracelet_android & tracelet_ios & tracelet_web
These are the platform-specific implementations. When you install tracelet, Flutter automatically pulls in these platform packages under the hood.
tracelet_androidcontains the Kotlin wrappers and Android background service logic.tracelet_ioscontains the Swift wrappers andCLLocationManagerlogic.
Networking & Sync Adapters
Tracelet strictly separates “Location Tracking” from “Network Syncing.” If you want to build your own manual HTTP retry logic inside onLocation, you never have to install these. But if you want automated, battery-friendly offline syncing, you use an adapter.
tracelet_sync
The core native networking engine. It provides the TraceletSync API. Instead of waking up the Dart engine to send HTTP requests, it runs a native WorkManager (Android) or BGTask (iOS) to flush SQLite locations to your HTTP backend automatically, even when your app is force-quit.
tracelet_supabase
A pre-built adapter for Supabase . It points Tracelet’s native HTTP sync engine at a Supabase Postgres RPC function (or an Edge Function), sets the apikey/Authorization headers for you, and refreshes the Supabase session token in the background so syncing keeps working when the app is terminated.
tracelet_firebase
A pre-built adapter for the Firebase Realtime Database (RTDB) . It points Tracelet’s native HTTP sync engine at the RTDB REST API — 100% serverless, no Cloud Functions — and refreshes the Firebase Auth ID token in the background so syncing keeps working when the app is terminated.
Diagnostic & Debugging Tools
tracelet_doctor
A drop-in UI overlay package for developers. Add it as a dev dependency (flutter pub add dev:tracelet_doctor), not a regular dependency — Flutter excludes dev-dependency packages from release builds, so it’s automatically stripped from what you ship. By adding tracelet_doctor to your app during testing, you get a beautiful diagnostic overlay that displays:
- Real-time GPS accuracy rings
- The current motion state (STATIONARY vs MOVING)
- Native SQLite database row counts
- The underlying battery drain
It is highly recommended to use tracelet_doctor during QA and testing. Keep it under dev_dependencies and guard usage behind kDebugMode so it’s tree-shaken out of your release builds.