---
title: An Alternative to Transistorsoft Background Geolocation
description: Looking for a Transistorsoft background geolocation alternative? Compare licensing, motion detection, and HTTP upload with Capawesome's Capacitor plugin.
date: 
  created: 2026-08-31
  updated: 2026-08-31
authors:
  - robingenz
categories:
  - Capacitor
  - Guides
  - SDKs
links:
  - Capacitor Background Geolocation: sdks/capacitor/background-geolocation.md
faq: true
---

# An Alternative to Transistorsoft Background Geolocation

If you are searching for a Transistorsoft background geolocation alternative, chances are the license terms triggered the search: since version 9, a paid key is required for release builds on both Android and iOS, priced per app identifier. The [Capacitor Background Geolocation plugin](../../sdks/capacitor/background-geolocation.md) from Capawesome is the most direct alternative, and this comparison is honest about what that means: it is also a paid plugin, licensed differently and built with a different engineering philosophy. Transistorsoft invests in motion detection that decides when to track. Capawesome invests in an upload pipeline that makes sure what you tracked actually reaches your server. This post compares licensing, features and code side by side, and is clear about the cases where Transistorsoft remains the better choice.

<!-- more -->

<div class="capawesome-z29o10a">
  <a href="https://capawesome.io/" target="_blank">
    <img alt="Build and deploy your Capacitor app with Capawesome Cloud" src="https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1" />
  </a>
</div>

## Key Takeaways

- Transistorsoft licenses per app identifier: $399 for 1 application key up to $999 for 100 keys, one-time with 1 year of updates. Since v9 (March 2026), release builds require a key on both iOS and Android.
- Polygon geofencing is a separate Transistorsoft add-on starting at $399.
- The Capacitor Background Geolocation plugin is part of Capawesome Insiders: $99/month or $990/year for 30+ Insider SDKs across unlimited apps, or a $1,980 one-time Maintain license with 12 months of updates.
- The core trade-off: Transistorsoft automates when to track with a motion-detection state machine; the Capawesome plugin focuses on reliable delivery with a native SQLite queue, at-least-once upload semantics and a documented server contract.
- Transistorsoft can keep tracking after force-quit and reboot; the Capawesome plugin deliberately ends the watch session and covers relaunch scenarios with the Capacitor Geofences plugin.
- Both plugins support Android and iOS; neither has a web implementation.

## Why teams look for a Transistorsoft background geolocation alternative

