NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Flutter plugin for the Beekon location SDK (Android + iOS).
Last release 3 months ago
07 Jul 2026
Ships fairly regularly
a new release about every 2 weeks
Some releases are documented
notes for 8 of 14 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
14 releases · first in 2026
One column per month.
Wraps native 0.4.0. Adds the explicit permission-request layer (permission-request-flow-v1). Additive; no breaking changes.
Wraps native 0.4.0. Adds the explicit permission-request layer
(permission-request-flow-v1). Additive; no breaking changes.
Beekon.requestPermission(permission),
Beekon.requestNextNeededPermission() (requests the first required-but-unsatisfied
permission in the doctor list, or returns null), and
Beekon.openSettings(permission), with the new PermissionRequestResult and
PermissionRequestOutcome types. The SDK still never requests permissions
implicitly — these run only when you call them, in-context; the read-only
getRequiredPermissions() doctor is unchanged. Coexists with permission_handler.Internal — renamed the plugin's Android package in.wayq.beekon_flutter → com.getbeekon.flutter (and the example app to com.getbeekon.flutter.example)
in.wayq.beekon_flutter →
com.getbeekon.flutter (and the example app to com.getbeekon.flutter.example)
for brand consistency with the native com.getbeekon.sdk. Implementation detail
only — the Dart API and the beekon_flutter package name are unchanged, and
Flutter regenerates each host's plugin registrant on build. Still wraps native 0.3.0.Wraps native SDK 0.3.0. Breaking (pre-1.0) — the native public API was reshaped.
Wraps native SDK 0.3.0. Breaking (pre-1.0) — the native public API was reshaped.
io.github.beekonlabs:beekon:0.3.0 (Kotlin package com.getbeekon.sdk) and
iOS BeekonKit 0.3.0.StopReason: cloudModeUnavailable removed, backgroundStartDenied added —
a background foreground-service start was denied; the session is kept and a
later resume recovers it. Mirrors the native reshape.https://api.<cell>.getbeekon.com from the
cell-aware project key (bkproj_<cell>_<secret>) — there is no baked-in default
endpoint.setUserId and removeGeofences now surface native validation /
GeofencesManagedByServer errors through the normal error channel (both became
throwing in native 0.3.0).BREAKING — `BeekonConfig` is now a sealed three-arm type cloud / custom / local, replacing the previous two-arm cloud / selfManaged. Build it with Bee
BeekonConfig is now a sealed three-arm type cloud / custom /
local, replacing the previous two-arm cloud / selfManaged. Build it with
BeekonConfig.cloud(...), BeekonConfig.custom(sync: ...), or
BeekonConfig.local(...). The old BeekonConfig.selfManaged(...) constructor is
removed: a selfManaged with a sync becomes custom; without a sync
it becomes local.TrackingConfig. The tracking
knobs (minTimeBetweenLocationsSeconds, minDistanceBetweenLocationsMeters,
accuracyMode, whenStationary, stationaryRadiusMeters, detectActivity) move
off the config constructors into a TrackingConfig value passed as tracking:
on the custom / local arms.io.github.beekonlabs:beekon) and
iOS (beekon-ios-binary) now track 0.2.0.Beekon.setUserId(String?) — sets the user id sent top-level (user_id) in
every sync upload envelope and used for Beekon Cloud MTU metering. extras is now
fully opaque; use setUserId for the metered user identity.Requires the native SDKs ≥ 0.2.0.
Per-geofence local notifications — BeekonGeofence now takes an optional notification: GeofenceNotification(onEnter?, onExit?, delivery). Each directio
BeekonGeofence now takes an optional
notification: GeofenceNotification(onEnter?, onExit?, delivery). Each
direction's NotificationContent carries title / body (required),
importance (NotificationImportance, default high), deepLink, and a
data string map. With delivery set to NotificationDelivery.local (the
default), the SDK renders the OS notification on the device at crossing time —
it works offline and even when the app has been killed. NotificationDelivery.cloud
is reserved (cloud mode only, not yet implemented). In self-managed mode
delivery must be local; cloud mode accepts local or cloud. Adds the
GeofenceNotification, NotificationContent, NotificationDelivery, and
NotificationImportance types. Requires the native SDKs ≥ 0.1.2.getRequiredPermissions() — the permission "doctor". Returns the OS
permissions the current configuration needs as a List<PermissionRequirement>
(permission: BeekonPermission — location / backgroundLocation /
activityRecognition / notifications; importance: PermissionImportance —
required / recommended; satisfied against the live grant; and a
human-readable rationale). The config-aware companion to the location-only
getPermissionStatus() — call it after configure(). Read-only and never
prompts; Beekon still never requests permission, and start() does not
preflight. Requires the native SDKs ≥ 0.1.2.Native SDK pins bumped to 0.1.1 — Android Maven coordinate and iOS SwiftPM binary now track BeekonKit / beekon 0.1.1 (device control plane, build-time
beekon 0.1.1 (device control plane,
build-time license gate, and related native fixes since 0.1.0).setWrapperInfo now declares the Flutter wrapper
product id for build-time license enforcement (build-gate-v1).Moved to the `beekonlabs` GitHub org. The Android native dependency coordinate is now io.github.beekonlabs:beekon (was io.github.wayqteam:beekon), and
beekonlabs GitHub org. The Android native dependency
coordinate is now io.github.beekonlabs:beekon (was io.github.wayqteam:beekon),
and the iOS binary/source repos are under github.com/beekonlabs. This is
internal to the plugin — the pub.dev package name (beekon_flutter) is
unchanged and no consumer code changes are required.getPermissionStatus() — read-only permission query. Returns the current
location grant as a PermissionStatus (level: notDetermined / denied /
restricted / foreground / background; nullable accuracy: full /
reduced) for pre-start checks, without ever prompting. Adds the
PermissionLevel / PermissionAccuracy enums and isAuthorized /
canTrackInBackground getters. Beekon still never requests permission — the
app owns that; during tracking, loss surfaces on state. On Android, "not yet
asked" and "denied" both report notDetermined; restricted is iOS-only.
Requires native SDKs ≥ the release that adds the API.Beekon Cloud mode (cloud-mode-v1): BeekonConfig.cloud({projectKey, endpoint?, notification?, logLevel}) — a bkproj_ project key with server-owned conf
BeekonConfig.cloud({projectKey, endpoint?, notification?, logLevel}) — a bkproj_ project key with
server-owned config, geofences and license; default endpoint
https://api.getbeekon.com. Adds the BeekonMode enum,
StopReason.cloudModeUnavailable, and InvalidConfiguration. Requires native
SDKs ≥ 0.0.9.Beekon.getLog/exportLog/clearLog/
setLogLevel/log, the logs Stream<LogEntry>, forwardLogsToConsole, and
the LogEntry / LogLevel types. Requires native SDKs ≥ 0.0.9.SyncConfig.syncThreshold (beekon#20): pending-fix count that triggers
an early upload of regular fixes ahead of the intervalSeconds schedule (not
subject to the Android ~15 min WorkManager floor). 0 (the default) leaves
regular fixes to the schedule. Independent of this setting, a geofence event
and a session stop with pending fixes always flush immediately while sync is
configured. Requires the native SDKs ≥ 0.0.9.BeekonConfig is now a sealed two-arm type built via
BeekonConfig.cloud(...) / BeekonConfig.selfManaged(...); the unnamed
const BeekonConfig({...}) constructor was removed. Tracking params, sync,
and licenseKey now live only on the selfManaged arm.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →