Axe DevTools Mobile November 11, 2026 Release Notes
November 11, 2026
Component Versions
iOS
- iOS SDK (axeDevToolsXCUI v5.0.0)
How to update: iOS SDK, iOS Analyzer Desktop App
Android
- Android SDK (axe-devtools-android v10.0.0)
- Android Gradle Plugin (axe-devtools-android-plugin v2.0.0)
- Android Analyzer (Axe Accessibility Analyzer v4.2.0)
How to updateJ: Android Gradle Plugin, Android Analyzer
What's New?
SDK
As the retirement of the Mobile Dashboard approaches, global rule configuration is now set in Axe Account. Here admins configure settings for which rules will run in automated testing, and they can also give permissions for users to override global settings and ignore individual rules in their tests. When overrides are not allowed, the ignore call does nothing and the SDK logs why. Note that if the org settings can't be read, scans will still run. Every rule runs, and code-level ignores are allowed. Only an org that explicitly turns overrides off blocks them.
iOS
- Find a link to your results after upload. After a scan uploads, the log now prints
View your results in Axe Developer Hub: <link>. Targeted scans link to the project page, and Auto Scan links to its session. - Rules are now ignored on
AxeDevToolsitself, for exampleaxe.ignoreRules(.colorContrast, .screenTitle), or per element withignoreRules(onElementWithId:)/ignoreRules(onElementOfClass:). A misspelled rule now fails the build instead of silently running. (Breaking — see below.)
Android
- Find a link to your results after upload. After a scan uploads, the log prints a link to Axe Developer Hub. Targeted scans link to the project page, and AutoScan links to its session.
- You now ignore rules with the
AxeRuleNameenum, for exampleaxeDevTools.ignoreRules(AxeRuleName.COLOR_CONTRAST, AxeRuleName.SCREEN_TITLE). To skip rules on one element, useignoreRulesOnElementWithId("resource_id", AxeRuleName.TOUCH_TARGET_SIZE). A misspelled rule name now fails the build instead of being silently ignored. (Breaking, see below.) - Set rule ignores once per session when performing targeted testing. Pass
ignoreRulesandignoreRulesOnElementIdsto themobile: axeStartSessionfunction; these apply to every targeted scan until the session ends. (Note: Auto Scan does not allow individual rule ignores; it follows the org's rule settings only.)
Fixes
iOS
- Improvements to the accuracy of the following rules: Label in Name, Label at Front, Touch Target Size, Touch Target Spacing
- Scans no longer crash when the test runner is built with Xcode 16.2 or other versions older than 16.4
- Quieter test logs - the SDK no longer prints to the test log every time it sends analytics
Android
- Improved accuracy of the Label in Name rule
- Improved performance for Auto Scan - the test runner now waits up to 10 seconds for a network before signing in
- Improved performance for the Axe Accessibility Analyzer's floating scan button when using TalkBack - you can now reach it by swiping, and it keeps focus after a scan or after opening a menu (Swipe focus requires TalkBack version 16.2 or later)
Updates
Android
- The SDK, Analyzer and sample targets now build against Android SDK 37 (
compileSdk/targetSdk37). TheminSdkstays at 26. Your app doesn't need any changes. - Java tests can now call
AxeAutoScan.skipScan(...)directly, without.Companion resetIgnoredRules()is no longer deprecated and you can continue using it
Deprecations & Removals
iOS
- The Inaccessible Action rule has been removed. Scans never run it, and
AxeRuleId.InaccessibleActionno longer compiles. Remove any references to this rule from your test code - Any code you added to disable or ignore the rule can be deleted. - The experimental rule APIs have been removed. The
experimentalkey is also gone from exported JSON. - The
optInToSupportsDynamicTypekey has been removed. If you still have this in your code, delete the line that sets it. - The following mobile dashboard APIs have now been removed. These were deprecated in an earlier release. The Axe Developer Hub path is the only one left:
getResult,tagResult,deleteResult,updateScanName,AxeDevToolsResultKey,AxeResult.tags— removed, no replacement.login(withAPIKey:toServer:)andstartSession(apiKey:url:projectId:)— usestartScanSession(...)orauthenticate(...)instead.postResult(_:withTags:withScanName:)— usepostResult(_:withScanName:), which now returns nothing.axeServiceUrl/axeServerUrl(for Auto Scan) — useaxeAccountUrl.AxeStatus.IGNORED- removed. Ignored rules no longer produce a result at all, so"status":"IGNORED"never appears in exported JSON.
Android
- Experimental rules have been removed:
NestedElementNameandNestedActiveControlno longer exist.ignoreExperimental()and theexperimentalflag onAxeRuleare gone.
AxeRuleViewHierarchywas deprecated in March 2025 and has now been removed. Custom rules should extendAxeRuleand overrideisApplicable/runRuleusingAxeView.- Mobile dashboard APIs have been removed. Axe Developer Hub is now the only upload path:
loginWithApiKey(...)andstartSession(apiKey, projectId, serverUrl)— usestartScanSession(apiKey, projectId, axeAccountUrl).tagScanAs,getResult,deleteResult,AxeDevToolsResultKey,TagsSet— removed, no replacement.
ScanResultHandler.uploadToDashboard(uploadOnly)— useuploadToDashboard()with no arguments. Note: This sends results to Axe Developer Hub.- Gradle plugin
axeServerUrl— useaxeAccountUrl. AxeStatus.IGNORED- removed. Ignored rules don't produce any result now, so"status":"IGNORED"never appears in exported JSON.
Breaking Changes
iOS
- The minimum iOS version required is now 17. UI test targets that still target iOS 16 must raise their deployment target. Running on iOS 16 devices is no longer supported.
- Ignoring rules has moved off of
axe.configuration, andaxe.configurationis removed. Old calls fail to compile with a message naming the new call:axe.configuration.ignore(rules:)- useaxe.ignoreRules(...)axe.configuration.ignore(rulesFor:)- useaxe.ignoreRules(onElementWithId:_:)orignoreRules(onElementOfClass:_:)axe.configuration.customRules.insert(rule)- useaxe.addCustomRule(rule)- Ignoring custom rules and switching a rule back on are no longer supported
AxeRuleIdvalues are now lowerCamelCase (for example.ColorContrastbecomes.colorContrast). Swift code using the old spelling no longer compiles. Objective-C, exported JSON, Axe Developer Hub, and AppiumignoreRulessettings are unchanged.http://account URLs are refused when signing in with an API key. On-prem customers whose account URL starts withhttp://must switch tohttps://.- Removed APIs listed under Deprecations & Removals fail to compile.
Android
- The rule-ignore APIs have changed. Old calls no longer compile:
ignoreRules(listOf("ColorContrast"))- useignoreRules(AxeRuleName.COLOR_CONTRAST)ignoreByViewIdResourceName(id, listOf(...))- useignoreRulesOnElementWithId(id, AxeRuleName.X, ...)ignoreExperimental()- remove the call.
TouchSizeWcagis nowTouchTargetSize, which matches iOS and Axe Developer Hub. Update any code, filters or dashboards that look for the old name.- Custom rules that extend
AxeRuleViewHierarchy, or that pass theexperimentalflag toAxeRule, no longer compile. - Gradle plugin: Builds that still set
axeServerUrlin theaxeDevTools { }block must switch toaxeAccountUrl. - Removed APIs listed under Deprecations & Removals fail to compile.
Known Issues
- Axe DevTools Mobile automated testing runs on native iOS, native Android, React Native applications, and apps built with Appium. Please contact your Deque representative for accessibility testing solutions on your tech stack.
- These are the changes to Known Issues since the October 2026 release. For all current issues, see Known Issues.
- 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.
New Issues
If you're experiencing any of the below issues, please contact us at helpdesk@deque.com or <a href=https://support.deque.com"" target="_blank">support.deque.com. We will then be able to notify you once it's resolved or of an identified workaround if none is listed.
iOS
False positives for Supports Dynamic Type and Clipped Text rules
The Supports Dynamic Type and Clipped Text rules (iOS 17 and later) use results from Apple's accessibility audit. That audit occasionally flags text that scales correctly or is fully visible, and these rules report what Apple returns. Most failures from these rules are real issues, so we don't recommend dismissing them as a group. This issue has been reported to Apple, and we're working on reducing these false positives.
To confirm a failure, turn on Larger Accessibility Sizes under Settings > Accessibility > Display & Text Size > Larger Text. Step through every text size, from the default to the largest, and check that the flagged text scales and stays fully visible. Text can look fine at the largest size but break at a size in between.
If the failure is a false positive, ignore the rule on that element by its accessibility identifier. We don't recommend ignoring the rule for the whole scan or by class name, because this can also hide real failures.
Android
False positives when scanning maps
It is not currently possible to accurately determine if an element on the screen is contained within a map, therefore our rules could unintentionally scan map pins and give false positive results. This is an issue with how the Android system reports maps to the Accessibility Service.
Use our ignore rules API to exempt your map or map pins from being scanned by using their IDs.
Learn more about ignoring rules.
Apps built with Unity can't be scanned
Axe DevTools Mobile can't scan the on-screen content of apps built with the Unity game engine. This affects automated scans with the Android library as well as scans from the Accessibility Analyzer app. Results only show screen-level checks - for rules such as Screen Orientation and Screen Title - and nothing for the app's buttons, text, or switches.
There is no workaround at this time.
Resolved Issues
iOS
Removed: outdated Image View Name and Active Control Name false positive
We removed an outdated entry about Active Control Name false positives on a UIImageView that has an accessibilityIdentifier. This issue only affected v2.11.0 and was fixed in the June 2024 release. Active Control Name no longer runs on these images in UIKit apps. Image View Name reports them as Needs Review instead (see ImageView Name Rule Needs Review Results for UIKit Apps).
