Skip to main content
WCAGrules
Quick navigation

Guides · Building it right

WCAG Was Written for the Web. Your App Is Still Covered.

Different standard, same obligations, and a platform that does more of the work than the web does.

Last reviewed August 28, 2026

The first question owners ask about an app is which rules apply, and the honest answer is that WCAG does not, directly. It is written for web content, and an app has no DOM, no browser and no page.

That is a technicality rather than an exemption. Two documents close the gap, and the law reaches apps regardless.

The Standard That Actually Applies

  • WCAG2ICT is a W3C note explaining how to read each WCAG criterion when the thing is not a web page. It substitutes words: where WCAG says "web page", read "screen" or "document". Almost every criterion survives that translation.
  • EN 301 549 is the European standard, and its clause on software applies directly to mobile applications. This is what EU procurement and the accessibility act point at.
  • Platform guidance from Apple and Google sits underneath both, and is where the implementation detail lives.

The legal position, plainly

The European Accessibility Act names mobile applications explicitly, so an app selling to EU consumers is in scope. Section 508 covers software procured by US federal agencies. Neither cares that WCAG says "web page".

What the Platform Gives You

This is the genuine difference from the web, and it works in your favour. A standard iOS or Android control arrives accessible. A UIButton has a role, a label from its title, and a focus behaviour, with nothing asked of you. The same is true of a Material button.

The web has this too, in native HTML elements, and teams throw it away by building buttons from divs. Apps throw it away by drawing custom interfaces on a canvas, which is more common in games, charts and anything with a distinctive visual identity.

Where Apps Break

  1. Custom-drawn views with no accessibility information. The platform sees one opaque rectangle. Everything inside it is invisible to a screen reader unless you describe it.
  2. Images and icon buttons with no label. The same failure as missing alt text, and the most common finding on both platforms.
  3. Text that ignores the system font size. Someone who has set large text expects your app to honour it. Fixed point sizes and fixed-height containers are what break that.
  4. Focus order that follows the view hierarchy rather than the layout, which happens as soon as a view is repositioned after being added.
  5. Announcements that never happen. A loading state finishes, content changes, and nothing is spoken, which is the same class of failure as a missing live region on the web.
  6. Tap targets under the platform minimum, which is a recurring finding in toolbars and tab bars.

The Attributes That Do the Work

What it doesiOSAndroid
Names an elementaccessibilityLabelcontentDescription
Says what kind of thing it isaccessibilityTraitsRole via the node info
Adds detail beyond the nameaccessibilityHintstateDescription and hint text
Groups children into one itemisAccessibilityElementimportantForAccessibility
Announces a changeUIAccessibility.postannounceForAccessibility
Honours the user's text sizeDynamic Typesp units and font scale
The equivalents worth knowing

The pattern behind all of them is the same as 4.1.2 Name, Role, Value on the web. What is it called, what kind of thing is it, what state is it in.

Cross-Platform Frameworks

React Native, Flutter and the rest expose the platform accessibility APIs, and none of them applies the platform defaults for you as reliably as writing native code does. A component that renders as a touchable view is not automatically a button on either platform.

The practical consequence is that a cross-platform app needs testing on both platforms rather than once. The same code produces different accessibility trees, and a label that reads correctly under VoiceOver can arrive empty under TalkBack.

Testing It Yourself

  1. Turn on the screen reader and complete your main task. VoiceOver on iOS, TalkBack on Android. Fifteen minutes finds most of it.
  2. Set the system text size to the largest setting and look for clipped labels and overlapping views.
  3. Run the platform checker. Accessibility Inspector on iOS and Accessibility Scanner on Android both catch missing labels and small targets.
  4. Try it with a keyboard, since both platforms support external keyboards and many people use them, which is 2.1.1 Keyboard by another name.
  5. Turn on reduce motion and confirm the animations respond.

What the platform checkers miss

The same third they miss on the web. A label can exist and be wrong, an order can be valid and senseless. Watching somebody use the app is the only way to find those, which is covered in testing with disabled users.

If You Have Both a Site and an App

They are separate pieces of work with separate findings, and a conformance claim for one says nothing about the other. Where a process spans both, such as booking on the web and checking in on the app, each half has to work on its own.

Our audits cover web content, including web apps and progressive web apps. Native iOS and Android testing is a different discipline and we do not sell it, which is worth saying plainly rather than letting a mobile page imply otherwise.

Common questions

Does WCAG 2.2 apply to our mobile app?
Not directly, because it is written for web content. WCAG2ICT explains how to apply the same criteria to software, and EN 301 549 makes it a requirement in Europe. In practice you end up meeting the same rules under a different name.
Is a progressive web app treated as a site or an app?
As web content, because it runs in a browser engine. WCAG applies directly, which makes it simpler to test and to claim conformance for than a native app.
Do the app stores check accessibility?
Not as a condition of release. Neither store rejects an app for being inaccessible, so the obligation comes from law and from your users rather than from review.

Sources

Keep reading

More on building it right

Reading about it is the cheap part.

Find out where your site actually stands. The free scan checks 10 pages in a real browser against all 90 supported automated rules, keeps its 27 best-practice checks separate from WCAG findings, and names the rule behind every finding. The full audit adds an expert review and a real blind screen-reader user. From $499, with the report in 5 business days on Rapid and 10 on Standard, and the clock starting at cleared payment.

Go somewhere useful

Find tools, resources and your workspace.

29 destinations