Getting Started with the Mobile SDK
Every WelcomingWeb SDK follows the same three-step integration shape: configure, track your screens, and optionally add the in-app panel. The code is platform-native; the concepts, rules and dashboard are identical.
You need an API key from your WelcomingWeb dashboard. If you don’t have one yet, create a free account at welcomingweb.com  and generate a key from Settings → API Keys.
Pick Your Platform
Full RN integration guide.
React NativeUIKit and SwiftUI integration.
iOS (Swift)Views and Jetpack Compose.
Android (Kotlin)Dart package for all Flutter targets.
FlutterThree-Step Integration
Step 1: Install the Package
React Native
# npm
npm install @welcomingweb/react-native-sdk
# yarn
yarn add @welcomingweb/react-native-sdkNo pod install or gradle sync is required — the SDK uses only JavaScript APIs available in
React Native core.
Step 2: Configure the SDK
Call configure() once at app startup, before any navigation renders.
React Native
import { WelcomingWeb } from '@welcomingweb/react-native-sdk';
WelcomingWeb.configure({
apiKey: 'YOUR_API_KEY',
appId: 'com.yourcompany.yourapp',
appVersion: '1.0.0',
environment: 'development',
autoScan: true,
debug: true,
});For the full list of configuration options, see the configuration reference below.
Step 3: Track Your Screens
Each platform has its own idiomatic way to register screens for scanning.
React Native
Wrap each screen with the HOC, or use the hook in function components:
import { withAccessibilityTracking } from '@welcomingweb/react-native-sdk';
function HomeScreen() {
return <ScrollView>{/* screen content */}</ScrollView>;
}
export default withAccessibilityTracking(HomeScreen, 'HomeScreen');Or with the hook:
import { useAccessibilityTracking } from '@welcomingweb/react-native-sdk';
export default function ProductDetailScreen() {
const a11yRef = useAccessibilityTracking('ProductDetailScreen');
return <ScrollView ref={a11yRef}>{/* ... */}</ScrollView>;
}Step 4: (Optional) Add the Accessibility Panel
Give your end users an in-app panel for text size, contrast, reduce motion and more. See the Accessibility Panel guide for full setup on each platform.
Verify the Integration
Launch your app in development mode and navigate between screens. With debug: true set, you
should see scan logs in your platform’s console (Metro console for RN, Xcode console for iOS,
logcat for Android, flutter logs for Flutter):
[WelcomingWeb] Scanning screen: HomeScreen
[WelcomingWeb] Found 45 nodes, 8 interactive
[WelcomingWeb] Scan complete: 2 critical, 1 major, 0 minor — score 94.4
[WelcomingWeb:API] Response: 200Open your WelcomingWeb dashboard  to see the scan appear under your app’s session view.
Configuration Reference
All SDKs accept the same configuration options. Only apiKey and appId are required.
| Option | Type | Default | Description |
|---|---|---|---|
apiKey | string | (required) | Your WelcomingWeb API key. |
appId | string | (required) | Unique app identifier, e.g. com.company.app. |
appVersion | string | null | App version string. Sent with every scan. |
environment | enum | development | Set to production to disable scanning unless enableInProduction is true. |
autoScan | boolean | true | Scan automatically on screen changes. Set false for manual or CI scanning. |
scanDelay | number (ms) | 600 | Milliseconds to wait after a screen change before scanning. |
debug | boolean | false | Enable verbose console logging. |
reportingEndpoint | string | null | Custom API endpoint URL. Overrides the default. |
enableInProduction | boolean | false | Allow scanning in production builds. |
disabledRules | string array | [] | Rule IDs to suppress globally. See rule reference. |
excludeScreens | string array | [] | Screen names to never scan. |
maxStoredScans | number | 50 | Maximum scan results kept in memory. |
onScanComplete | function | null | Callback invoked after each scan with the full result. |
onIssueFound | function | null | Callback invoked once per issue found during a scan. |
Common Issues
“Found 0 nodes” on scan — the screen may not have finished laying out when the scan fired.
Increase scanDelay from 600 ms to 1200 ms for screens with complex or virtualised content.
Platform-specific causes are covered on each platform page.
Scans not firing on navigation — each SDK relies on its platform’s navigation primitive
(useFocusEffect, RouteObserver, ActivityLifecycleCallbacks, viewDidAppear swizzling). See
your platform page for the exact setup.
Scans appear in debug logs but not on the dashboard — enable debug: true and check for
[WelcomingWeb:API] Response: 200. If you see 401, verify apiKey. If you see 403 app_deactivated,
the app is disabled on the backend. If you see 409 platform_mismatch, the app was registered
under a different platform — re-register or contact support.
Next Steps
Detailed guides for React Native, iOS, Android and Flutter.
Platform-Specific SetupFull reference for the eight WCAG 2.2 rules the SDK evaluates.
Accessibility RulesFail builds on accessibility issues with Detox, Maestro, Fastlane or GitHub Actions.
CI / CD IntegrationConfigure the in-app panel for text size, contrast, reduce motion and more.
Accessibility Panel