tracelet_web
Web implementation of the Tracelet background geolocation plugin.
3.8.7
9.2K downloads/mo
#3052 most downloaded on pub.dev
Ikolvi/Tracelet
What this package is like to depend on
Last release 7 days ago
16 Aug 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 144 of 154 stable releases
Nothing withdrawn
no release was ever pulled
6 months old
159 releases · first in 2026
159 releases in the last 12 months
see the full history below
Release timeline
159 releases · Feb 2026 to Aug 2026Releases
latest 60 of 159-
3.8.716 Aug 2026 -
3.8.616 Aug 2026 -
3.8.6-alpha.115 Aug 2026 pre-releaseNothing published for this version
-
3.8.515 Aug 2026Release notes
Open source →FIX:
setOdometer()drops the reference the odometer measures from. Accumulation runs off_lastLocation, which the setter left in place, so the next browser fix added the whole span since the previous one and a reset survived exactly one fix — the same defect the native engines had, reached independently (#387).Version alignment with tracelet 3.8.5.
-
3.8.413 Aug 2026 -
3.8.312 Aug 2026Release notes
Open source →FIX:
maxRecordsToPersist: -1no longer throwsRangeErroron every insert.-1is the documented "unlimited" sentinel, and becauseready()resolves every field before it crosses the channel it is what the default configuration sends — so the unguardedwhile (_locations.length > _maxRecords) removeAt(0)emptied the store and then ran off the end of it on the first insert of every web session. A non-positive cap now means unlimited, as it already did on the native platforms (#362).FIX:
maxDaysToPersistis now enforced on web.applyConfignever read the key, so the web store had no age-based retention at all. A record whosetimestampis absent or unparseable is kept rather than treated as ancient; the record cap bounds those (#361). -
3.8.211 Aug 2026 -
3.8.111 Aug 2026 -
3.8.008 Aug 2026 -
3.8.0-beta.206 Aug 2026 pre-releaseRelease notes
Open source →FEAT:
Tracelet.getCurrentLocationTuning()reports the location-filter thresholds actually in force, read back from the native processor rather than from the config you set.activeConfigis a Dart-side mirror of the lastConfigpassed in, so it cannot tell you whether a value reached the filter that uses it — and it cannot show a transport-mode auto-tune, which changes these thresholds with no config call at all. Returnsnullbefore a tracking session has built a processor, and alwaysnullon Web (#303).FIX: the method-channel
androidconfig block now carries the samegeofenceModeHighAccuracyvalue as thegeofenceblock. Native reads the key from both, so emitting the raw Android-only flag in one and the OR'd value in the other made behavior depend on which block the platform happened to consult (#305).FIX: (Android + iOS) the location-filter configuration now reaches the Rust processor at runtime.
setConfig()rebuilt the processor only for a short list of location keys, sotrackingAccuracyThreshold,odometerAccuracyThreshold,maxImpliedSpeed,filterPolicy,enableAdaptiveMode,rejectMockLocations,mockDetectionLevel, the sparse-update trio anduseKalmanFilterwere accepted, cached, and then ignored until the next cold start. BecauseLocationProcessorcaptured its base thresholds at construction, this also broke the #301 guarantee that disablingautoTuneFromTransportModerestores "the values you configured" — it restored the values captured when the processor was built. A newset_base_tuningcarries thresholds in without dropping the positional anchor a rebuild would cost (the reasonretuneexists, #299); the remaining constructor-only parameters trigger a targeted rebuild, and the Kalman filter is toggled independently of the processor (#303).FIX: (iOS) the whole
LocationFilterblock now reaches the config cache. Every transport serializes it as afiltersub-map nested insidegeo, but the iOSConfigManagerflattened only one level and then stored that block as a single opaque value no getter ever read — sotrackingAccuracyThreshold,odometerAccuracyThreshold,maxImpliedSpeed,rejectMockLocations,mockDetectionLevelanduseKalmanFilterwere pinned to their defaults (100 m / 0 m / 80 m/s / off) no matter what was configured, atready()as well as at runtime. The change detection added above compared key names absent from both config snapshots, so a filter change triggered neither the targeted rebuild norsetBaseTuning— the fix landed on a bridge that was never connected. Caches persisted in the nested shape are lifted on load, becauseautoResumeTracking()starts the pipeline off the persisted cache with noready()in between (#303).FIX: (Android + iOS)
LocationFilter.policyis now applied. It is serialized underpolicyby every transport, whilegetFilterPolicy()— and the processor-rebuild key list — readfilterPolicy, so the value was cached under a name nothing asked for and the policy stayed atadjusthowever it was configured. It is renamed during flattening, so both readers see it (#303).FIX: (Android + iOS)
logMaxDaysis now applied. Both platforms pruned logs only by a row count derived fromlogLevel, so the configured retention window was accepted and discarded —logMaxDays: 3andlogMaxDays: 90behaved identically. Log pruning now enforces both caps (#304).FIX: (iOS)
disableLocationAuthorizationAlertis now honored. The permission manager requested authorization unconditionally, so apps that wanted to own their pre-permission UX could not suppress the system prompt. It now reports the current status instead of prompting (#304).FIX: (Web)
GeofenceConfig.geofenceModeHighAccuracyis now honored. The web plugin read only the deprecatedAndroidConfig.geofenceModeHighAccuracy, so setting the documented cross-platform flag had no effect on web. It is now OR'd with the deprecated flag, matching both Pigeon hosts, andgeofenceExitAccuracyMaxis carried too (#305).FIX: the method-channel transport no longer drops geofence configuration.
_geofenceToMapemitted two of the five geofence keys, silently discardinggeofenceModeHighAccuracy(so no OR was performed on that path),geofenceInitialTrigger, andgeofenceExitAccuracyMax— the #276 tunable (#305).FIX: the four built-in
TraceletProfilepresets now set high-accuracy geofencing through the cross-platformgeofenceblock instead of the deprecatedandroidone.TraceletProfile.highAccuracytherefore enables it on iOS as well, and the deprecated field has no remaining internal dependants (#305).FIX: the pure-Dart
GeofenceEvaluatornow applies thegeofenceExitAccuracyMaxpolicy (-1full gating,0disabled,Nclamp). It is documented as a mirror of the Rust core but gated EXIT on raw accuracy, diverging from both native managers, which pass accuracy througheffectiveExitAccuracyfirst (#276). The parameter defaults to-1, so existing callers are unaffected (#306).FIX: the Rust geofence evaluator drops pending exit confirmations for fences a re-index no longer covers.
clear()andremove_geofence()both pruned them;index_geofences()did not, so a half-accumulated count survived and could contribute to a later EXIT (#306).DEPRECATED:
AuditConfig.includeExtrasInHashandAttestationConfig.verificationUrlwere never implemented — no platform reads either value. They are now annotated so the analyzer surfaces it, rather than being silently discarded at runtime. Implementing them is not a patch: the first changes what the audit chain hashes and so invalidates every existing chain, and the second needs a token-verification transport (#304). -
3.8.0-beta06 Aug 2026 pre-release -
3.8.0-alpha05 Aug 2026 pre-release -
3.7.605 Aug 2026 -
3.7.504 Aug 2026 -
3.7.403 Aug 2026 -
3.7.301 Aug 2026 -
3.7.201 Aug 2026 -
3.7.129 Jul 2026 -
3.7.029 Jul 2026 -
3.6.1528 Jul 2026 -
3.6.1427 Jul 2026 -
3.6.1326 Jul 2026 -
3.6.1226 Jul 2026 -
3.6.1125 Jul 2026 -
3.6.1024 Jul 2026 -
3.6.924 Jul 2026 -
3.6.823 Jul 2026 -
3.6.723 Jul 2026 -
3.6.622 Jul 2026 -
3.6.521 Jul 2026 -
3.6.420 Jul 2026 -
3.6.319 Jul 2026 -
3.6.218 Jul 2026 -
3.6.117 Jul 2026 -
3.6.016 Jul 2026Release notes
Open source →FEAT:
Tracelet.updateLocationProviderOptions()— live provider-options override without a pipeline restart, on iOS and Android (#241).Version alignment with tracelet 3.6.0.
-
3.5.713 Jul 2026Release notes
Open source →FIX: Build fails without AGP built-in Kotlin (AGP <9 / builtInKotlin=false) (#239).
-
3.5.609 Jul 2026Release notes
Open source →FIX: Custom sync body 400 Bad Request HTTP errors now gracefully return fallback results instead of propagating fatal exceptions in native Sync engines (#238).
-
3.5.507 Jul 2026Release notes
Open source →FIX: Ensure foreground service is properly started in periodic mode when configured (#237).
-
3.5.430 Jun 2026Release notes
Open source →FIX: Enrich geofence transition events with real coordinate metrics and battery (#231). FIX: Propagate runtime
setConfigchanges to active native tracking/sensor loops (#230). FIX: Null-guard subsystems during teardown so Activity destruction never throws (#227). FIX: Android: standard geofence mode no longer runs a foreground service, complying with Google Play's 2026-10-28 foreground-service-for-geofencing policy. -
3.5.330 Jun 2026Release notes
Open source →FIX: Added explicit ProGuard keep rules for
TraceletStartupProviderin thetracelet_androidpackage to preventClassNotFoundExceptionon process start when aggressive shrinking (like R8 full mode) is used (#228). -
3.5.223 Jun 2026Release notes
Open source →FIX: Android continuous tracking no longer silently stops after a while on aggressive OEMs (Samsung One UI, etc.). The foreground-service wakelock used a fixed 10-minute auto-expiry and was never renewed, so once it lapsed the CPU could deep-sleep and FusedLocationProvider stopped delivering updates with no error or callback. The wakelock is now renewed for the lifetime of tracking (#222).
-
3.5.119 Jun 2026Release notes
Open source →FEAT: Crash detection now uses the device barometer as an extra confirmation clue — a serious crash or airbag deployment causes a quick cabin air-pressure change that raises crash confidence on phones with a pressure sensor; phones without one skip it with no downside (#173). FEAT: Stronger crash/fall corroboration — a sudden post-impact speed collapse (#181) and the free-fall → impact → stillness signature (#180) now raise confidence, and confirmation is process-death-safe so a confirmed event survives the app being killed (#182).
-
3.5.019 Jun 2026Release notes
Open source →FEAT: Crash-detection ML model promoted from beta to stable (trained on a CC0 / public-domain dataset, cleared for commercial use) and the on-device model cache now auto-re-downloads on a new published version (#183).
-
3.4.218 Jun 2026Release notes
Open source →- REFACTOR: reformat test files and sync body context for consistent code style. (5552f795)
Release notes
Open source →- FEAT: implement telematics deduplication with synced-state tracking and improved foreground service fault tolerance. (0581c6e7)
-
3.4.117 Jun 2026 -
3.4.017 Jun 2026 -
3.3.416 Jun 2026 -
3.3.315 Jun 2026Release notes
Open source →- FIX: Correct the
geofenceModeHighAccuracyconfig mapping in Web plugin to prevent runtime getter errors. (065b3bbc)
- FIX: Correct the
-
3.3.215 Jun 2026Release notes
Open source → -
3.3.114 Jun 2026Release notes
Open source →- FIX(crash): harden crash/fall detection (confirmation survival, threshold, debounce, sample rate). (0a17e804)
-
3.3.014 Jun 2026Release notes
Open source →- FEAT (Driving & Safety): On-device driving-behavior telematics —
harsh_braking/harsh_acceleration/harsh_cornering/speedingviaTelematicsConfig+Tracelet.onDrivingEvent(opt-in, default off) (#163). - FEAT (Driving & Safety): On-device transport-mode classifier (still/walking/running/cycling/vehicle) fusing accelerometer + GPS via
ClassifierConfig+Tracelet.onModeChange(#164). - FEAT (Driving & Safety): Crash & fall detection with a cancel-countdown confirmation flow via
ImpactConfig+Tracelet.onImpactandTracelet.confirmImpact/Tracelet.cancelImpact(opt-in, default off) (#165). - All three features are default-off and side-channel — no change to existing tracking when disabled. See Driving & Safety.
- FEAT (Driving & Safety): On-device driving-behavior telematics —
-
3.2.1913 Jun 2026 -
3.2.1812 Jun 2026Release notes
Open source →- FIX (Native):
ready()/getState()now populateState.configwith the active configuration instead of leaving it permanentlynull(#147). - FEAT: Add
HttpConfig.syncIntervalfor interval-based sync — the documented repeating-timer cadence was missing from the Dart config and the Pigeon layer; the native interval timer now flushes the offline queue on this cadence (#149). - FIX (Native):
destroySyncedLocations()returns the real number of synced-and-pruned locations instead of a hardcoded0stub (#154). - FEAT: Expose the offline queue with
getPendingLocations()andgetPendingLocationCount()(#159). - FIX (Native): Honor the
useKalmanFilterconfig key so the Extended Kalman Filter is no longer silently disabled by a key mismatch (#148). - FIX (Native): Propagate the detected activity (walking / driving / still) into recorded locations — fixes a permanent
"activity": "unknown"(#155). - FIX (Native): Rebuild the native location processor when
ready()applies a new config, so settings such asdistanceFiltertake effect immediately instead of using stale defaults (#157). - FIX (Native):
getCount()honors time-bound queries instead of always returning the whole-database total (#152). - FIX: Guard the
AuditConfighash-algorithm mapping so configuringsha384/sha512no longer crashes with a fatalRangeErrorduringready()— unsupported variants fall back tosha256(#150). - FIX (Native): The HTTP sync payload now includes each point's motion state
is_moving(#151) and its triggerevent(location / motionchange / heartbeat / geofence) (#156) — both were previously omitted by the native sync record.
- FIX (Native):
-
3.2.1712 Jun 2026Release notes
Open source →- FIX (Native): Resolve iOS auto-sync thread starvation by offloading synchronous HTTP requests to a background DispatchQueue to prevent blocking Swift Concurrency pools (#146).
- CHORE (Docs): Fix Nextra changelog rendering bug and improve auto-translation glossary script for internationalization.
-
3.2.1612 Jun 2026Release notes
Open source →- FIX (Native): Resolve Android/iOS getting stuck in the moving state and never transitioning back to stationary, which kept continuous GPS active and drained the battery. The accelerometer stillness sampler now stays active during the stop-timeout countdown and requires sustained motion — rather than a single noisy or stale sample — to abort it (#142).
- FIX (Native): Background and post-reboot location captures are persisted (and therefore synced) again. Headless tracking (killed-state relaunch / boot) never calls
ready(), so an internal readiness guard silently dropped every captured location before it reached the database, leaving auto-sync with nothing to upload. - FIX (Android): The foreground-service notification now reliably appears when the app is backgrounded or terminated with
showNotificationOnPauseOnlyenabled. The app's own foreground service skewed foreground/background detection (and OS process-importance updates lag), so the pause-only notification was suppressed even though tracking and syncing continued.
-
3.2.1511 Jun 2026Release notes
Open source →- FIX (Native): Allow
getState()andstop()to be called beforeready()is invoked, correctly reporting persistent state and shutting down background services if the app was restarted from a killed state. - CHORE: Update dependencies and constraints.
- FIX: Resolve
MissingPluginExceptionand test timing issues withsetHasCustomSyncBodyBuilder.
- FIX (Native): Allow
-
3.2.1411 Jun 2026Release notes
Open source →- FIX(sync): keep method channel alive to avoid iOS timeout bugs when no builder is registered. (9a083478)
- FIX(sync): resolve issue 134 where custom sync body timeouts prevented background syncs. (7fa16fdf)
- FIX(sync): fix background auto-sync abortion when no custom builder is registered (Issue #134). (631542a1)
- DOCS: add official documentation URL to all package READMEs. (9eb6951e)
- DOCS: integrate nextra website and update pubspec URLs. (99b7fda8)
-
3.2.1310 Jun 2026Release notes
Open source →- CHORE: Version bump to 3.2.13 to stay in lockstep with the federated set (Android
startOnBootreboot-tracking fix — seetracelet_android). No changes to this package.
- CHORE: Version bump to 3.2.13 to stay in lockstep with the federated set (Android
-
3.2.1210 Jun 2026Release notes
Open source →- CHORE: Re-release to align the full federated package set and native SDKs to a single consistent version. The 3.2.11 release published with mismatched versions across some packages (a few resolved to 3.2.10). No functional code changes.
-
3.2.1109 Jun 2026