Geofencing that respects privacy

Drop-in geofencing for Flutter. Everything runs on-device. No tracking vendors, no external calls.

Free for development • Open source core • Unlimited local testing

Polygon zoneCircle zone

Privacy-first

Everything runs on-device. Zero external calls. Easy to explain and defend in privacy reviews.

Unlimited zones

Circles and polygons. No native API limits. Model complex geofences without server-side hacks.

Production-ready

Built for real apps: robust error handling, debug hooks, and clear lifecycle events.

Battery optimized

Smart GPS profiles and proximity-based updates so you stay efficient without missing events.

Installation

pubspec.yaml
dependencies:
  polyfence: ^0.1.0

Usage

main.dart
await Polyfence. instance.initialize();

final zone = Zone.polygon(
  id: 'area',
  name: 'Coverage Area',
  coordinates: [
    PolyfenceLocation(51.5074, -0.1278),
    PolyfenceLocation(51.5084, -0.1268),
    PolyfenceLocation(51.5094, -0.1288),
    PolyfenceLocation(51.5084, -0.1298),
  ],
);

await Polyfence. instance.addZone(zone);
await Polyfence. instance.startTracking();
Live example
<10MB
Memory footprint
100% private
On-device only
MIT license
Open source

Ready to try?

Get Started

Takes about 5 minutes. No signup required for local testing.