LocationButton (SwiftUI) broken or changed in iOS 26?

I just spend the morning debugging LocationButton and the associated CLLocationManagerDelegate only to realise that it works perfectly in iOS 18.5 but no longer works for me in iOS 26.0, 26.2 or 26.2.1 (the latter on-device). It does work when I run my app on macOS 26.2 (Designed for iPad).

Is there a change in behaviour or requirements on iOS I am missing?

On iOS 18.5 I observe that the authorisation status changes from .notDetermined to .authorizedWhenInUse after the LocationButton has been tapped and my delegate is able to obtain the location through locationManager(_ , didUpdateLocations:).

On iOS 26.x the authorisation status remains .notDetermined and my delegate receives locationManager(_:didFailWithError:) with error code .denied.

Setting NSLocationWhenInUseUsageDescription in my Info.plistdid not help.

Just in case ;) FB21798098 (SwiftUI LocationButton fails to acquire authorization on iOS 26)

I've found the root cause!

I have been using the .clipShape(Circle()) modifier which worked perfectly well on iOS 18 but appears to break authorization on iOS 26. Once I removed this modifier, the LocationButton started to acquire "when in use" authorization as expected...

LocationButton(.currentLocation) {
    ...
}
.foregroundColor(.white)
.symbolVariant(.fill)
.labelStyle(.iconOnly)
// .clipShape(Circle())
LocationButton (SwiftUI) broken or changed in iOS 26?
 
 
Q