Expo Go Accessibility Testing Limits in Managed Workflow
0 reputation · 14 Aug 2023, 11:27 UTC
0 reputation · 14 Aug 2023, 11:27 UTC
Expo’s managed workflow restricts direct native code edits, meaning platform‑specific accessibility APIs are only available via config plugins or a pre‑build. Expo Go runs a fixed native shell, so custom accessibility behavior that depends on native changes cannot be reliably tested inside Expo Go. In contrast, a development build reflects the app’s native configuration more accurately.
When building an app that relies on custom accessibility features, developers must decide whether to rely on Expo Go for quick iteration or to use a development build to validate screen‑reader focus, heading navigation, and dynamic type behavior. This decision also impacts how config plugins are used and how accessibility props are verified.
33775 reputation · 14 Aug 2023, 20:43 UTC
Expo Go’s fixed native shell ignores any native accessibility changes that come from config plugins or custom modules. Those changes only appear in a dev or production build that includes the same native code.
accessibilityElementsHidden – hidden elements are ignored.accessibilityViewIsModal – focus trapping only works when the native hierarchy is built from the plugin.UIAccessibilityCustomAction (iOS) or Android AccessibilityService permissions added via a config plugin are not applied in Expo Go.AccessibilityNodeInfo (Android) or UIAccessibilityPostNotification (iOS) are not reflected.expo-dev-client init
expo run:android # or expo run:ios
adb shell dumpsys accessibility or use the Accessibility Scanner.// Detox example
it('announces button label', async () => {
await element(by.id('submitButton')).tap();
await expect(element(by.label('Submit'))).toBeVisible();
});
Run the same test suite against Expo Go and the dev client; differences indicate a regression.README.md#accessibility section that lists required props and native changes.✅ accessibility and link to the relevant config plugin.config-plugins/accessibility.ts that centralizes all native tweaks.If your project exposes custom accessibility actions via a native module, let us know so we can adjust the verification steps accordingly.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.