Abilyo by WebAbility

React Native

Cross-platform accessibility testing for React Native — bridges to native iOS + Android SDKs.

@webability/react-native exposes a single JavaScript API that delegates to the native iOS and Android SDKs. Same audit, same WCAG mapping, same dashboard.

Install

npm install @webability/react-native
cd ios && pod install

Autolinking handles Android.

Audit

import { audit } from '@webability/react-native'
 
const result = await audit({ screenName: 'home' })
console.log(result.score, result.issues.length)

Jest tests

test('home is accessible', async () => {
  const result = await audit({ screenName: 'home' })
  expect(result.summary.critical).toBe(0)
})

Detox tests

import { device, element, by } from 'detox'
import { audit } from '@webability/react-native'
 
it('checkout passes accessibility audit', async () => {
  await device.launchApp()
  await element(by.id('buy-now')).tap()
 
  const result = await audit({ screenName: 'cart' })
  expect(result.summary.critical).toBe(0)
})

AI fix (RN-specific code)

import { generateFix } from '@webability/react-native'
 
const fix = await generateFix(result.issues[0], 'react-native')
console.log(fix.alternatives[0].frameworkCode)
// → '<TouchableOpacity accessibilityLabel="Close" accessibilityRole="button" .../>'
import { visualAudit, fullAudit } from '@webability/react-native'
 
// Visual-only
const visual = await visualAudit({ screenName: 'home', brandColors: ['#0052CC'] })
 
// Combined: structural + visual, merged
const full = await fullAudit({ screenName: 'home', brandColors: ['#0052CC'] })

fullAudit is the recommended entry point for CI — runs both audits, merges results, returns one report. Visual layer adds ~$0.001/screen but catches pixel-level issues (icon contrast, focus rings, affordance mismatches) that DOM/AST checks fundamentally cannot.

In-app overlay

In a DEBUG build, toggleOverlay() shows a floating panel with severity filters and click-to-spotlight. Or shake the device.

Why use this

Existing RN a11y libraries (@axe-devtools/react-native, react-native-axe) only run web-style axe-core checks against your DOM. They miss touch targets, dynamic type, native traits, and 6+ other native-only checks. This SDK delegates to Apple's iOS 17 audit API and Google's accessibility-test-framework for real native coverage, then unifies results in one JSON.

On this page