Skip to content

Release 0.4.0 (07-05-2026)

Choose a tag to compare

@NotGeorgeMessier NotGeorgeMessier released this 07 May 07:19
· 35 commits to main since this release
92a506c

🔥 Complete revamp of the iOS architecture

  • Coordinator selects the best candidate from SpeechTranscriber, DictationTranscriber and SFSpeechRecognition based on your configuration
  • If candidate fails -> the next best option is selected
  • Prewarm support -> confirms locale availability, downloads required assets, precomputes heavy operations
  • Transcriber cache - if important config values weren't changed -> Transcriber skips all needless work
  • Live updates of autoFinishRecognitionMs, autoFinishProgressIntervalMs, resetAutoFinishVoiceSensitivity during the active session (including from worklets)
  • 60+ locales available, use getSupportedLocalesIOS() to get the full list
  • Transcriber presets for short or general conversation
  • Atypical speech support
  • Lots of micro optimizations

❗️Breaking Changes

1. Voice Input Volume - new interface VolumeChangeEvent

Hook useVoiceInputVolume(): number -> useVoiceInputVolume(): VolumeChangeEvent
Callback onVolumeChange: (event: number) => void -> onVolumeChange: (event: VolumeChangeEvent) => void

interface VolumeChangeEvent {
  // This is the "number" from previous version
  smoothedVolume: number
  // New data from Audio Buffer
  rawVolume: number
  db?: number
}

2. updateAutoFinishTime() is deprecated

Use updateConfig instead

updateConfig(
    newConfig?: MutableSpeechRecognitionConfig,
    resetAutoFinishTime?: boolean
  ): void

3. Few renaming

Static instance
RecognizerSession -> SpeechRecognizer
Default volume change handler
unsafe_onVolumeChange -> speechRecognizerVolumeChangeHandler
Types:
RecognizerHandlers -> RecognizerMethods
SpeechToTextParams -> SpeechRecognitionConfig

✨ Features

  • Full support of react-native-worklets (use v0.8.0+ for Android)
  • Finally added full support onAutoFinishProgress for Android
  • Added property autoFinishProgressIntervalMs for config - interval between onAutoFinishProgress
  • Added property resetAutoFinishVoiceSensitivity for config - The voice detector sensitivity to reset the silence timer based on volume, from 0 to 1
  • Added static method resetAutoFinishTime - resets the Timer to the threshold
  • Added static method updateConfig - updates config softly (If the new property is null, the previous one is retained) during active session
  • Added static method prepare - prepares resources, downloads assets, confirms locale availability

🐛 Bug Fixes

  • Android release build crash with Proguard enabled
  • Android cpp-adapter missed facebook::jni
  • iOS - if locale isnt supported by SpeechTranscriber or DictationTranscriber -> recognition fails
  • iOS - if Transcriber fails -> no fallback activated
  • iOS - Voice sensitivity is locked as magic number
  • iOS - Tasks could get into race condition
  • Both - Timer got reset due to partial results even if the actual results were empty