Document DB v12 - Improved Interceptors with Soft Delete Integration, AI protections, & Admin UI with Aspire Integration!How!?
Locations Releases
5.2.5 - July 23, 2026
Section titled “5.2.5 - July 23, 2026”BREAKINGFix
The
Shiny.Locations.Extensions static class has been renamed to Shiny.Locations.LocationExtensions. A type named Shiny.Locations.Extensions is indistinguishable from the Shiny.Locations.Extensions.AI namespace once both assemblies are referenced, and the compiler reports that as CS0434 — an error, not a warning — in the consuming project, forcing an extern alias workaround. Every member is an extension method (GetCurrentPosition, GetLastReadingOrCurrentPosition, IsListening, IsInsideRegion, TryStartMonitoring, IsPositionInside), so call sites are unaffected; only code that named the class explicitly needs updating.BREAKINGEnhancement
Shiny.Locations.Extensions.AI registration moved to the
Shiny namespace. AddLocationAITool() now lives on Shiny.LocationsAiServiceCollectionExtensions instead of Shiny.Locations.Extensions.AI.ServiceCollectionExtensions, so the using Shiny.Locations.Extensions.AI; in your MauiProgram is no longer needed — Shiny is a global using from Shiny.Core. This also removes the CS0435 suppression the package previously shipped to work around the namespace/type collision.5.2.0 - July 6, 2026
Section titled “5.2.0 - July 6, 2026”Feature
Shiny.Locations.Extensions.AI — new package exposing read-only GPS as
Microsoft.Extensions.AI tool functions for LLM agents. Register with a single AddLocationAITool(); generates get_current_location, get_distance_to, and estimate_travel_time (great-circle distance + rough ETA). AOT-compatible. See AI Tools.5.0.0 - June 20, 2026
Section titled “5.0.0 - June 20, 2026”BREAKING
Rx removed.
IGpsManager.WhenReading() and IMotionActivityManager.WhenReading() are gone. Use the new C# events GpsReadingReceived (on IGpsManager) and MotionActivityReadingReceived (on IMotionActivityManager) for foreground updates. Delegates remain the recommended way to process readings while backgrounded.BREAKING
The
Type-based AddGeofencing(Type delegateType) and AddGpsDirectGeofencing(Type delegateType) overloads have been removed. Use the generic AddGeofencing<TDelegate>() / AddGpsDirectGeofencing<TDelegate>() instead.Enhancement
Geofence delegate and manager registration now flows through
AddSingletonAsImplementedInterfaces, and AddGpsDirectGeofencing only registers a manager when one isn’t already present - so it composes cleanly when another module (e.g. Shiny.Notifications) also adds geofencing.Feature
Motion activity recognition support. Detect walking, running, cycling, automotive, and stationary states using
IMotionActivityManager with AddMotionActivity() registration.Feature
New
IMotionActivityDelegate for background motion activity processing.FeatureiOS
Motion activity powered by
CMMotionActivityManager. Requires NSMotionUsageDescription in Info.plist.FeatureAndroid
Motion activity powered by Google Play Services Activity Recognition API. Silently no-ops if Play Services are unavailable.
Feature
Stationary detection now built into all GPS providers.
GpsReading.IsStationary is set automatically on Android, iOS legacy, and iOS 18+ before readings reach delegates or the observable stream.EnhancementAndroid
AndroidGpsRequest now exposes StationaryMetersThreshold and StationarySecondsThreshold to configure stationary detection sensitivity.EnhancementiOS
AppleGpsRequest now exposes StationaryMetersThreshold and StationarySecondsThreshold for legacy iOS stationary detection. iOS 18+ continues to use native CLLocationUpdater stationary detection.BREAKINGChore
Stationary detection removed from
GpsDelegate. The IsStationary, DetectStationary, StationaryMetersThreshold, and StationarySecondsThreshold properties have been removed. Use GpsReading.IsStationary instead.FeatureBlazor
New
Shiny.Locations.Blazor package brings foreground GPS to Blazor WebAssembly via navigator.geolocation. Register with builder.Services.AddGps() and inject IGpsManager like any other platform. Background GPS and geofencing are not supported by browsers and remain unavailable on web.Feature
GpsDelegate now supports MaximumDistance and MaximumTime filters that act as safety nets — if either maximum threshold is crossed, OnGpsReading fires immediately regardless of minimum conditions.BREAKINGChore
GpsDelegate minimum filters (MinimumDistance and MinimumTime) now use AND logic — both conditions must be met before OnGpsReading fires. Previously, either condition passing would trigger the reading.4.0.1 - March 26, 2026
Section titled “4.0.1 - March 26, 2026”FixAndroid
AndroidX version pins
4.0.0 - March 26, 2026
Section titled “4.0.0 - March 26, 2026”Feature
Windows support added (No Background Support at this time)
FixAndroid
Don’t request ACCESS_BACKGROUND_LOCATION unless realtime GPS request and less than API level 31 OR standard location background tracking is being requested
Fix
The base GpsDelegate calculations could receive a batch and trigger multiple calculations. This has been made into a synchronized operation
Enhancement
GpsDelegate now has a boolean to detect if stationary
EnhancementiOS
iOS 18+ now uses CLMonitor for GPS
Enhancement
New geofence registration mechanics for iOS 17+
3.2.2 - January 3, 2024
Section titled “3.2.2 - January 3, 2024”EnhancementAndroid
Replace deprecated location request used in Android GPS request
3.2.1 - December 19, 2023
Section titled “3.2.1 - December 19, 2023”FixAndroid
Ensure post_notifications permissions is also requested
3.2.0 - December 8, 2023
Section titled “3.2.0 - December 8, 2023”Enhancement
GPS & Geofencing managers now allow you to check current permissions without requesting
FixAndroid
GPS won’t always auto-restart post reboot
3.1.1 - November 1, 2023
Section titled “3.1.1 - November 1, 2023”FixAndroid
GPS Foreground Service start/stop fix
3.0.0 - September 5, 2023
Section titled “3.0.0 - September 5, 2023”EnhancementApple
You can now control location manager properties like ActivityType and ShowsBackgroundLocationIndicator via AppleLocationConfiguration service
EnhancementAndroid
To configure the foreground service notification, your IGpsDelegate can also implement IAndroidForegroundServiceDelegate with ANDROID preprocessor directives


