Repository navigation
feat(ai-components): add VoiceGlow and VoiceWave voice-agent visualizations (V10) - #3896
Merged
Merged
Conversation
β¦ations Port of #3895 to V10. The ExpoChatGPTSample voice mode reads replies from channel.messagePaginator.items and message.custom.ai_generated (stream-chat v10).
Contributor
SDK Size
|
isekovanic
approved these changes
Oct 27, 2026
Contributor
|
π This PR is included in version 10.0.0 π The release is available on:
Your semantic-release bot π¦π |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ticket: https://linear.app/stream/issue/RN-468
π― Goal
Port of #3895 (the
developcounterpart) toV10: theVoiceWaveandVoiceGlowvoice-agent visualizations instream-chat-react-native/ai-components(andstream-chat-expo/ai-components), theuseDictationAudioLevelhook, and the voice mode inExpoChatGPTSample. Android, iOS and web already ship these visualizations in their AI components.π Implementation details
Everything under
package/is identical to #3895 (both of its commits,0f07f0366and38a224a65, squashed into one), and applied to V10 without changes. See #3895 for the full description. In short:VoiceWaveandVoiceGlow: one motion driver ported from Android, run as Reanimated worklets on the UI thread; the glow is Android's AGSL shader ported to Skia SkSL, the wave a Skia path. Props:state,colors,expressivity,audioLevel(SharedValue<number | null>) andstateLabels, plusViewprops.useDictationAudioLevel(), backed by a newAIDictationOnLevelevent inpackage/shared-native/{android,ios};useDictationStateanduseDictationTranscriptare now exported.voiceVisualizationtheme key (colors,backdropColor).sourceoption onuseDictation, soComposerViewonly fills its input from its own mic button.AVAudioSessionit found when dictation ends.What differs from #3895 on V10 (all in
examples/ExpoChatGPTSample):screens/ChatContent.tsx: V10 already moved channel creation andstartAI/summarizefrompreSendMessageRequestinto the client'ssendMessageRequesthandler inapp/_layout.tsx, so the port only addsVoiceModeanduseSendAIMessagethere and drops the imports it no longer needs.components/VoiceMode/useVoiceConversation.ts: stream-chat v10 has nochannel.state.latestMessages, so the voice mode readschannel.messagePaginator.items; and custom data lives undercustom, so it checksmessage.custom?.ai_generated.hooks/useSendAIMessage.ts: the doc comment names thesendMessageRequesthandler instead ofpreSendMessageRequest.Docs: the v10-rc AI integration pages are updated in GetStream/getstream.io#810, together with v9.
π¨ UI Changes
Same UI as #3895; see its recordings.
π§ͺ Testing
yarn lint(includingvalidate-entry-isolation),cd package && yarn test:typecheck,yarn typecheck,yarn buildandyarn test:unit(246 suites, 2302 tests) pass on this branch.shared-native:syncwas run.messagePaginator.itemsis type-checked only. Dictation needs a physical device (iOS 27 simulators can't initialize the speech recognizer).βοΈ Checklist
developbranch (targetsV10; thedevelopcounterpart is feat(ai-components): add VoiceGlow and VoiceWave voice-agent visualizationsΒ #3895)