
Introduction
Core Location makes basic iOS geofencing easy to start. Register a circle, wait for a callback, show a notification. Then the product grows.
Suddenly you need hundreds of store zones, irregular territories, dwell analytics, or fleet-wide coordination, and the operating system pushes back.
This guide explains how Core Location region monitoring works, where it breaks, and what to use instead. We compare native, hybrid, backend, beacon, and third-party approaches.
The short version: use Core Location for lightweight, device-centric entry and exit experiences. When geofencing becomes an operational system, change the architecture.
Key Takeaways
- Core Location fits a few circular, device-side regions, not an enterprise geofencing platform.
- Apple documents 20 monitored regions or conditions per app, so check current docs before designing.
- Polygons, isochrones, and centrally managed zones need backend logic or a specialized platform.
- Permissions, approximate location, and real-device testing decide whether events actually arrive.
How iOS Geofencing with Core Location Works
Core Location's role
You create a CLCircularRegion (a center coordinate plus a radius), register it with CLLocationManager, and receive system-generated callbacks. The app does not calculate boundary crossings itself.
let region = CLCircularRegion(
center: CLLocationCoordinate2D(latitude: 39.9612, longitude: -82.9988),
radius: 150,
identifier: "depot-01")
region.notifyOnEntry = true
region.notifyOnExit = true
manager.startMonitoring(for: region)
The delegate then receives didEnterRegion, didExitRegion, didStartMonitoringFor, and monitoringDidFailFor.
Apple's documentation lists the registration API as deprecated in iOS 27. Since iOS 17, CLMonitor offers circular and beacon conditions with an asynchronous event sequence. Check which API fits your deployment target.
Apple documents GPS, Bluetooth, crowd-sourced Wi-Fi hotspots, and cellular towers for Location Services, though not every geofence event necessarily uses every signal.
Authorization and background operation
Permission design determines whether monitoring works when the app is not open:
- When In Use does not relaunch a terminated app. Always does, for region, visit, and significant-change events.
NSLocationWhenInUseUsageDescriptionis required for either request. Always also needsNSLocationAlwaysAndWhenInUseUsageDescription. Missing keys make requests fail.- Calling
requestAlwaysAuthorization()fromnotDeterminedstarts a provisional path: "Allow While Using App" grants provisional Always, and a later prompt asks the user to confirm. - Under reduced (approximate) accuracy on iOS 14+, region monitoring and beacon ranging are unavailable.
Denied permissions, Location Services turned off, and changes in Settings all alter behavior at runtime. Check accuracyAuthorization and handle each state.
Event lifecycle and implementation checks
- Registering while already inside a region does not fire an entry event. Request the region's state separately.
- Handle
monitoringDidFailForand re-register regions after lifecycle changes. Apple notes monitoring resumes only after the first unlock following a reboot. - Treat callbacks as approximate. Build idempotent handlers, deduplicate events, and provide a user-facing fallback.
Where native monitoring fits
Native monitoring suits:
- Saved places and reminders
- Proximity-based app behavior
- Simple consumer notifications
It struggles with:
- Large location catalogs and centralized updates
- Irregular service territories
- Real-time fleet decisions
- Road-aware arrival logic
Core Location Geofencing Limits
Active-region capacity
Apple documents that an app cannot monitor more than 20 regions (or 20 conditions of any type with CLMonitor) at once, shared across location manager instances. Teams with many stores, jobs, or delivery stops end up prioritizing nearby regions, rotating the monitored set, or moving evaluation to a backend.

Boundary shape and geographic model
Native region monitoring is circular. Campuses, neighborhoods, restricted zones, and delivery territories rarely are.
Straight-line radius also misleads in logistics. A depot a mile or two away across a river may still be 40 minutes by road. Shapes that fit real operations are not available natively:
- Polygons for irregular campuses, zones, and territories
- Isochrones (reachable travel-time contours) for service and delivery workflows
A note on radius: maximumRegionMonitoringDistance is a maximum, not a minimum. Apple's current documentation specifies no universal minimum radius.
Accuracy, latency, and boundary behavior
Urban canyons, tunnels, indoor spaces, weak signals, and GPS drift all blur the line between nominal radius and the device's location estimate. Events can be delayed, missed, duplicated, or fire near the edge.
Apple's archived guidance says a device must move a minimum distance past the boundary and stay at least 20 seconds, with roughly 200 m used as a testing assumption. It also notes that disabled Wi-Fi reduces accuracy and disabled Background App Refresh prevents wakeups.
Treat that as historical guidance, not a delivery SLA. Document your tolerance and test crossings in both directions.
Background execution and battery
Region monitoring is lower power than continuous high-accuracy updates, which activate extra hardware. Apple's energy guide cautions against continuous services for most non-navigation apps. Keep the distinction clear: monitoring boundaries is not tracking a trajectory.
Privacy and permission dependency
Users can deny, restrict, or limit location at any time. Plan for graceful degradation. App Review Guidelines 5.1.1 and 5.1.5 require consent, clear purpose, and data minimization.
California treats precise geolocation as sensitive personal information, and the FTC's 2024 InMarket order shows what inadequate consent can cost. Encrypt transmission and storage, and explain in plain language why you need Always access.
Missing operational capabilities
Core Location offers device primitives. It does not provide:
- A central rules engine
- Dwell analytics or historical reporting
- Cross-platform orchestration
- Fleet-level observability
Do not force it to manage large geofence catalogs, reconcile events across devices, or compute business-specific arrival logic. That work belongs on a server.
Alternatives to Core Location Geofencing
Native iOS location alternatives
| API | Trade-off |
|---|---|
| Significant-location-change | Notifies after roughly 500 m of movement, no more than once every five minutes. Coarse, but it can relaunch the app |
Visit monitoring (CLVisit) |
Approximate arrival and departure times; a visit may lack one of them |
| Beacon regions | Proximity by UUID/major/minor, useful indoors, not geographic geometry |
| Standard background updates | Continuous trajectory, highest battery cost |
These solve different problems. None removes the 20-region ceiling or adds polygons.
Backend or server-side geofencing
The device uploads location samples and a server evaluates polygons, territories, distance, dwell, or travel time. PostGIS ST_Contains handles point-in-polygon, and managed services like AWS geofence collections default to 50,000 geofences per collection.

