Axe DevTools Mobile August 5, 2026 Release Notes

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

August 5, 2026

Not for use with personal data

iOS

  • iOS SDK (axeDevToolsXCUI v4.1.0)
  • iOS Analyzer Desktop App (axe-devtools-mobile-desktop-app v1.3.0)

How to update: iOS SDK, iOS Analyzer Desktop App

Android

  • Android SDK (axe-devtools-android v9.1.0)
  • Android Gradle Plugin (axe-devtools-android-plugin v1.2.0)
  • Android Analyzer (Axe Accessibility Analyzer v3.2.0)

How to update Android Gradle Plugin, Android Analyzer

What's New?

Skip Screens When Running Auto Scan

Are you using Auto Scan with our SDKs? You can now skip screens that shouldn't be included in scan results by wrapping sections with AxeAutoScan.skipScan. The scan session resumes automatically when the block finishes. Find Auto Scan implementation details on the following pages:

Increased WCAG Coverage

Deque has a sustained commitment to offer and optimize rules that accurately detect real accessibility issues. With this release, we are expanding our WCAG 2.0 coverage by promoting two rules that previously were marked as experimental.

iOS

The Supports Dynamic Type rule has graduated to a full rule. This rule maps to WCAG 2.0, 1.4.4 Resize Text (AA) and now runs by default, whereas previously it was opt-in. Dynamic Type is an iOS feature that allows users to set a preferred font size device-wide. This rule checks that apps honor that preference by using scalable fonts. Please note that this rule runs on Apple's XCUI Accessibility Audit API, which requires iOS 17.0+. The Supports Dynamic Type rule runs during targeted testing only. Support for Auto Scan is coming soon!
Learn more about this accessibility rule: Supports Dynamic Type.

Android

The Inaccessible Action rule for Android has graduated to a full rule, expanding our coverage of WCAG 2.0, 2.1.1 Keyboard (A). This rule checks that the action associated with an interactive element can be both focused and triggered by assistive technology such as TalkBack or Switch Access.
Learn more about this accessibility rule: Inaccessible Action.

Fixes

iOS

  • Improvements to the accuracy of the Clipped Text rule

Android

  • Improvements to the accuracy of the following rules: Focusable Text, Edit Text Name, Inaccessible Action, and Nested Focusable Element

Deprecations & Removals

iOS

The optInToSupportsDynamicType property is deprecated. The Supports Dynamic Type rule now runs by default. If you previously opted in to this rule, please remove the property from your code.

Android

The Nested Active Control and Nested Element Name rules have been disabled, and you will no longer see these issues flagged in your results. Both rules will be removed - at least temporarily - at a later date.

Known Issues

If you're experiencing any of the below issues, please contact us at helpdesk@deque.com or support.deque.com. We will then be able to notify you once it's resolved or of an identified workaround if none is listed.

important
  • Axe DevTools Mobile automated testing runs on native iOS, native Android, and React Native applications. Please contact your Deque representative for accessibility testing solutions on your tech stack.
  • While you may get some results from web views or rendered PDFs, we highly recommend testing using Axe DevTools for Web or Axe Monitor for the most comprehensive accessibility testing for the web.

iOS

Incomplete results for Supports Dynamic Type rule on screens with percent signs in text

On iOS 26 and later, if a screen contains text with a percent sign in it (e.g. a text label reading "50% Off"), the Supports Dynamic Type rule may report as Incomplete instead of a pass or fail. This rule relies on an accessibility audit provided by Apple, and that audit stops the test run when it encounters percent signs. To keep your tests running, our rule skips the check for that screen and reports incomplete for each element containing a percent sign. All other rules run normally on the screen, and other screens are unaffected.

