Wrapping native speech APIs so Expo devs don't have to
It saves Expo developers from juggling three separate native speech APIs by exposing a single interface across iOS, Android, and web.

What it does
This Expo module wraps the native speech recognizers on iOS, Android, and web into one TypeScript interface. You get event hooks, permission helpers, and options like continuous listening, on-device recognition, and audio file transcription without touching SFSpeechRecognizer or SpeechRecognizer directly. It is essentially well-crafted glue code that absorbs the platform differences so your React Native app doesn’t have to.
The interesting bit Rather than forcing a lowest-common-denominator feature set, it exposes platform-specific levers—like Android intent options, iOS audio session categories, and web SpeechRecognition polyfills—while still providing a unified event model. That means you can tune behavior per platform without abandoning the shared API.
Key highlights
- Unifies iOS
SFSpeechRecognizer, AndroidSpeechRecognizer, and the Web Speech API under one module - Supports real-time transcription, audio file transcription, and volume metering
- Can persist raw audio recordings on Android 13+ and iOS
- Polyfills the Web SpeechRecognition API for browser environments
- Includes an Expo config plugin to handle microphone and speech recognition permissions
Caveats
- Requires a custom development build; it will not run in Expo Go because it relies on native code
- Several features are fragmented by OS version: Android 12 and below lack continuous recognition and punctuation support, while iOS 17 and 18+ handle session timeouts differently
- On-device recognition and audio recording are only available when the underlying platform supports them
Verdict Worth a look if you’re building a cross-platform Expo app that needs voice input and you want to avoid maintaining three separate speech integrations. Skip it if you’re already locked into a single-platform native stack or only need basic web speech recognition.
Frequently asked
- What is jamsch/expo-speech-recognition?
- It saves Expo developers from juggling three separate native speech APIs by exposing a single interface across iOS, Android, and web.
- Is expo-speech-recognition open source?
- Yes — jamsch/expo-speech-recognition is open source, released under the MIT license.
- What language is expo-speech-recognition written in?
- jamsch/expo-speech-recognition is primarily written in TypeScript.
- How popular is expo-speech-recognition?
- jamsch/expo-speech-recognition has 654 stars on GitHub.
- Where can I find expo-speech-recognition?
- jamsch/expo-speech-recognition is on GitHub at https://github.com/jamsch/expo-speech-recognition.