Why exit events can be delayed or inconsistent, and how to get precise, reliable exits when you need them.
Why Exits Are Often Delayed
If you’ve used GeoHook for a while, you’ve probably noticed a pattern: entries are fast and precise, but exits can be slow and inconsistent. You leave home, drive for several minutes, and only then does the exit webhook fire. Or sometimes it fires quickly, and other times it takes much longer. This is not a bug — it’s a fundamental consequence of how iOS handles background location.
Entry: Precision Mode Is Active
When you approach a monitored area, GeoHook activates precision monitoring: high-accuracy GPS updates, frequent position checks, and exact boundary detection. This is why entries feel fast and accurate — GeoHook is actively watching for the boundary crossing with the best GPS accuracy available.
Inside: Precision Mode Turns Off
Once you’re inside the area, GeoHook switches back to low-power mode. This is a deliberate decision for a simple reason: you might stay inside the area for hours, days, or even weeks (think of your home or office). Keeping precision GPS running the entire time would drain your battery rapidly and provide no benefit — you’re already inside, and actions have already fired.
Exit: At the Mercy of iOS
When you leave the area, GeoHook is in low-power mode and cannot detect the exact moment you cross the boundary. Instead, it depends entirely on iOS delivering the exit event. iOS monitors geofence boundaries in its own way, using a combination of GPS, Wi-Fi, and cell tower data, and delivers exit events on a best-effort basis.
This means exit timing depends on factors outside GeoHook’s control:
Speed of movement: If you leave quickly by car, iOS detects the exit sooner. If you walk slowly, it may take longer.
Phone activity: If the screen is on or another app is using location, iOS has fresher position data and detects the exit faster.
Geofence radius: Smaller geofences tend to produce less consistent exit timing than larger ones.
System load: iOS may delay location processing when the system is busy or in power-saving mode.
Signal conditions: Poor GPS reception (indoors, urban canyons) makes it harder for iOS to determine when you’ve left.
Bottom line: There is no iOS API available to apps that would allow precise exit detection using GPS alone. Apple intentionally restricts this to protect battery life. GeoHook cannot work around this system limitation.
What to Expect in Practice
Based on real-world usage:
Driving away: Exit typically detected within 1–5 minutes
Walking away: Exit may take 3–10 minutes or occasionally longer
Stationary near the edge: Exit can be very inconsistent — iOS may not detect it for a long time if you’re barely outside the boundary
The variation between quick and slow exits is normal. It’s not that something worked one time and broke the next — it’s iOS making different decisions based on conditions that are invisible to both you and GeoHook.
Entry vs. Exit: How It Works
The Solution: Stationary iBeacons
If your automation requires reliable and timely exit detection, the best solution is to add a stationary iBeacon at the location.
Why iBeacons Solve This
iBeacon detection works completely differently from GPS geofencing:
Bluetooth-based: Detection uses Bluetooth Low Energy, not GPS. When your iPhone moves out of the beacon’s Bluetooth range, the exit is detected directly.
No battery trade-off: iOS handles iBeacon region monitoring efficiently in the background without requiring precision GPS.
Consistent timing: Bluetooth range is physical and predictable. You either receive the signal or you don’t — there’s no ambiguous zone like with GPS drift.
Works indoors: GPS struggles inside buildings, but Bluetooth works perfectly in enclosed spaces.
With a stationary iBeacon, both entry and exit become fast and reliable. The Bluetooth signal has a well-defined range, so GeoHook detects the transition promptly in both directions.
Setting It Up
Get an iBeacon-compatible device (see the Using iBeacons guide for recommended vendors)
Place it at the location where you need precise exits (e.g. your home, office, or gym)
In GeoHook, go to Settings → Stationary iBeacons and add it
Assign the beacon to your location
Optionally adjust the beacon’s TX power to control the detection radius
Best of both worlds: You can use a GPS geofence and an iBeacon on the same location. GeoHook treats both as area detectors — whichever triggers first counts. This gives you the wide-range coverage of GPS for early entry detection plus the precision of Bluetooth for reliable exits.
For a complete walkthrough on choosing, configuring, and tuning iBeacons, see the Using iBeacons guide.
Other Tips for Better Exit Timing
If iBeacons aren’t an option, these adjustments can help improve GPS-based exit detection:
Use a larger geofence radius. A 200–300 m radius gives iOS a bigger boundary to work with, which can improve exit detection consistency. Very small radii (100 m) are harder for iOS to monitor reliably.
Avoid Low Power Mode. iOS significantly throttles background location processing in Low Power Mode, making exit detection even slower.
Don’t force-close the app. If GeoHook is force-closed, iOS cannot wake it for geofence events at all — neither entry nor exit.
Keep Bluetooth enabled. Even for GPS-based locations, having Bluetooth on gives iOS additional signals (nearby Wi-Fi, BLE beacons) to refine its position estimate.