No action is required, since your scan will still complete. To check Dynamic Type support for these screens, increase the text size on your device under **Settings** > **Accessibility** > **Display & Text Size** > **Large Text**, and confirm the text on the screen scales appropriately. This issue has been reported to Apple. (#2985)

Color Contrast may run on icon-only elements due to OCR

The Color Contrast rule uses Apple's Vision framework (Optical Character Recognition, or OCR) to read text inside an element's bounds. OCR can occasionally misidentify small icon-like glyphs - such as back-arrow chevrons (<), bullets, decorative symbols - as text. When that happens, the Color Contrast rule runs on an element that contains no readable text, which can produce a result for an icon-only button. Because OCR output isn't deterministic across scans, the same element may appear in Color Contrast results in one scan and be reported as "INAPPLICABLE" in the next. This is a known characteristic of OCR, not a bug in the rule.

To work around this issue, you can use the ignore APIs to suppress Color Contrast results for the affected elements.



// Ignore Color Contrast for a specific element by accessibility identifier
axeDevTools?.configuration.ignore(rulesFor: [
    "backButton": [AxeRuleId.ColorContrast.toString()]
])

// Or ignore Color Contrast globally
axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())

Learn more about ignoring rules.

Screen Title false positive in Flutter apps

Flutter does not map AppBar.title to the native screen title property - UIViewController.title, causing the Screen Title rule to fail on all Flutter screens regardless of whether a descriptive title is present.

This is a known Flutter platform limitation tracked in flutter/flutter#185894.

False positives for Color Contrast rule with gradient backgrounds on small screens

When running accessibility checks on smaller screen sizes or with smaller font sizes, the Color Contrast rule may report false positives for gradient backgrounds. In such cases, it may be unable to determine the foreground color and instead compare background colors to each other, resulting in a failure.

To work around this issue, try running accessibility checks on larger devices. Alternatively, you may opt to ignore the rule in your tests and check Color Contrast manually for these views.

Inaccurate isVisible property from XCTest

Apple's accessibility APIs may incorrectly report web content inside WKWebView as "isVisible", even when the web view is covered by native overlays (such as modal views, alerts, or other native UI elements). This occurs because the accessibility system checks whether the WKWebView container itself is visible, rather than whether its web content is actually unobstructed and perceivable to the user.

iOS 26 accessibility bug with steppers

iOS 26 contains an accessibility bug where default stepper buttons do not announce "dimmed" by Assistive Technology to indicate that they are not enabled. As a result, the iOS rules also see these buttons as enabled even if they are not. A bug report has been filed with Apple, but until this is resolved, the following rules may report results on disabled stepper buttons: AssociatedText, InaccessibleAction, and ColorContrast.

Until Apple fixes this bug, the resolution will be to [ignore the rules](ios-ignore-rule). The default stepper buttons have the identifiers "Decrement" and "Increment", and can be ignored by identifier if needed.

Color Contrast rule does not run when text and background colors are the same

Our Color Contrast rule depends on Machine Learning to detect text, which ensures that the text being scanned is visible to users of your application. In cases where the text contained in a view is the same color as the background, our Machine Learning algorithm is unable to detect if any text is present, so the Color Contrast rule does not run on this view.

False Positive: LabelInName and LabelAtFront in SwiftUI & Cross Platform Apps

