#24330·mastra

Studio browser dictation replaces earlier phrases instead of preserving the full transcript

Author: roaminroCreated Sep 17, 2026Updated Sep 17, 2026
Labelsstatus: needs triage

Description

When dictating multiple phrases in one recording session in Studio, each newly finalized phrase replaces the earlier text in the composer. Only the latest phrase remains.

Manually reproduced in Safari. Separately reproduced with automated tests against @mastra/react 1.5.0, the latest stable npm release checked on September 17, 2026.

Steps to reproduce

  1. Open an agent chat in Studio with an empty composer.
  2. Click Start dictation and allow microphone access.
  3. Say “Accept the newer address.”
  4. Wait until that phrase appears. Keep dictation running.
  5. Say “And note that Sentinel confirmed it.”
  6. Stop dictation.

Use Studio’s microphone button, not the operating system’s dictation feature. This affects the browser-backed recognition path.

Expected behavior

Both finalized phrases remain:

Accept the newer address. And note that Sentinel confirmed it.

Actual behavior

The second phrase replaces the first:

And note that Sentinel confirmed it.

Verification

Automated tests imported the actual published hook and mocked only browser recognition events, maintaining cumulative results with an advancing resultIndex.

They confirmed:

  • Earlier phrases disappear even when events are separately flushed.
  • A consumer effect accumulating transcript values loses intermediate phrases when updates batch.
  • Identical consecutive phrases also defeat that workaround because the transcript dependency does not change.

Studio’s consumer is in packages/playground/src/lib/ai-ui/thread.tsx: SpeechInput passes the hook’s transcript to the composer’s text setter.

Impact

Multi-phrase dictation silently loses earlier parts of a message before sending.