Skip to Content
Core ConceptsEcosystem & Packages

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_android contains the Kotlin wrappers and Android background service logic.
  • tracelet_ios contains the Swift wrappers and CLLocationManager logic.

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.