Some screens may report false positives with LabelInName and LabelAtFront due to an incorrect associatedText property being found (#1622)

Rules against Nested Controls

While looking at an improvement for our rules, we found that in XCTest, nested controls are not returned in the accessibility tree. A bug has been filed with Apple. (#1110)

ImageView Name Rule Needs Review Results for UIKit Apps

In UIKit apps, an image without an `accessibilityLabel` is not focusable with assistive technology by default.
The properties we use to check focusability from Apple may be inaccurate when an `accessibilityIdentifier` is set on the image. Due to this unexpected behavior, results for ImageView Name issues in UIKit apps will report as Needs Review. A bug report has been filed with Apple. (#1633)

False Positive: In Scroll View, Label In Name, Label at Front, and v2.11.0 Image View Name & ActiveControlName

We are actively working on fixes for the following false positives and will update this list as fixes are released.

In Scroll View
Text within banner-behaving elements, sticky headers/footers, floating action buttons and custom tab views may be flagged with a "Needs Review" or "Fail" message. To make these elements available to those that require larger text, use UILargeContentViewer. (#622, #2077)

v2.11.0 Image View Name & Active Control Name
If an UIImageView has an accessibilityIdentifier set but is not focusable by VoiceOver, and it has focusable controls nested within it, Active Control Name may report a false positive on the UIImageView. Removing the accessibilityIdentifier resolves the issue. A bug has been filed with Apple. (#1633)

Label In Name and Label At Front
These two rules look for a control's visible label amongst nearby elements to help determine rule status. In some view hierarchies, the incorrect nearby text may be detected causing these rules to fail. (#1622)

Android

Label at Front false positives with obscured visible text

The Label at Front rule checks that an element's visible label comes at the start of its announced text. A rule failure may result when an interactive element's visible text contains an abbreviation (e.g. "GB", "km") or an obscured / truncated identifier, and the accessibility announcement consists of the represented words (e.g. "gigabytes", "kilometers"), even though this is the recommended pattern for making abbreviated or truncated content screen-reader friendly.

If the first part of the visible label of an interactive element matches the beginning of the screen reader announcement and only the abbreviated / obscured portion differs, the flagged result may be safely ignored. Verify with a screen reader that the full announcement reads as intended.

Potential accessibility concerns for Focusable Text

When using decorative text in views such as "Contact Icons", it is possible to introduce an accessibility issue. If you are using a text view to display letters instead of generating images with the desired letters as vectors, and you then declare that text view as not important for accessibility, we will not be able to reliably tell if you have introduced an accessibility violation.

If you edit focusable text to ignore two or fewer characters, you may inadvertently ignore many one-word buttons in various languages (e.g. "OK", "No", "Sí"). To avoid these issues, you should grab the desired letters from the word you wish to represent in the icon and generate the letters as a part of the image instead of as separate text views. `FocusableText` then will not run on those views.

Screen Title false positive in Flutter apps

Flutter does not map AppBar.title to the native screen title property - Activity.setTitle, causing the Screen Title rule to fail on all Flutter screens regardless of whether a descriptive title is present.

This is a known Flutter platform limitation tracked in flutter/flutter#185894.

Announced text detection false positive

In some cases, assistive technology relies on AccessibilityEvent descriptions from the Android system to announce information to the user when no other announcement is available. Since AccessibilityEvents are triggered by user actions, we are unable to access the correct description if this information is not provided.

To avoid this issue, ensure that all relevant views are marked as important for accessibility. This will allow Talkback to access the information from the view, which our tool can then detect.

Color Contrast rule does not run when text and background colors are the same

Our Color Contrast rule depends on Machine Learning to detect text, which ensures that the text being scanned is visible to users of your application. In cases where the text contained in a view is the same color as the background, our Machine Learning algorithm is unable to detect if any text is present, so the Color Contrast rule does not run on this view.

EditTextName on Android 7 (SDK 24-25)

Apps written with XML that utilize the hint text feature may see false positives with the EditTextName rule. Hint text was not introduced until Android 8 (SDK 26). Using this element in your XML app will assign the hint text to the value of the text input field. More recent versions of Android are better equipped to make this experience accessible.

To overcome this issue, our first recommendation is to run your tests on newer versions of Android. If it is important that the app is accessible on earlier Android versions however, you might consider avoiding usage of the hintText feature, as it is not officially supported.

Android hidden views returning results

You may see results for views which are hidden behind other views on the screen. These hidden views are not available to assistive technology, but Axe DevTools Mobile still reports them as issues.

We are working on a fix for this complex issue. In the meantime, if TalkBack cannot reach these views, you can disregard the corresponding issues. They do not require a fix to ensure accessibility.

Error while running ML Kit Text Detection

ML Kit text detection is required in many of the Axe DevTools Mobile rules to ensure accuracy of results. The ML Kit library should be automatically imported when referencing Axe DevTools Mobile in your automated Espresso or UIAutomator tests. In some cases however, the automatic import does not happen and you will see the following error in the logcat:


Axe DevTools Android: Error while running mlKit Text Detection: MlKitContext has not been initialized.

To overcome this issue, you should import the ML Kit library into your project manually. In your application's build.gradle file, add the following under dependencies:

debugImplementation 'com.google.mlkit:text-recognition:16.0.1'

Find a full working example of the ML Kit library being imported in the Android Mobile SDK Getting Started section, under Implementation

Touch Target Spacing and Jetpack Compose

The Touch Target Spacing rule is currently not running on any slider components that were written in Jetpack Compose. No action can be taken at this time. However, a fix is coming soon!

Error when saving results locally on API 30

On Android API 30, one of the locations that we attempt to save results locally has a permissions error. The result will still be saved as a JSON file despite this error being displayed. The error can be suppressed by commenting out the code in the following block:

def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') {
	executable "${android.getAdbExecutable().toString()}"
	args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases'

//    finalizedBy {
//        fetchAndroidFolderAxeReportsTask
//    }
}

Please note that this code should only be commented out for API 30 as it will cause problems when saving locally for other API levels.

Scroll detection on Hybrid Apps and Cross-Platform Apps

In some hybrid and cross-platform apps, we may return unexpected results when items in a scroll view are partially off screen. To test an element for accessibility, ensure it is fully onscreen before performing the scan.

Analyzer App: Floating Action Button Disappears

Introduced with API 31 (Android 12) is the ability to hide non-system overlays. In order to utilize the Axe Analyzer app, please ensure this setting is not turned on. If you have opted to utilize this feature for its security enhancements, we recommend leaving it off for internal testing builds where you can safely utilize testing data and eliminate security concerns that way. Note: this setting does not affect Google's accessibility scanner app as it's considered a system overlay.

To utilize the Axe Accessibility Analyzer app, update any calls to the method setHideOverlayWindows(true) to setHideOverlayWindows(false) on the affected activity windows.

Screenshot Missing (Black Box) in the Dashboard

To unlock full functionality of Axe DevTools for Mobile, ensure screenshots are enabled. We recommend enabling screenshots on a debug or test version of your app that uses mock data to avoid security concerns. Checkout our guide for enabling screenshots in Android apps.

Crash when minifiedEnabled is set to true

If minifying your build, you'll see a crash with an error log reporting an adapter could not be found when trying to login to the Axe DevTools library. Disable minify for your debug builds with Axe DevTools implemented. (#729)

Builds with r8 enabled throw an error

A build with r8 enabled may attempt to minify the axeDevTools library resulting in an error similar to:


Caused by: java.lang.NullPointerException: throw with null exception at g.b.b.a$a.a(Unknown Source:1) at g.b.b.a$a.a(Unknown Source:0) at g.b.b.a.a(AccessToken.java:190)

To resolve this error add the following line to your ProGuard file to keep axeDevTools classes:

keep class com.deque.** { *; }
Error messages when using Compose APIs

The Compose APIs are deprecated, please use the layout agnostic APIs to continue receiving updates. If you continue to use the Compose APIs and encounter an error along the lines of `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)` or `No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`, please refer to Compose setTestTag API.

MAUI: Edit Text Name rule

Due to limitations of the MAUI app architecture rendering in the Android ecosystem, the Edit Text Name rule will show as Needs Review in the dashboard when a failure is suspected for SDK version 5.5.0 and up. Please confirm correct behavior manually for this case.

Native Android: Custom Dialogs / Modals

When you're implementing custom dialogs or modals that do not extend the native controls, you may get results for views behind the modal. In this case, we recommend not running our tool against these custom modals or dialogs and instead manually checking them to ensure they behave with assistive technology as desired.

Web Dashboard

Missing Screenshot

If the screenshot is missing from the scan details page, your app may be preventing screenshots from being taken. Often this is for security reasons in your production application. Consider removing this requirement for your testing build to allow for full functionality in the Axe DevTools Mobile Dashboard.

Some Android scan names are unformatted

Some Android scan names that are defaulted to the screen title will appear as the full class name including the bundle identifier. In a future release, this will be resolved so that the screen title is formatted into a more readable name. As a workaround, you can set the scan name from the dashboard or frameworks. (#1643)