Apple Watch Ultra 2: headingAccuracy near 89° even with correct heading; intermittent 180° reversal

Apple Watch Ultra 2, watchOS 27.0, Xcode 27. I use CLLocationManager.startUpdatingHeading(), headingFilter=1 and CLHeading.magneticHeading directly, with no offset or GPS course.

During surfing, my app and Apple Compass both showed an apparent error of about 180 degrees. The iPhone was not nearby or connected. Later, outside water, readings returned to normal.

An analog compass on the opposite arm differed by about 30 degrees initially, then agreed. All saved Int(headingAccuracy) values were 89; it still displays 89 while the heading is correct. Raw fractional values were not saved.

Is this an expected or sentinel value on watchOS? What calibration and diagnostics are recommended for the intermittent reversal? The app also uses an underwater-depth extended runtime session; its errors have not been linked to the heading issue.

Can't say whether it is related, or whether it affects heading at all, but if you have not tried it, see if CLActivityType.maritime makes a difference.

It is new in iOS 27 and watchOS 27, for "activities in vessels on water". Set it as the activityType of the same CLLocationManager you call startUpdatingHeading() on. A surfboard is a stretch for "vessel", but it is one line to find out.

I have a note at 7strikes.dev that covers the usage pattern.

On the "89": according to the headingAccuracy documentation, only a negative value marks a heading as invalid. A positive value is the possible error in degrees, so 89 means the system does not trust that heading much, even at the moments it happens to be right.

As for things going back to normal on land, I would not look at GPS. You are reading magneticHeading, and the documentation only brings the device's location into it for trueHeading. What it does name as causes of a bad heading are calibration and strong local magnetic fields, so I would look for something near the watch in the water that is not there on land.

Take it with a pinch of salt from someone who has never touched a surfboard and all his opinions come from watching the 100 ft Wave, but I wonder if there is a lag compared to the back and forth movements of the board or not.

To see what the system actually did, install the Location logging profile from Profiles and Logs before you reproduce the problem, then take a sysdiagnose and read its log archive in Console. You might be able to understand the cause.

-- S.Beck -- 7strikes.dev

Thank you for the suggestions, especially the diagnostic logging profile.

One clarification: the reported accuracy remains around 89° even on land, while stationary, when the Watch heading agrees with an analog compass worn on the opposite arm. This happens outside the water activity as well.

My current logger truncates headingAccuracy to an integer, so I will capture the full raw value and timestamped heading samples before testing .maritime separately.

Have you observed this persistent accuracy value specifically on Apple Watch? I’m trying to understand whether it indicates a calibration issue or has a watchOS-specific interpretation.

If the heading reversal happens again, I will also capture the location diagnostics and a sysdiagnose as you suggested.

Apple Watch Ultra 2: headingAccuracy near 89° even with correct heading; intermittent 180° reversal
 
 
Q