# React SDK How to listen differentiate LLM stream

**URL:** <https://forum.langchain.com/t/react-sdk-how-to-listen-differentiate-llm-stream/2019>\
**Category:** LangGraph\
**Tags:** js-help\
**Created:** [October 30, 2025, 6:53am UTC](https://forum.langchain.com/t/react-sdk-how-to-listen-differentiate-llm-stream/2019 "2025-10-30T06:53:40Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![hieusmiths](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/hieusmiths/32/578_2.png) [@hieusmiths](https://forum.langchain.com/u/hieusmiths)\
**Post date:** [October 30, 2025, 6:53am UTC](https://forum.langchain.com/t/react-sdk-how-to-listen-differentiate-llm-stream/2019/1 "2025-10-30T06:53:40Z")

</div>

The SDK’s **`useStream`** hook is designed to simplify the most common use case: streaming chat messages into a single, cohesive history.

Yeah, This a handles a lot of complexity for standard chat interface.

However, in certain advanced use cases, we require **more granular control** over the stream routing than the current aggregation allows.

We need support for scenarios such as:

- **Concurrent LLM Streaming:** Simultaneously streaming outputs from **multiple LLMs within the same graph run** (e.g., an LLM for the main answer and a second LLM for real-time fact-checking or hint generation) and routing those token streams to **separate UI components** on the client.

- **Streaming Non-Message Fields:** Streaming token or structured data from a graph state field **other than the main `messages` field**. This is necessary for use cases like Generative UI or streaming JSON objects that are not part of the standard chat history.

Thank for checking

---

<div class="post-metadata">

**Author:** ![marco](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@marco](https://forum.langchain.com/u/marco)\
**Post date:** [October 30, 2025, 12:04pm UTC](https://forum.langchain.com/t/react-sdk-how-to-listen-differentiate-llm-stream/2019/2 "2025-10-30T12:04:42Z")

</div>

Hey @hieusmiths! Take a look at this guide on how to populate UI components in your frontend dynamically. You can stream llm output tokens and elements in the state of the graph

> **[How to implement generative user interfaces with LangGraph - Docs by LangChain](https://docs.langchain.com/langsmith/generative-ui-react)**

---

<div class="post-metadata">

**Author:** ![hieusmiths](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/hieusmiths/32/578_2.png) [@hieusmiths](https://forum.langchain.com/u/hieusmiths)\
**Post date:** [October 31, 2025, 7:40am UTC](https://forum.langchain.com/t/react-sdk-how-to-listen-differentiate-llm-stream/2019/3 "2025-10-31T07:40:10Z")

</div>

Ah, So to stream **multiple** LLM(s) **Concurrency,** We can use custom event to stream them, right?
