0.0.5Native location SDK · iOS & Android

Background location
that actually stays on

Beekon is a small, focused SDK for capturing where your users go — in the foreground, in the background, and after the app has been swiped away. It runs on the device, keeps a rolling history, and respects the battery. No servers to wire up. No surprises in production.

3
battery presets — from light passive tracking to live foreground use
7d
of location history kept on the device, ready to read at any time
4
platforms covered: Android, iOS, Flutter, and React Native
Built on the platforms you already trust
FusedLocation
CoreLocation
pub.dev
npm
Maven Central
SPM
01 · Platforms

One SDK.
Every platform you ship on.

We build the Android and iOS libraries ourselves, in their native languages. Flutter and React Native get the same SDK through a thin language wrapper — same behaviour, same battery, same history. Pick whichever stack your team is on; we keep them in step.

Available
Android
Kotlin library · Android 8 and up
Available now
Available
iOS
Swift library · iOS 17 and up
Available now
Available
Flutter
Dart plugin · wraps both natives
Available now
Available
React Native
TypeScript module · wraps both natives
Available now
02 · Integration

Configure.
Start. Listen.

The shape of the API is the same on every platform: one config object, one start call, and a stream of locations to listen to. The naming follows whatever feels natural in your language — Kotlin Flow on Android, AsyncStream on iOS, Streams in Dart, event listeners in TypeScript. Nothing exotic to learn.

importin.wayq.beekon.Beekon
 
// Configure once. Defaults apply; override fields as needed.
Beekon.configure(
BeekonConfig(
accuracyMode=AccuracyMode.Balanced,
minTimeBetweenLocationsSeconds=30,
notification=NotificationConfig("Beekon"),
)
)
 
// Stream gated locations on the caller's scope.
Beekon.locations
.onEach { fix->render(fix) }
.launchIn(scope)
in.wayq.beekon · MainActivity.kt
03 · Battery

Three presets.
Honest battery numbers.

Pick how often you need a fix and how far apart points should be — those are the only two knobs. The presets cover the common cases, and you can override either value when you need to. The battery numbers below are measured on real phones running real builds, not estimated.

Distance between fixes
100m
Update interval
30s
Battery / hour
5–10%
Use case
The everyday default.
Battery draw1h sustained
0%5–10% on Pixel 8 · iPhone 15 Pro30%
04 · What makes it different

Three things we
refuse to compromise on.

Most location SDKs cut a corner somewhere — a shared core that pretends to be native, a smoothing layer that hides what the phone actually saw, or a server you didn’t ask to depend on. Beekon doesn’t. These are the choices that make continuous tracking actually work in the wild.

01
Built natively. No shared core.
Each platform gets a real native library, written in its own language. We don’t squeeze a shared C engine into both — location is too tied to the operating system for that to work well. Instead, the two libraries expose the same API, behave the same way, and are tested side-by-side.
Kotlin for AndroidSwift for iOS
02
What the OS sees, you see.
The phone’s own location service already does the heavy lifting — fusing GPS, Wi-Fi, sensors, and motion. We don’t second-guess it with our own filters or smoothing layers. You get accurate, faithful points, not numbers we’ve massaged in the middle.
No mystery filteringFaithful to the source
03
History stays on the device.
Every point goes into a local database that lives inside the SDK. Nothing is sent to our servers, because we don’t run any. Your app reads history when it needs to — even when the user has been offline for days. We keep the last seven days by default, and prune older points automatically.
Local storageRead history any time
05 · Pricing

License what
you actually ship.

Pay for the platforms you actually ship on. One license covers one app and unlimited builds, including every update we ship on the same major version. Bundle two or more and the price drops automatically.

Android + iOS · 2 licenses · bundle saves $60/mo
$5,380/yr
Continue to checkout
Indie
$299 /platform/mo
  • One production app per license
  • Email support · 48h response
  • All v1 updates included
  • For teams under $1M annual revenue
For solo devs and small teams
06 · Questions

Asked, often.

The questions we get most often — and a few you should ask before picking any location SDK. If something here doesn’t match what you need, the Enterprise tier is where we get into the details.

One production app per platform, unlimited builds, every update within the same major version, and email support. If you need to ship more than one app, or want to redistribute the SDK, talk to us about Enterprise.
Because location is an operating-system feature, not a math problem. Each platform has its own background rules, permission model, and battery behaviour — and getting them right means writing native code, not wrapping a shared C library and hoping. Both libraries follow the same written contract, so behaviour stays consistent across platforms.
Yes. On Android we use a foreground service so the system keeps us alive even under battery-saver and aggressive OEM behaviour. On iOS we use the platform’s background location mode plus the system wake-up that fires when the user moves a meaningful distance — the same approach Apple’s own apps use.
On the device, in a local database that ships inside the SDK. Nothing is sent to our servers — we don’t run any. Your app reads history when it needs to. By default we keep the last seven days; older points are pruned automatically.
No. The phone’s own location service already does that work, and it has access to sensors and GPS we don’t. We pass its output through to your app, applying only the distance and interval rules you configure. What the OS sees is what you get.
Yes. The development build is fully functional and free to use — it just prints a small notice in your logs. A paid license removes the notice and lets you ship to production.