VoiceOver with Swift Charts summaries

I had a VoiceOver user point out an issue with my app that I’ve definitely known about but have never been able to fix. I thought that I had filed feedback for it but it looks like I didn’t.

Before I do I’m hoping someone has some insight. With Swift Charts when I tap part of a chart it summarizes the three hours and then you can swipe vertically to hear it read out details of each hour. For example, the Y-Axis is the amount of precipitation for the hour and the X-Axis is the hours of the day. The units aren't being read in the summary but they are for individual hours when you vertical swipe.

The summary says something such as "varies between 0.012 and 0.082". In the AXChartDescriptor I’ve tried everything I can think of, including adding a label to the Y axis in the DataPoint but nothing seems to work in getting that summary to include units. With a vertical swipe it seems to just be using my accessibility label and value (like I would expect).

Answered by DTS Engineer in 910984022

Thanks for the clear description. Your note that the individual hours do read their units made this straightforward to rebuild.

I built a chart like yours, with 24 hourly precipitation bars, and ran it with VoiceOver on iPhone 18 Pro Max with iOS 27.0. VoiceOver grouped the bars in threes. Each group read like your example, for instance "starts at 0.047, varies between 0.066 and 0.039, ends at 0.039, 3 values." None of these changed that summary:

The individual bars read the values I set, units included, as they do in your app.

The valueDescriptionProvider documentation describes it as the way "to format data values into string representations that include units". Representing chart data as an audio graph covers it too. In my tests it didn't reach the group summaries. Swift Charts provides label, value, hidden, and identifier modifiers for chart content. None of them sets what a group's summary says.

Please consider filing a bug report about this so our engineering teams can investigate this issue. A resolution may involve changes to Apple's software. Include your chart, and what VoiceOver says for a group compared with an individual hour. If you post the Feedback number here I'll check the status next time I do a sweep of forums posts where I've suggested bug reports.

Thanks for the clear description. Your note that the individual hours do read their units made this straightforward to rebuild.

I built a chart like yours, with 24 hourly precipitation bars, and ran it with VoiceOver on iPhone 18 Pro Max with iOS 27.0. VoiceOver grouped the bars in threes. Each group read like your example, for instance "starts at 0.047, varies between 0.066 and 0.039, ends at 0.039, 3 values." None of these changed that summary:

The individual bars read the values I set, units included, as they do in your app.

The valueDescriptionProvider documentation describes it as the way "to format data values into string representations that include units". Representing chart data as an audio graph covers it too. In my tests it didn't reach the group summaries. Swift Charts provides label, value, hidden, and identifier modifiers for chart content. None of them sets what a group's summary says.

Please consider filing a bug report about this so our engineering teams can investigate this issue. A resolution may involve changes to Apple's software. Include your chart, and what VoiceOver says for a group compared with an individual hour. If you post the Feedback number here I'll check the status next time I do a sweep of forums posts where I've suggested bug reports.