NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #5661 most downloaded on pub.dev
Production-grade background location tracking for Flutter without Google Play Services. Pure AOSP LocationManager on Android, CoreLocation on iOS. Built for privacy-focused apps, GrapheneOS, CalyxOS, and degoogled devices.
Last release 3 months ago
10 Jul 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
6 months old
7 releases · first in 2026
One column per month.
0.4.3: hold headless engine until Dart async send completes
0.4.3: hold headless engine until Dart async send completes
HeadlessCallbackDispatcher now waits for the Dart isolate's async reply before releasing its in-flight count, so the headless engine is no longer torn down mid-send while the (potentially slow, cold-init) E2EE send completes. Pairs with the app-side headless handshake wiring. Fixes background location silently stopping once the app process is terminated.* Background reliability fixes.
Live tier stays fresh when stationary (iOS/Android). Lowered the high preset's heartbeat to 60s foreground / 90s background so a non-moving device on
high preset's heartbeat to 60s foreground / 90s background so a non-moving device on the live tier keeps emitting position heartbeats (it previously inherited 120s/300s, so a stationary live-sharing phone looked frozen to contacts). Moving behavior and the balanced/low presets are unchanged.iOS battery-profile release: Life360-style stationary/motion power management.
iOS battery-profile release: Life360-style stationary/motion power management.
CMMotionActivity report (walking/running/cycling/automotive) while stationary now re-arms continuous GPS immediately, instead of waiting for a significant-location-change tick or geofence exit. Raw accelerometer motion still never wakes GPS. Disable with motionActivityWake: false.desiredAccuracy relaxes to kCLLocationAccuracyNearestTenMeters; it restores to the preset accuracy below 7 m/s (hysteresis band avoids flapping). Disable with speedAdaptiveAccuracy: false.lowBatterySlcOnly / lowBatteryThreshold.pausesLocationUpdatesAutomatically is now safe. locationManagerDidPauseLocationUpdates folds the native pause into the plugin's stationary mode (SLC + exit geofence armed), so streaming resumes on movement. Previously a native pause could silently stall updates until the stillness timeout.Migration notes for consumers: No breaking API changes. All new behaviors default ON for iOS; pass the new NativeConfig flags to opt out.
Removed SCHEDULE_EXACT_ALARM and USE_EXACT_ALARM permissions from the Android manifest. Google Play restricts these to calendar/alarm-clock apps and w
SCHEDULE_EXACT_ALARM and USE_EXACT_ALARM permissions from the Android manifest. Google Play restricts these to calendar/alarm-clock apps and was rejecting uploads of consuming apps.AlarmManager-based heartbeat with an in-process Handler.postDelayed loop inside LocationService. Heartbeats now fire while the foreground service is alive (which is the normal case — the ongoing notification + battery-optimization exemption keep it running). Heartbeats may pause during deep Doze, which is a behaviour change from 0.2.x.WatchdogAlarmReceiver (the 15-minute OEM-kill recovery alarm). OEM-kill resilience now relies solely on the foreground service notification + REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.HeartbeatAlarmReceiver; its headless-callback dispatch logic moved into LocationService.emitHeartbeat().LocationService.ACTION_HEARTBEAT_ALARM (no longer dispatched).Migration notes for consumers: No API changes. If you were relying on heartbeats firing during deep Doze, you'll see them pause until the next Doze maintenance window or until the user interacts with the device. For most use cases this is acceptable — the foreground service's location updates continue independently of the heartbeat tick.
fix: bump version to 0.2.1
fix: bump version to 0.2.1 (#10)
Background location tracking via AOSP LocationManager (Android) and CoreLocation (iOS)
Your coding agent can read these notes before it upgrades. Set up the MCP server →