# Background Geolocation SDK - Transistor Software > Cross-platform background location tracking SDK for React Native, Flutter, > Capacitor, Cordova, iOS (Swift), and Android (Kotlin). > Features: intelligent motion detection, polygon geofencing, durable HTTP+SQLite > upload queue, headless operation after app termination, odometer & trip metrics. > Used in 22,419+ production apps across 140+ countries. ## SDKs - [React Native](https://docs.transistorsoft.com/react-native/): react-native-background-geolocation - https://github.com/transistorsoft/react-native-background-geolocation - [Capacitor](https://docs.transistorsoft.com/capacitor/): capacitor-background-geolocation - https://github.com/transistorsoft/capacitor-background-geolocation - [Cordova](https://docs.transistorsoft.com/cordova/): cordova-background-geolocation-lt - https://github.com/transistorsoft/cordova-background-geolocation-lt - [Flutter](https://docs.transistorsoft.com/flutter/): flutter_background_geolocation - https://github.com/transistorsoft/flutter_background_geolocation - [Native](https://docs.transistorsoft.com/native/): native-background-geolocation, native-background-geolocation - https://github.com/transistorsoft/native-background-geolocation, https://github.com/transistorsoft/native-background-geolocation - [Swift](https://docs.transistorsoft.com/swift/): native-background-geolocation, native-background-geolocation - https://github.com/transistorsoft/native-background-geolocation, https://github.com/transistorsoft/native-background-geolocation - [Kotlin](https://docs.transistorsoft.com/kotlin/): native-background-geolocation, native-background-geolocation - https://github.com/transistorsoft/native-background-geolocation, https://github.com/transistorsoft/native-background-geolocation ## API Reference - [AccuracyAuthorization](https://docs.transistorsoft.com/react-native/AccuracyAuthorization/): Accuracy authorization granted by the user. - [ActivityConfig](https://docs.transistorsoft.com/react-native/ActivityConfig/): Activity recognition configuration for the background geolocation SDK. - [ActivityType](https://docs.transistorsoft.com/react-native/ActivityType/): iOS Activity Type used with {@link GeoConfig.activityType}. - [App](https://docs.transistorsoft.com/react-native/App/): Background-task and power-save utilities. - [AppConfig](https://docs.transistorsoft.com/react-native/AppConfig/): Application and lifecycle configuration for the background geolocation SDK. - [Authorization](https://docs.transistorsoft.com/react-native/Authorization/): Location permission management — request and monitor authorisation status. - [AuthorizationConfig](https://docs.transistorsoft.com/react-native/AuthorizationConfig/): Token-based authorization configuration for the background geolocation SDK. - [AuthorizationEvent](https://docs.transistorsoft.com/react-native/AuthorizationEvent/): Authorization token refresh result delivered to {@link BackgroundGeolocation.onAuthorization}. - [AuthorizationStatus](https://docs.transistorsoft.com/react-native/AuthorizationStatus/): iOS/Android location authorization status. - [AuthorizationStrategy](https://docs.transistorsoft.com/react-native/AuthorizationStrategy/): Supported authorization strategies. - [BackgroundGeolocation](https://docs.transistorsoft.com/react-native/BackgroundGeolocation/): Primary SDK API — the single entry point for all geolocation, geofencing, HTTP sync, and configuration operations. - [Battery](https://docs.transistorsoft.com/react-native/Battery/): Device battery state at the time a {@link Location} was recorded. - [Config](https://docs.transistorsoft.com/react-native/Config/): Root configuration object passed to {@link BackgroundGeolocation.ready} and {@link BackgroundGeolocation.setConfig}. - [ConnectivityChangeEvent](https://docs.transistorsoft.com/react-native/ConnectivityChangeEvent/): Network connectivity change delivered to {@link BackgroundGeolocation.onConnectivityChange}. - [Coords](https://docs.transistorsoft.com/react-native/Coords/): Geographic coordinates attached to a {@link Location}. - [CurrentPositionRequest](https://docs.transistorsoft.com/react-native/CurrentPositionRequest/): Options for {@link BackgroundGeolocation.getCurrentPosition}. - [DataStore](https://docs.transistorsoft.com/react-native/DataStore/): Persisted location record management — query, upload, and destroy stored locations. - [DesiredAccuracy](https://docs.transistorsoft.com/react-native/DesiredAccuracy/): Desired accuracy presets (meters / platform-tuned). - [DeviceInfo](https://docs.transistorsoft.com/react-native/DeviceInfo/): Basic device hardware and OS information returned by {@link BackgroundGeolocation.getDeviceInfo}. - [DeviceSettings](https://docs.transistorsoft.com/react-native/DeviceSettings/): [Android only] API for directing users to Android device settings screens that can affect background geolocation performance. - [DeviceSettingsRequest](https://docs.transistorsoft.com/react-native/DeviceSettingsRequest/): [Android only] Returned by a {@link DeviceSettings} request — describes which settings screen to show and whether the user has already been prompted. - [Event](https://docs.transistorsoft.com/react-native/Event/): Supported event names emitted by the SDK. - [GeoConfig](https://docs.transistorsoft.com/react-native/GeoConfig/): Geolocation configuration for the background geolocation SDK. - [Geofence](https://docs.transistorsoft.com/react-native/Geofence/): A geofence definition for monitoring circular or polygon regions. - [GeofenceAction](https://docs.transistorsoft.com/react-native/GeofenceAction/): Geofence transition actions emitted by the SDK Used with {@link GeofenceEvent} from {@link BackgroundGeolocation.onGeofence}. - [GeofenceEvent](https://docs.transistorsoft.com/react-native/GeofenceEvent/): Geofence transition delivered to {@link BackgroundGeolocation.onGeofence}. - [GeofenceFilterInfo](https://docs.transistorsoft.com/react-native/GeofenceFilterInfo/): Identifies the geofence trigger that {@link LocationFilterEvent} reports as rejected: the fence, the rejected transition (ENTER | EXIT), why it was rejected, and the trigger-vs-fence geometry when it was evaluated. - [GeofenceManager](https://docs.transistorsoft.com/react-native/GeofenceManager/): Manages the geofence database — add, remove, query, and check geofences. - [GeofencesChangeEvent](https://docs.transistorsoft.com/react-native/GeofencesChangeEvent/): Geofence monitoring change delivered to {@link BackgroundGeolocation.onGeofencesChange}. - [HeadlessEvent](https://docs.transistorsoft.com/react-native/HeadlessEvent/): [Android only] Event delivered to a headless task registered via {@link BackgroundGeolocation.registerHeadlessTask}. - [HeartbeatEvent](https://docs.transistorsoft.com/react-native/HeartbeatEvent/): Periodic heartbeat delivered to {@link BackgroundGeolocation.onHeartbeat}. - [HttpConfig](https://docs.transistorsoft.com/react-native/HttpConfig/): HTTP and networking configuration for the background geolocation SDK. - [HttpEvent](https://docs.transistorsoft.com/react-native/HttpEvent/): HTTP response payload delivered to {@link BackgroundGeolocation.onHttp}. - [HttpMethod](https://docs.transistorsoft.com/react-native/HttpMethod/): Allowed HTTP methods for uploading data. - [KalmanProfile](https://docs.transistorsoft.com/react-native/KalmanProfile/): Specifies the preset tuning profile for the Kalman filter used in location denoising. - [Location](https://docs.transistorsoft.com/react-native/Location/): A location record captured by the device's native location API and delivered by the SDK. - [LocationError](https://docs.transistorsoft.com/react-native/LocationError/): Error codes returned when the native location API fails to fetch a location. - [LocationFilter](https://docs.transistorsoft.com/react-native/LocationFilter/): Filters, denoises, and smooths raw GPS samples before they are recorded or used for odometer calculations. - [LocationFilterEvent](https://docs.transistorsoft.com/react-native/LocationFilterEvent/): Delivered to {@link BackgroundGeolocation.onLocationFilter} when the SDK rejects data before it reaches your event stream — either a raw tracking sample rejected by the location-filter, or a geofence trigger rejected as spurious or duplicate. - [LocationFilterPolicy](https://docs.transistorsoft.com/react-native/LocationFilterPolicy/): Defines the filtering policy applied to incoming raw GPS samples before they are accepted, averaged, or rejected by the {@link LocationFilter}. - [LocationFilterReason](https://docs.transistorsoft.com/react-native/LocationFilterReason/): Reason a location was rejected by the tracking location-filter, delivered to {@link BackgroundGeolocation.onLocationFilter} via {@link LocationFilterEvent.reason}. - [LocationQuery](https://docs.transistorsoft.com/react-native/LocationQuery/): Constrains a {@link BackgroundGeolocation.getLocations} query by page size, starting offset, and sort order. - [LocationRequest](https://docs.transistorsoft.com/react-native/LocationRequest/): Indicates what level of location authorization the SDK should request. - [LogLevel](https://docs.transistorsoft.com/react-native/LogLevel/): Controls the verbosity of plugin logging. - [Logger](https://docs.transistorsoft.com/react-native/Logger/): SDK logging API — access via {@link BackgroundGeolocation.logger}. - [LoggerConfig](https://docs.transistorsoft.com/react-native/LoggerConfig/): Logging and diagnostics configuration for the background geolocation SDK. - [MotionActivity](https://docs.transistorsoft.com/react-native/MotionActivity/): The motion activity reported by the device at the time a {@link Location} was recorded. - [MotionActivityEvent](https://docs.transistorsoft.com/react-native/MotionActivityEvent/): Activity recognition result delivered to {@link BackgroundGeolocation.onActivityChange}. - [MotionActivityType](https://docs.transistorsoft.com/react-native/MotionActivityType/): Reported device motion activity names (legacy RN + native). - [MotionChangeEvent](https://docs.transistorsoft.com/react-native/MotionChangeEvent/): Motion-state change delivered to {@link BackgroundGeolocation.onMotionChange}. - [NotificationConfig](https://docs.transistorsoft.com/react-native/NotificationConfig/): [Android only] Foreground service notification configuration for the background geolocation SDK. - [NotificationPriority](https://docs.transistorsoft.com/react-native/NotificationPriority/): Defines the priority / visibility of the Android foreground-service notification. - [PermissionRationale](https://docs.transistorsoft.com/react-native/PermissionRationale/): [Android only] Configures the background location permission rationale dialog on Android 11 and later. - [PersistMode](https://docs.transistorsoft.com/react-native/PersistMode/): Persistence modes for BackgroundGeolocation SDK. - [PersistenceConfig](https://docs.transistorsoft.com/react-native/PersistenceConfig/): Persistence and storage configuration for the background geolocation SDK. - [ProviderChangeEvent](https://docs.transistorsoft.com/react-native/ProviderChangeEvent/): Location-services provider state delivered to {@link BackgroundGeolocation.onProviderChange}. - [SQLQuery](https://docs.transistorsoft.com/react-native/SQLQuery/): Constrains a log query by date range, sort order, and record count. - [SQLQueryOrder](https://docs.transistorsoft.com/react-native/SQLQueryOrder/): Sort order for {@link SQLQuery.order}. - [Sensors](https://docs.transistorsoft.com/react-native/Sensors/): Availability of motion sensors on the device, as returned by {@link BackgroundGeolocation.getSensors}. - [State](https://docs.transistorsoft.com/react-native/State/): Read-only snapshot of the SDK's current runtime state. - [Subscription](https://docs.transistorsoft.com/react-native/Subscription/): Handle returned by every BackgroundGeolocation.on event-listener method. - [TrackingMode](https://docs.transistorsoft.com/react-native/TrackingMode/): SDK tracking mode (legacy RN values preserved). - [TransistorAuthorizationService](https://docs.transistorsoft.com/react-native/TransistorAuthorizationService/): Client for the Transistor Software demo tracking server. - [TransistorAuthorizationToken](https://docs.transistorsoft.com/react-native/TransistorAuthorizationToken/): Authorization token issued by a Transistor Software tracking server. - [TriggerActivity](https://docs.transistorsoft.com/react-native/TriggerActivity/): Allowed motion activity names that can trigger motion detection. - [Vertices](https://docs.transistorsoft.com/react-native/Vertices/): An array of [latitude, longitude] pairs defining a polygon geofence. - [WatchPositionRequest](https://docs.transistorsoft.com/react-native/WatchPositionRequest/): Options for {@link BackgroundGeolocation.watchPosition}. ## Notable Public Company Customers ABBN, ABNB, AEP, AFX, ALL, AMARAJABAT, ANGI, AOF, ASAP, ATNI, BABA, BC, BOXD, BZZT, CA, CAE, CAR, CCL, CJ, CLGX, CNA, CNCO, CNHI, CRG, CS, CSGP, CSU, DASH, DB, DLG, DODO, DOKA, DSV, DTG, DTS, EDV, ELM, ENTRA, ERJ, ESCORTS, EVBG, FARM, FORTUM, G, GASCO, GEM, GLE, GNSS, GNTX, GOOGL, HD, HEI, HEXA-B, HHFA, HOLN, HPG, HSV, HUBG, IAG, IPS, IQG, JBHT, JOBY, LHA, MAERSK-B, MANH, MATX, MFC, ML, MODV, MTL, MTM, NPN, ORA, OVER, OXY, PALTEL, PBI, PIZZA, PNTR, RALLIS, RDY, REZI, RMD, RMH, ROOT, ROP, ROVR, RRTS, SAN, SAP, SAWAD, SLM, SNDR, SPG, SPTN, SPZ, SSTI, SU, SWVL, TEF, TFG, TGT, TIDE, TKWY, TMDX, TPG, TRMB, TVSSCS, UBER, URB, VEON, VNT, WEX, XPLR, XPO, YNDX, YOU, ZF, ZURN ## Use Cases Software Agencies, Fleet Tracking, Field Service, Delivery & Logistics, Workforce Tracking, Rideshare & Mobility, Health & Fitness, Travel & Hospitality, Marketplace & On-Demand, Asset Tracking, Security & Patrol, Retail & Commerce, Family Safety, Telematics, Construction, Route Optimization ## Key Features - **Intelligent Motion Detection** - A sophisticated motion-state machine automatically transitions between tracking and stationary modes, slashing battery usage when the device is still. - **Geofencing** - Monitor unlimited circular regions with sub-metre accuracy — triggers reliably even when the app is terminated by the OS. - **Polygon Geofencing** - Define geofences as arbitrary polygon shapes — parks, building footprints, delivery zones. Available as a paid add-on. - **Durable HTTP + SQLite Queue** - Every location is persisted to SQLite before upload. Automatic retry, JWT auth, and batch upload keep your server in sync. - **Survives Termination & Reboot** - With stopOnTerminate: false and startOnBoot: true, the SDK continues tracking after the app is killed and resumes automatically when the device restarts, without user interaction. - **Android Headless Tasks** - Continues executing JavaScript and Dart location callbacks even when the Android app is fully terminated — no foreground process required. - **Location Filter** - Fine-tune location accuracy with a configurable filter pipeline — smooth GPS noise and set minimum accuracy thresholds. - **Odometer & Trip Metrics** - Built-in distance tracking, speed, and heading — no extra code required. Reset the odometer at trip start and read it at any time. ## Licensing - [Purchase](https://docs.transistorsoft.com/purchase/) — commercial license required for production. Per-platform, perpetual, 1-year updates included. - [Pricing](https://docs.transistorsoft.com/purchase/) — visit the purchase page for current per-platform prices across Starter, Venture, Pro, and Studio tiers.