Many people are rightly focused on Apple’s questionable decision to make “Accessibility Events” auto-enabled with the release of iOS 12.2 (and macOS 10.14.4).

After disabling that feature, I immediately turned my attention to a long standing iOS bug with role="switch", where it did not communicate state. Thanks to a tweet by Paul J. Adam, a bug had been filed in Webkit, and I’ve been waiting for it to be patched into Safari.

With iOS 12.2’s release I confirmed today that the bug fix landed and role="switch" is communicated as a “checkbox” and its state of “checked” or “unchecked” are announced.

So, it’s not perfect yet. But at least with iOS 12.2+ role="switch" becomes a usable ARIA role.

Following up

To follow up on the fact that iOS VoiceOver doesn’t treat role="switch" any differently than if you were to just use a standard checkbox, I’ve filed a new bug to request that role="switch" be announced as a “switch” with “on” and “off” state announcements. This change would get iOS to follow the specification for the role, as well as match the way VoiceOver and macOS correctly announce switches.

I’ve updated my A11y Styled Form Controls: Switch checkbox to document this fix.