Skip to content

Commit 383462f

Browse files
authored
Merge pull request #13 from Intentface/fix-hydration-problem
Fix hydration error regarding isSupported flag
2 parents fd5b53d + 4da06da commit 383462f

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

.changeset/flat-plants-push.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@intentface/react-speech-recognition": patch
3+
---
4+
5+
Fix hydration error regarding isSupported flag

index.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export function useSpeechRecognition({
3535
const [interimTranscript, setInterimTranscript] = useState("");
3636
const [isFinal, setIsFinal] = useState(false);
3737
const [isListening, setIsListening] = useState(false);
38+
const [isSupported, setIsSupported] = useState(false);
3839
const [error, setError] = useState<SpeechRecognitionErrorEvent | null>(null);
3940

4041
const recognitionRef = useRef<SpeechRecognition | null>(null);
@@ -47,6 +48,10 @@ export function useSpeechRecognition({
4748
return window.SpeechRecognition || window.webkitSpeechRecognition;
4849
}, []);
4950

51+
useEffect(() => {
52+
setIsSupported(!!SpeechRecognition);
53+
}, [SpeechRecognition]);
54+
5055
useEffect(() => {
5156
if (!SpeechRecognition) return;
5257

@@ -110,14 +115,14 @@ export function useSpeechRecognition({
110115
}, [SpeechRecognition, continuous, lang, timeout]);
111116

112117
useEffect(() => {
113-
if (!SpeechRecognition) return;
118+
if (!isSupported) return;
114119
if (onUpdate) onUpdate({ transcript, interimTranscript, isFinal });
115-
}, [onUpdate, transcript, interimTranscript, isFinal, SpeechRecognition]);
120+
}, [onUpdate, transcript, interimTranscript, isFinal, isSupported]);
116121

117122
useEffect(() => {
118-
if (!SpeechRecognition) return;
123+
if (!isSupported) return;
119124
if (onError) onError({ error });
120-
}, [onError, error, SpeechRecognition]);
125+
}, [onError, error, isSupported]);
121126

122127
const start = useCallback(() => {
123128
if (!recognitionRef.current) return;
@@ -134,7 +139,7 @@ export function useSpeechRecognition({
134139
interimTranscript,
135140
isListening,
136141
isFinal,
137-
isSupported: !!SpeechRecognition,
142+
isSupported,
138143
start,
139144
stop,
140145
error,

0 commit comments

Comments
 (0)