Reveal 37

After the excitement of the new Accessibility Workspace in the previous release of Reveal, we’ve taken some time over the past few weeks to make measured fixes and improvements while planning out support for the changes introduced at WWDC22.

In our own testing, Reveal runs great with apps running on the iOS, iPadOS and tvOS 16 betas - with the caveat that we don’t support any of the new properties or types introduced this year. Reveal runs on the macOS “Ventura” beta, but there are a few known issues with the UI, namely hover/mouseover not working in the Navigators and initial layout issues with the canvases.


  • Support for inspecting AXCustomAction.shouldPersistActionMenu and .sortPriority.
  • The Accessibility Workspace Navigator will now show a count of the displayed elements, which we found useful when filtering.
  • The Accessibility Workspace’s element inspector now displays warnings and errors for certain types of issues.
  • Private UIAccessibilityTraits required to properly display VoiceOver renditions of text fields.
  • Display of accessibility-related NSAttributedString.Keys on attributed accessibility …Label, …Value' and …Hint` where they are present.
  • A new Spoken Approximation property to the VoiceOver element inspector, providing a best effort of the text that on-device VoiceOver will read. This incorporates accessibility-specific properties like .accessibilitySpeechPunctuation, .accessibilitySpeechSpellOut, .accessibilitySpeechLanguage, .accessibilitySpeechIPANotation and .accessibilitySpeechPitch.
  • Adds an X of Y suffix to Tab bar elements, which matches on-device VoiceOver.
  • Moves the Selected trait to the start of the Spoken Description, which matches on-device VoiceOver.
  • The last workspace that you use will be restored when opening new windows, or relaunching Reveal.
  • RevealServer no longer starts automatically if the current process is linked against XCTest. See the bundled integration guide’s RevealServer Configuration Options for instructions on disabling this if you do not need it.


  • The Accessibility Workspace Navigator will no longer display the current mode until after content has loaded.
  • The display of AXCustomAction sections with multiple actions.
  • Attributed strings that come in with (opaque) foreground/text colors will now have their contrast results checked primarily against that color.
  • Text contrast for elements that are inferred to be part of an element with an image component are now subject to less stringent contrast requirements. This is also reflected in the contrast information.
  • Placeholder text will no longer be subject to contrast checks.
  • Non-interactive images will no longer be subject to contrast checks.
  • Canvas captures can now be exported from within snapshots.
  • Removes noisy console logging when retrieving accessibility data.


  • Elements with invalid accessibilityFrames will now be rendered with errors, rather than causing the entire deserialisation to fail.
  • Contrast issues with overlapping frames are no longer assigned to multiple elements.
  • Invalid font input data shouldn’t cause payload deserialization to fail.
  • The application support directory should be updated with a new copy of Reveal’s support files at every launch.
  • Accessibility data should now always be saved into snapshot documents after a workspace refresh.
  • The contrast modes will no longer attempt to contrast check child accessibility elements whose visible frames are zero.
  • The Accessibility Workspace will now properly restore the modes and effects on snapshots.
  • LLDB initialisation commands (~/.lldbinit) now work with home directories hosted on other volumes.
  • The welcome window will only show once when connecting to an inspectable app on a device.
  • The welcome/connection window will not appear and reappear in rapid succession when changing connections.
  • Fixed a crash caused by non-unique identifiers in the Accessibility Workspace.
Requires a full or trial license to use.