The [Transistorsoft plugin](https://github.com/transistorsoft/capacitor-background-geolocation){:target="_blank"} is a mature commercial product. The same native core has shipped since 2015 for Cordova, React Native, Flutter and Capacitor, releases land in lockstep across all four, and of 319 issues ever opened on the Capacitor repository, only 5 are open today. Teams that go looking for an alternative usually do so for one of four reasons, none of which is "it doesn't work".

### Licensing changed in v9: both platforms now require a key

The Transistorsoft SDK is fully functional in debug builds without a license, so evaluation is free. For release builds, a paid key is required, and this is where v9 changed the rules: earlier versions only enforced the license on Android, while the [9.0.0 release](https://github.com/transistorsoft/capacitor-background-geolocation/blob/master/CHANGELOG.md){:target="_blank"} from March 2026 requires a key on iOS as well. v9 also switched to a JWT-based key format, so v8 and older keys do not work with it.

[Pricing](https://docs.transistorsoft.com/purchase/){:target="_blank"} is tiered by the number of application keys: $399 for 1, $599 for 5, $749 for 25 and $999 for 100. Each key unlocks a single app identifier for unlimited users and devices, the purchase is one-time, and it includes 1 year of access to updates. Keys keep working after that year; you just stop receiving new releases. Polygon geofencing is a separate add-on that starts at another $399.

None of this is unreasonable for a specialized SDK. It does mean the cost scales with your app portfolio, an agency needs to think about who owns which key, and a major version bump can come with a re-licensing step.

### The setup is extensive

Beyond the usual permission entries that any background location setup needs, the Transistorsoft installation asks for the license key in `Info.plist` and `AndroidManifest.xml`, the `BGTaskSchedulerPermittedIdentifiers` entry, several background modes, custom `variables.gradle` entries and, notably, `shrinkResources false` in the Android release build type, which disables resource shrinking for your whole app. The closed issues reflect that surface: recurring themes are Gradle dependency resolution (for example [issue #2](https://github.com/transistorsoft/capacitor-background-geolocation/issues/2){:target="_blank"} about resolving `tslocationmanager`) and license validation errors such as [issue #391](https://github.com/transistorsoft/capacitor-background-geolocation/issues/391){:target="_blank"} after the v9 key format change.

### The native engine is a closed binary

The MIT license in the repository covers the plugin wrapper. The tracking engine itself ships as a prebuilt binary: an xcframework on iOS and a roughly 2.9 MB AAR from Maven Central on Android. You cannot read or patch the code that makes the actual location decisions, which matters to some teams for debugging, auditing or app review questions and doesn't matter at all to others.

### New Capacitor majors take longer to arrive

Measured by npm publish dates, support for a new Capacitor major arrived 7 days after Capacitor 5, 11 days after Capacitor 6, 17 days after Capacitor 7 and 35 days after Capacitor 8. That is a respectable pace for a commercial SDK spanning four frameworks, and the current 9.x line targets Capacitor 8. But if your team upgrades Capacitor early, a five-week wait can block the upgrade of the whole app.

## What is the Capacitor Background Geolocation plugin?

The [Capacitor Background Geolocation plugin](../../sdks/capacitor/background-geolocation.md) is a plugin for reliable background location tracking on Android and iOS, built and maintained by the Capawesome team and introduced in [Announcing the Capacitor Background Geolocation Plugin](./announcing-the-capacitor-background-geolocation-plugin.md). It is part of [Capawesome Insiders](../../insiders/index.md), requires Capacitor 8 or later, and is built exclusively on public platform APIs, so there is no binary blob and no behavior that App Review can't reason about.

Its feature set concentrates on the tracking pipeline:

- **Watch sessions** deliver position updates via the [`positionChange`](../../sdks/capacitor/background-geolocation.md#addlistenerpositionchange-) event, also while the app is in the background, driven by a correctly plumbed Android 14+ foreground service with a fully configurable notification.
- **A first-class permissions API** handles the two-step background location upgrade flow that both platforms require, including [`openSettings()`](../../sdks/capacitor/background-geolocation.md#opensettings) for permanently denied permissions.
- **HTTP upload** sends every queued position to your server without involving JavaScript: buffered in a native SQLite queue, uploaded in batches, retried with exponential backoff and only deleted after the server acknowledges them. Your app can also read the queue directly via [`getQueuedPositions(...)`](../../sdks/capacitor/background-geolocation.md#getqueuedpositions), so collecting missed positions doesn't require a server at all.
- **Real tuning knobs** for accuracy, distance filter and update interval, plus [`requestTemporaryFullAccuracy(...)`](../../sdks/capacitor/background-geolocation.md#requesttemporaryfullaccuracy) on iOS and automatic pausing via `iosPausesAutomatically`.
- **Mock location detection** on Android: every position reports whether a mock location provider delivered it.
- **A fused-provider escape hatch**: on devices without Google Play services, such as certain Huawei devices, the plugin falls back to the platform location manager, or you force it with `androidForceLocationManager`. Transistorsoft dropped its Huawei HMS support in version 7.2.0 after Google Play rejections.

You can even test the upload pipeline before your backend exists: the free [Background Geolocation Playground](https://background-geolocation-playground.capawesome.io){:target="_blank"} is a ready-to-use upload target that shows uploaded positions in a table and on a map.

## Transistorsoft vs. the Capacitor Background Geolocation plugin

Here is how the two compare on the axes that decide most projects.

|  | Transistorsoft Background Geolocation | Capacitor Background Geolocation plugin |
|---|---|---|
| License model | One-time per app identifier, $399–$999 for 1–100 keys, 1 year of updates | [Insiders](../../insiders/index.md) subscription ($99/month) or one-time Maintain license ($1,980) |
| What a license covers | This plugin for 1–100 app identifiers; polygon geofencing costs extra | 30+ Insider SDKs across unlimited apps |
| Platforms | Android, iOS | Android, iOS |
| Capacitor support | Capacitor 8 on the current 9.x line, older majors on older lines | Latest Capacitor, requires Capacitor 8+ |
| Motion-detection auto start/stop | ✓ accelerometer-driven state machine | ✗ deliberate; explicit tuning knobs instead |
| Tracking after force-quit / reboot | ✓ `stopOnTerminate: false`, `startOnBoot`, Android headless tasks | ✗ watch session ends; [Capacitor Geofences plugin](../../sdks/capacitor/geofences.md) covers relaunch scenarios |
| Geofencing | ✓ built in, proximity engine beyond the platform limits, polygon as paid add-on | Separate [Capacitor Geofences plugin](../../sdks/capacitor/geofences.md), included in the same subscription |
| HTTP upload with SQLite queue | ✓ extensive configuration (auto sync, batch sync, templates) | ✓ documented server contract with at-least-once delivery and `id`-based deduplication |
| Scheduling and odometer | ✓ | ✗ |
| Devices without Google Play services | Huawei HMS support dropped in 7.2.0 | ✓ platform location manager fallback |
| Native engine | Closed-source binary SDK | Built on public platform APIs |
| Web support | ✗ | ✗ |

The rows are not equally weighted for every app. If your product is a fleet tracker that must record around the clock without the driver ever opening the app, the force-quit row alone can decide it. If your product tracks a delivery during an active shift and your backend must never lose a position, the upload rows matter more.

## The real trade-off: motion intelligence vs. delivery reliability

Transistorsoft's headline feature is a motion-detection state machine. It fuses accelerometer, gyroscope and magnetometer data to decide whether the device is moving, records at the configured distance filter while it is, and turns location services off when the device is stationary. Combined with `stopOnTerminate: false`, `startOnBoot` and headless Android tasks, tracking becomes something you switch on once and stop thinking about, and that engineering is genuinely hard to replicate.

The Capawesome plugin takes the opposite stance on purpose. Its [FAQ](../../sdks/capacitor/background-geolocation.md#faq) states that it deliberately does not include a motion-detection state machine that toggles the GPS based on accelerometer data. Instead it gives you explicit control: a lower accuracy, a `distanceFilter`, a longer `androidInterval`, and on iOS the `iosPausesAutomatically` option, which lets the operating system itself pause updates while the device is stationary. The behavior stays predictable, and everything runs on public platform APIs.

Where the Capawesome plugin invests is the delivery side. The queue is a native SQLite database that survives app restarts and force-quits. Positions are uploaded in batches so many positions share a single radio wake-up, retried with exponential backoff, and only removed after your server acknowledges them. Each position carries a strictly increasing `id` per installation, so your endpoint can deduplicate and delivery becomes effectively exactly-once. The response handling is documented status code by status code, and [`getQueueStatus()`](../../sdks/capacitor/background-geolocation.md#getqueuestatus), [`triggerUpload()`](../../sdks/capacitor/background-geolocation.md#triggerupload) and the [`uploadFailed`](../../sdks/capacitor/background-geolocation.md#addlisteneruploadfailed-) event make the queue observable from your app.

So the honest question is which failure mode costs you more: a battery complaint because tracking ran longer than needed, or a gap in the track because positions were lost between the device and your server.

## Migrating from Transistorsoft

The concepts map well, so a migration is mostly mechanical. The main structural difference: Transistorsoft is configured once via `ready(config)` and then toggled with `start()` and `stop()`, while the Capawesome plugin splits the configuration in two — the queue and upload are configured once via [`setConfig(...)`](../../sdks/capacitor/background-geolocation.md#setconfig) and persisted natively, and each watch session receives its tracking options via `startWatching(...)`.

| Transistorsoft | Capacitor Background Geolocation plugin |
|---|---|
| `ready(config)` + `start()` | [`startWatching(...)`](../../sdks/capacitor/background-geolocation.md#startwatching) |
| `onLocation(...)` | [`positionChange`](../../sdks/capacitor/background-geolocation.md#addlistenerpositionchange-) listener |
| `getCurrentPosition(...)` | [`getCurrentPosition(...)`](../../sdks/capacitor/background-geolocation.md#getcurrentposition) |
| `requestPermission()` | [`requestPermissions(...)`](../../sdks/capacitor/background-geolocation.md#requestpermissions) in two steps |
| `requestTemporaryFullAccuracy(...)` | [`requestTemporaryFullAccuracy(...)`](../../sdks/capacitor/background-geolocation.md#requesttemporaryfullaccuracy) |
| `stop()` | [`stopWatching()`](../../sdks/capacitor/background-geolocation.md#stopwatching) |
| `getState().enabled` | [`isWatching()`](../../sdks/capacitor/background-geolocation.md#iswatching) |
| `sync()` | [`triggerUpload()`](../../sdks/capacitor/background-geolocation.md#triggerupload) |
| `onHttp(...)` | [`uploadFailed`](../../sdks/capacitor/background-geolocation.md#addlisteneruploadfailed-) listener + [`getQueueStatus()`](../../sdks/capacitor/background-geolocation.md#getqueuestatus) |
| `destroyLocations()` | [`clearQueue()`](../../sdks/capacitor/background-geolocation.md#clearqueue) |
| `addGeofence(...)` etc. | [Capacitor Geofences plugin](../../sdks/capacitor/geofences.md) |
| `changePace`, odometer, schedule, headless tasks | No equivalent |

To install the Capacitor Background Geolocation plugin, please refer to the [Installation](../../sdks/capacitor/background-geolocation.md/#installation) section in the plugin documentation. A typical tracking setup with server upload then looks like this:

```typescript
import { Accuracy, BackgroundGeolocation } from '@capawesome-team/capacitor-background-geolocation';

const startTracking = async () => {
  await BackgroundGeolocation.addListener('positionChange', event => {
    console.log('New position:', event.position);
  });
  await BackgroundGeolocation.addListener('uploadFailed', event => {
    console.error('Upload failed:', event.statusCode, event.message);
  });
  await BackgroundGeolocation.setConfig({
    url: 'https://api.example.com/positions',
    batchSize: 100,
    flushInterval: 60000,
    headers: {
      Authorization: 'Bearer eyJhbGciOi...',
    },
  });
  await BackgroundGeolocation.startWatching({
    accuracy: Accuracy.High,
    distanceFilter: 10,
    androidNotification: {
      title: 'Location Tracking',
      text: 'Your location is being tracked.',
    },
  });
};
```

Note that [`setConfig(...)`](../../sdks/capacitor/background-geolocation.md#setconfig) replaces the stored configuration entirely, so always pass every property you want to keep. It persists natively, which also means a rotated authorization header can be applied without stopping the watch session.

Permissions are requested in two explicit steps, matching how both operating systems actually grant background location:

```typescript
import { BackgroundGeolocation } from '@capawesome-team/capacitor-background-geolocation';

const requestPermissions = async () => {
  await BackgroundGeolocation.requestPermissions({
    permissions: ['location', 'notifications'],
  });
  // Explain to the user why background access is needed, then:
  await BackgroundGeolocation.requestPermissions({
    permissions: ['backgroundLocation'],
  });
};
```

A few behavioral differences to plan for:

- **No listener ordering rules.** Transistorsoft requires event listeners to be registered before `ready()`; the Capawesome plugin has no such constraint.
- **Nothing is restored automatically.** Transistorsoft's `ready()` restores persisted state and can resume tracking on its own. The Capawesome plugin starts tracking only when you call `startWatching(...)`, and only one watch session can be active at a time.
- **Uploads don't need a watch session.** Positions are uploaded whenever the app is running and a `url` is configured, including leftovers from a previous session after a force-quit — but not while the app stays terminated.

## What does background geolocation cost in a Capacitor app?

Both plugins in this comparison are commercial, so the real question is what you pay for and how the cost scales.

|  | Transistorsoft | Capawesome Insiders |
|---|---|---|
| Model | One-time purchase | Subscription (Develop) or one-time purchase (Maintain) |
| Price | $399 / $599 / $749 / $999 for 1 / 5 / 25 / 100 app keys | $99/month or $990/year; Maintain $1,980 one-time |
| Updates | 1 year included | While subscribed; Maintain includes 12 months |
| After updates lapse | Keys keep working, no new releases | Installed versions keep working, no new releases |
| Scope | This plugin, per app identifier | 30+ Insider SDKs, unlimited apps |
| Add-ons | Polygon geofencing from $399 | None |
| Evaluation | Free in debug builds, 30-day release trial | 14-day trial on subscriptions |

The honest math: for a single app that only needs background geolocation, Transistorsoft's $399 Starter license is the cheaper option over time. The Insiders subscription pays off as soon as you maintain several apps or use more of the catalog, because the same $99/month covers every Insider SDK — [Geofences](../../sdks/capacitor/geofences.md), [Bluetooth Low Energy](../../sdks/capacitor/bluetooth-low-energy.md), [NFC](../../sdks/capacitor/nfc.md) and 30+ more, out of over 100 SDKs that the Capawesome team maintains overall — in unlimited apps with no per-app keys to manage.

## FAQ

### Do I need a paid license for background geolocation in Capacitor?

Not strictly: the free `@capacitor/geolocation` plugin covers foreground use cases. But it does not provide the Android foreground service that reliable background tracking requires, nor a persistent upload queue. The plugins built for dependable long-running background tracking on both platforms are commercial products, and both options in this comparison are paid. What you pay for is the foreground service plumbing, the two-step permission flows and the delivery pipeline.

### Is Transistorsoft Background Geolocation free?

It is free to evaluate: the SDK is fully functional in debug builds, and a 30-day trial license is available for release builds. Shipping to production requires a paid license, and since version 9 that applies to both Android and iOS release builds.

### Does the Capacitor Background Geolocation plugin keep tracking after the user force-quits the app?

No. On both platforms the watch session ends when the user terminates the app, which the plugin treats as an operating system restriction rather than something to work around with private APIs. Positions already in the queue are preserved and uploaded the next time the app is started. If you need to react to movement after termination, the [Capacitor Geofences plugin](../../sdks/capacitor/geofences.md) uses operating-system-managed region monitoring that can relaunch a terminated app.

### Can I switch from Transistorsoft without rewriting my app?

Mostly. Position watching, permissions and HTTP upload map method for method, and the table above covers the renames. What has no equivalent is the motion-detection state machine, the odometer, scheduling and headless tasks. If your product depends on those, Transistorsoft remains the right tool; if you use it as a tracker with an upload pipeline, the migration is a day of work rather than a rewrite.

## Stay in the loop

New Insider SDKs ship regularly, and the newsletter is the fastest way to hear when one lands that your app can use.

[Subscribe to the Capawesome Newsletter](https://capawesome.io/newsletter/){ .md-button .md-button--primary }

## Conclusion

Choose by failure mode, not by feature count. Transistorsoft is the right choice when tracking must decide on its own when to run and must survive force-quit and reboot: its motion-detection engine and headless operation are unmatched in the Capacitor ecosystem. The [Capacitor Background Geolocation plugin](../../sdks/capacitor/background-geolocation.md) is the right choice when tracking runs during active use of the app and every recorded position has to arrive at your server exactly once, with licensing that covers your whole portfolio instead of one app identifier.

If the terminated-app scenario is what brought you here, read [Announcing the Capacitor Geofences Plugin](./announcing-the-capacitor-geofences-plugin.md) next. Questions about your specific tracking setup are welcome on the [Capawesome Discord server](https://discord.gg/VCXxSVjefW){:target="_blank"}, and the [Capawesome newsletter](https://capawesome.io/newsletter/){:target="_blank"} keeps you posted on new releases.
