What it means
We're removing geofencing as an approved foreground services use case. Developers can instead use the Geofence API for this use case.
Play Console Help, foreground service requirements (preview)
Since Android 10, a foreground service that reads the location declares android:foregroundServiceType="location". The store check lists those services. What each one does (navigation, workout tracking, or geofencing) is not in the binary, so the result is not determined, with the list of services to review.
Deadline
From January 27, 2027, as listed in Google's Play policy deadlines. The store check applies the rule from that date; before it, the finding is titled "Required from" the date. It is never a blocker: what Google requires is not in the binary.
How to fix it
1. Find what the location service is used for
Review each service the store check lists. If it only waits for the user to enter or leave an area, it falls under this change.
2. Register geofences instead
val geofence = Geofence.Builder()
.setRequestId("store-42")
.setCircularRegion(lat, lng, 150f)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER)
.build()
LocationServices.getGeofencingClient(context).addGeofences(
GeofencingRequest.Builder().addGeofence(geofence).build(),
geofencePendingIntent
)3. Update the Play Console declaration
Remove geofencing from the foreground service declaration, or remove the location type if the service no longer needs it.
Check before you submit
Upload the APK, AAB or split-APK set (XAPK, APKS, APKM) on the store check page. It runs PLAY-FGS-GEOFENCING against the dates on this page, then deletes the file: nothing about the app is kept.
FAQ
My location service is for turn-by-turn navigation. Is it concerned?
No. Only geofencing loses its approval. The store check cannot tell the two apart, which is why it reports not determined rather than a failure.
The location service comes from a library. What should I do?
Check what the library uses it for. If the app never starts it, remove the service from the merged manifest with tools:node="remove"; the foreground service declaration covers every type the uploaded build contains.