Feature Requests

With Expo, you can write iOS and Android experiences in JavaScript using React Native.
Additions for expo-age-range alpha
### Summary As an active educational application ( com.senaysoft.* ), we are implementing the alpha expo-age-range module to comply with emerging state-level age-assurance regulations. While the Android implementation (Play Age Signals) is working perfectly, the iOS implementation currently forces a steep architectural and UX trade-off due to two major blockers. We are currently forced to exclude the package from our iOS autolinking to maintain our build pipeline. We are opening this issue/discussion to highlight the exact friction points preventing production adoption on iOS. ### Blocker 1: Xcode 16 / Swift 6 Strict Concurrency Failures Standard EAS build environments utilizing Xcode 16 / iOS 26 SDK enforce strict Swift 6 concurrency by default. The current expo-age-range alpha pod does not pass these checks. The Failure: During the Run fastlane step, the compiler throws the following error inside the ExpoAgeRange target: task or actor isolated value cannot be sent Current Workarounds (Both Fragile): Abandon the iOS implementation entirely via expo.autolinking.ios.exclude . Write a custom Config Plugin utilizing @expo/config-plugins ( withDangerousMod ) to inject Ruby into the post_install Podfile block, forcing SWIFT_STRICT_CONCURRENCY = 'minimal' for the pod. The Request: Please update the internal Swift files ( AgeRangeModule.swift , etc.) to comply with Apple's actor isolation rules or apply @preconcurrency annotations so standard EAS cloud builds compile cleanly out of the box. ### Blocker 2: JS Exposure of Jurisdiction Eligibility ( isEligibleForAgeFeaturesAsync ) To prevent severe UX degradation for a global educational app, we need to be able to silently bypass the native age gate modal for users in non-regulated regions. The Issue: Because the alpha module currently lacks JavaScript access to Apple's isEligibleForAgeFeaturesAsync() pre-check (or equivalent), our fallback logic must aggressively fire requestAgeRangeAsync() for every single user globally running iOS 26+. The Request: Prioritize exposing the eligibility check to the JS bridge. This is critical for allowing us to ping the OS ("Is this user in a regulated jurisdiction?") before needlessly triggering the native Apple age gate for global users who fall outside the scope of Texas/Utah/Louisiana laws. ### Environment Expo SDK: 54 (Alpha track) React Native: 0.81.5 Package: expo-age-range (~0.2.1) Platform: iOS (EAS Build / Xcode 16)
1
Add accessibilityLanguage (VoiceOver speech language) modifier for SwiftUI views
## Summary @expo/ui/swift-ui/modifiers exposes accessibilityLabel , accessibilityHint , accessibilityValue , and recently accessibilityHidden / accessibilityIdentifier — but there is no way to set a view's VoiceOver speech language . In multilingual apps where the in-app UI language can differ from the device language, VoiceOver pronounces SwiftUI labels with the device-language voice, producing garbled speech. ## Use case A language-learning app where users pick the app interface language independently of the device language. For React Native views we use the accessibilityLanguage prop (BCP-47) so VoiceOver reads each element in the correct language. There is no equivalent for @expo/ui SwiftUI components — e.g. a Menu with Button items whose labels are already localized text but get read in the wrong accent. ## What we tried No accessibilityLanguage / speech-language modifier exists in @expo/ui/swift-ui/modifiers . accessibilityLabel(label: string) only takes a plain string , so we can't pass an AttributedString carrying accessibilitySpeechLanguage . environment('locale', '<bcp47>') makes VoiceOver pronounce the ** Menu trigger label in the given language ✅, but it does not** reach the Menu 's presented popup items; per-item environment('locale', …) had no effect on the items either. ## Proposal Add an accessibilityLanguage(bcp47: string) modifier mapping to SwiftUI's accessibility speech language (e.g. an AttributedString with accessibilitySpeechLanguage , or the underlying UIKit accessibilityLanguage ), in a way that also propagates to a Menu 's presented items. ## Environment @expo/ui : 56.0.14 expo : ~56 react-native : 0.85.3 Platform: iOS 26 (SwiftUI Menu )
1
Load More