Instead of pre-creating an empty placeholder assistant message when streaming starts (which races with GeminiTypingIndicator rendering), wait until the first SSE token arrives to create the message. This guarantees only one row is ever visible: either the typing indicator (before tokens) or the GeminiMessage (after first token). Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>