PackageTrack
Sign in Get early access

libre_location

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.

0.4.3 4.3K downloads/mo #4061 most downloaded on pub.dev Rezivure/libre-location

What this package is like to depend on

Last release 1 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

4 months old

7 releases · first in 2026

7 releases in the last 12 months

see the full history below

Release timeline

7 releases · Mar 2026 to Jul 2026
Release Pre-release

Releases

latest 7
  1. 0.4.3 10 Jul 2026
    Release notes

    0.4.3: hold headless engine until Dart async send completes

    Open source →
    Release notes
    • Android headless dispatch reliability. The native 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.
    Open source →
  2. 0.4.2 04 Jul 2026
    Release notes
    • Background reliability fixes.
    Open source →
  3. 0.4.1 18 Jun 2026
    Release notes
    • 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 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.
    Open source →
  4. 0.4.0 11 Jun 2026
    Release notes

    iOS battery-profile release: Life360-style stationary/motion power management.

    • Motion-driven GPS re-arming (iOS). A confident 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.
    • Speed-adaptive accuracy (iOS). At driving speed (≥10 m/s) desiredAccuracy relaxes to kCLLocationAccuracyNearestTenMeters; it restores to the preset accuracy below 7 m/s (hysteresis band avoids flapping). Disable with speedAdaptiveAccuracy: false.
    • Low-battery SLC-only mode (iOS). When battery ≤ 20% and not charging, tracking drops to significant-location-changes only regardless of motion state, and restores on charge or recovery past 25%. Configure with 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.
    • Upgrade-safe persisted config (iOS). The persisted tracking config now decodes field-by-field with defaults; previously a plugin upgrade that added config fields caused the whole persisted config to fail decoding, losing tracking restore after termination.
    • Android: the new config keys are accepted and ignored (no behavior change); Android already runs its own foreground-service power model.

    Migration notes for consumers: No breaking API changes. All new behaviors default ON for iOS; pass the new NativeConfig flags to opt out.

    Open source →
  5. 0.3.0 09 May 2026
    Release notes
    • Removed 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.
    • Replaced the 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.
    • Removed WatchdogAlarmReceiver (the 15-minute OEM-kill recovery alarm). OEM-kill resilience now relies solely on the foreground service notification + REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.
    • Removed HeartbeatAlarmReceiver; its headless-callback dispatch logic moved into LocationService.emitHeartbeat().
    • Removed 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.

    Open source →
  6. 0.2.1 08 Apr 2026
    Release notes

    fix: bump version to 0.2.1 (#10)

    Open source →
    Release notes
    • Bump package version to trigger a fresh tag-based pub.dev publish
    • Keep 0.2.0 fixes and release automation improvements intact
    Open source →
  7. 0.1.0 29 Mar 2026
    Release notes
    • Initial release
    • Background location tracking via AOSP LocationManager (Android) and CoreLocation (iOS)
    • Motion detection for adaptive GPS polling
    • Geofencing support (ProximityAlert on Android, CLCircularRegion on iOS)
    • Three tracking modes: Active, Balanced, Passive
    • Zero Google Play Services dependencies
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive