Mobile Accessibility SDK
WelcomingWeb extends accessibility management beyond the browser. Drop a lightweight SDK into your mobile app and detect WCAG 2.2 issues as users navigate — before they ever reach the App Store or Play Store. Every scan flows into the same dashboard as your website accessibility data, mapped to the same standards.
All four SDKs are production-ready. React Native, Flutter, native iOS (Swift) and native
Android (Kotlin) all ship today with an identical rule set, scoring model and dashboard experience.
The server doesn’t know which SDK produced a scan — only the platform field in the payload differs.
Pick Your Platform
Install via npm or yarn, configure once, wrap your screens with a HOC or hook.
React NativeSwift Package Manager. Pure Swift, zero dependencies. UIKit and SwiftUI supported.
iOS (Swift)Maven Central. Classic Views and Jetpack Compose, with three tracking modes to choose from.
Android (Kotlin)pub.dev as welcomingweb_flutter_sdk. Pure Dart. Works across every Flutter target.
What the SDK Does
Scans run automatically on screen change. No manual triggers, no test recordings.
Automatic ScanningEight built-in rules: touch targets, labels, roles, contrast, hierarchy and more.
WCAG 2.2 RulesOptional floating panel: text size, contrast, reduce motion, screen curtain, reading guide.
Accessibility PanelFail builds on critical issues with Detox, Maestro, Fastlane, GitHub Actions or Bitrise.
CI / CD GatingMobile and web data side-by-side. Filter by platform, app version, commit hash or screen.
Unified DashboardInstall, configure, track one screen — see your first scan in minutes.
Quick StartOne Engine, Four SDKs
Every SDK is a 1:1 port of the same engine. What that means in practice:
- Same rules. The eight WCAG 2.2 rules, their severities, their WCAG mappings, and their rule
IDs (
mobile-missing-accessibility-label,mobile-touch-target-size, etc.) are identical across React Native, Flutter, iOS and Android. - Same score formula.
penalty = 10·critical + 5·major + 1·minor, clamped againstcomponents × 10, normalised to 0–100. - Same API payloads. Only the
platformfield differs (react_native,flutter,ios_native,android_native). All other keys, casing and shapes match. - Same behavioural contract. Auto-scan on screen change, 600 ms post-navigation delay, 15 s HTTP timeout, max two retries with jitter, background hook flushes pending scans, 50-scan in-memory cap.
- Same dashboard. Every scan lands in the same place, filterable by platform and app version.
A Three-Step Integration
Regardless of platform, bringing WelcomingWeb into your mobile app follows the same shape.
Step 1: Configure the SDK
Call configure() once at app startup with your API key and app ID. Set the environment, enable
auto-scan for development, and optionally provide callbacks to inspect scan results inline.
Step 2: Track Your Screens
Each SDK exposes a platform-idiomatic way to track screens: a HOC or hook on React Native, a widget on Flutter, a one-line install call on iOS (automatic view-controller tracking via swizzling), and three choices on Android (Activity lifecycle, NavController, or manual).
Step 3: (Optional) Add the Accessibility Panel
Drop the panel into your app to give end users runtime controls for text size, high contrast, reduce motion, screen curtain and a reading guide. The panel respects the device’s real accessibility state — it augments system settings rather than fighting them.
Architecture at a Glance
Every SDK is built from four layers that work together to scan, report and adapt.
- Core (singleton or actor): configuration, component-tree walking, rule execution, session management, API submission.
- Screen tracking: the platform-native hook, widget, modifier or lifecycle observer that registers screens and triggers scans on focus.
- Rules engine: eight per-node rules plus one screen-level rule. Each issue includes WCAG mapping, severity, evidence and a fix suggestion.
- UI components: the optional accessibility panel and provider that apply global effects like the screen curtain and reading guide.
Platform-Native Distribution
| Platform | Distribution | Language / Framework | Dependencies |
|---|---|---|---|
| React Native | npm / yarn — @welcomingweb/react-native-sdk | TypeScript / JavaScript | Zero native module dependencies |
| iOS | Swift Package Manager | Swift, UIKit and SwiftUI | Zero — Apple-bundled only |
| Android | Maven Central — com.welcomingweb:sdk | Kotlin, Views and Jetpack Compose | OkHttp, Kotlin coroutines, lifecycle-process |
| Flutter | pub.dev — welcomingweb_flutter_sdk | Dart | http, app_settings (iOS deep-link only) |
Minimum Requirements
| Platform | Minimum |
|---|---|
| React Native | React Native 0.70+, React 18.0+, iOS 13+ / Android API 21+ |
| iOS | iOS 13+, Swift 5.9+, Xcode 15+ |
| Android | Android API 21+ (Lollipop), Kotlin 1.9+, optional Compose 1.6+ |
| Flutter | Flutter 3.10+, Dart 3.0+, iOS 13+ / Android API 21+ |
Need Help?
Our mobile accessibility team is available for technical questions, integration reviews and onboarding support.