Trade-offs to plan for:
- Network dependency and event latency
- Location data costs, retention policies, and service security
- Offline queuing when connectivity drops
- Battery impact tied to how often the app samples
Hybrid device-plus-backend designs
A practical pattern: iOS collects low-power signals or fires coarse triggers, and the backend runs complex evaluation, deduplication, business rules, and notifications. Build in safeguards:
- Timestamps and accuracy metadata on every event
- Retry queues for offline periods
- Hysteresis or debounce to stop flapping at boundaries
- Idempotent processing and reconciliation when connectivity returns
Specialized geofencing platforms and SDKs
Consider a third-party SDK when you need many geofences, polygons, cross-platform apps, dashboards, or visit analytics. Radar, for example, documents circles, polygons, and isochrones with server-side events. Transistorsoft rotates a nearest-active set but still caps at 20 active on iOS.
Scale means different things here: server capacity, stored geofences, and native registrations are not the same. Evaluate vendors on:
- Supported iOS versions and background behavior
- Battery profile and accuracy methodology
- How latency is defined
- Pricing model and cost at projected volume
- Data residency and privacy controls
- Observability, SDK maintenance, and migration risk
Enterprise location infrastructure for logistics and field operations
For logistics, fleet, and field-service products, geofencing is rarely the whole requirement. NextBillion.ai is worth evaluating as a complementary layer when you also need tracking, route-aware arrival, dispatch, or custom map data.
Its Geofence API documentation covers circles, custom polygons, and isochrone boundaries, with circle radius up to 50 km and batch creation up to 100. Related capabilities include:
- Isochrone API: up to 4 contours of up to 40 minutes or 60,000 m
- Live Tracking API and iOS Tracking SDK for asset tracking
- Navigation SDK with iOS 12.0 as the minimum deployment target
- Route Reconstruction for completed trips (not live region events)
This layer complements native iOS behavior. Your app still handles permissions and location collection. Confirm current capabilities and iOS requirements with the vendor before committing.
How to Choose the Right Approach
Match region count, boundary shape, latency, and platform scope before you lock the architecture.
Six questions
- How many regions do you need?
- Are boundaries circular or irregular?
- Does travel time matter more than radius?
- What latency is acceptable?
- Do you need analytics or central control?
- Must it work across iOS, Android, web, or fleet devices?
If you need few circular regions, radius-based triggers, loose latency, no central analytics, and iOS only, stay with Core Location. Broader shape, scale, or multi-platform needs usually favor a hybrid or specialized platform.
Build-versus-buy checklist
- Privacy and consent flow, including Always vs When In Use prompts
- Battery expectations for background tracking
- Offline behavior when events cannot upload
- Background permissions and system-kill scenarios
- Real-device testing of enter and exit events
- Event observability for duplicates and missed triggers
- Cost at projected location and device volume
- Team capacity to maintain location infrastructure after launch
Phased validation
- Prototype with Core Location.
- Test permission and lifecycle edge cases on physical devices.
- Measure event timing and battery impact.
- Move to a hybrid or specialized platform if native fails your scale or reliability criteria.

Frequently Asked Questions
Can I use geofencing on my iPhone?
Yes, through apps that support it, provided device settings, permissions, and iOS capabilities allow it. You use an app's geofences; iOS does not offer unrestricted system-wide geofences.
Why is my iPhone location disabled?
Check Settings > Privacy & Security > Location Services, then the app's own permission. Screen Time restrictions or device management can also lock these settings. Causes vary by device.
What is the difference between geolocation and geofencing?
Geolocation determines a device's position. Geofencing applies a geographic rule that triggers an action when the location meets a condition, such as entering a boundary.
Does the iPhone tell you when someone checks your location?
Not generally. iOS has no universal alert when someone views your location. Apple notifies you when someone sets a location-based notification about you through sharing, and individual apps differ.
How many geofences can an iOS app monitor with Core Location?
Apple documents a limit of 20 regions, or 20 conditions of any type with CLMonitor, per app. Verify against current documentation for your target iOS release.
What are alternatives to Core Location geofencing on iOS?
Natively, significant-location-change, visit, and beacon monitoring. For more regions, complex shapes, analytics, or central control, use backend, hybrid, or specialized platforms.


