Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
You can stream one Solon AI ChatModel to either a custom browser interface or a compatible Vercel AI SDK UI. The key choice is the event contract, not whether the connection uses server-sent events (SSE): plain SSE carries application-defined data, while the AI SDK UI Message Stream Protocol v1 carries typed message parts. A client must understand the contract its server sends.
Choose the event contract before wiring the stream
Both approaches below use SSE as the transport, but they do not send interchangeable payloads. Solon’s AI SDK adapter guide converts a streamed ChatModel response into the Vercel AI SDK UI Message Stream Protocol v1. Its separate vanilla JavaScript example sends message content as ordinary SSE for a client that handles parsing and UI state itself.
| Decision | Plain SSE for a custom frontend | AI SDK UI Message Stream Protocol v1 |
|---|---|---|
| Event contract | Application-defined SSE data; Solon’s example sends message content. | Typed message parts for clients that implement the protocol. |
| Good fit | An existing frontend, a custom parser, or straightforward text rendering. | Compatible Vue or React AI SDK useChat integration and richer message features. |
| Rich events | You define, parse, and render any additional event types. | Documented parts include text, reasoning, tool calls, sources, files, custom data, and metadata. |
| Backend responsibility | Produce SSE events in the format your client expects. | Use the adapter, produce SSE, and set x-vercel-ai-ui-message-stream: v1. |
| Main trade-off | More ownership of parsing and UI state. | Conform to the protocol and the client’s expected message contract. |
SSE alone does not tell the browser how to interpret an event. A client expecting plain message text cannot be assumed to understand typed parts such as text-delta or tool-input events. The AI SDK’s Stream Protocols documentation puts the distinction succinctly: “Text streams only support basic text data.” For tool calls or other structured UI activity, use a data stream with a client that supports it, or define and implement your own event contract.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Send a Solon stream in the AI SDK UI protocol
The Solon guide describes solon-ai-ui-aisdk as an adapter from ChatModel.prompt().stream() output—a Flux<ChatResponse>—to SSE events in UI Message Stream Protocol v1. Its controller pattern injects a ChatModel, declares an SSE-producing endpoint, sets the protocol header, and returns the adapter’s output. In outline:
#1 Best Overall
// Pattern shown in Solon's guide; adapt imports and controller details to your project.
return wrapper.toAiSdkStream(chatModel.prompt(prompt).stream());
Set the response header x-vercel-ai-ui-message-stream: v1 and use the SSE content type text/event-stream, as shown in the Solon guide. The header identifies the UI message stream protocol; it does not make an arbitrary SSE endpoint compatible by itself.
Connect a Vue useChat client
The guide’s Vue example points useChat at the endpoint and supplies a custom fetch function. That function maps the submitted messages into the backend’s expected request body, including prompt and sessionId. The important integration step is matching the client’s request shape to the controller: the example derives the backend prompt from the last user message rather than assuming the server accepts the SDK’s default body unchanged. See the Vue integration example for the full pattern.
Rank #2
Use React only with a compatible client contract
The Solon page also presents React useChat integration. The same rule applies: the endpoint must emit the UI Message Stream Protocol v1 events the client expects, and request-body mapping must agree with the backend. Do not assume that any React component that can read an SSE response can consume this typed protocol without implementing its parser.
Rich parts require event and ID discipline
The adapter guide lists message start, optional metadata, step start and finish, reasoning, tool input and output, URL and document sources, text start/delta/end, files, custom data-* parts, finish, and error or abort events. When a single action spans multiple events, keep its ID consistent across start, delta, and end; use distinct IDs for separate actions. Solon warns that parallel agent activity can arrive out of order and become confusing in the UI if IDs and ordering are not handled carefully. The protocol documentation also describes the SSE data stream’s [DONE] termination marker.
Rank #3
Send ordinary SSE to a custom frontend
If your UI does not use the AI SDK protocol, Solon’s vanilla JavaScript example reads the response stream with fetch, obtains a reader, decodes incoming bytes, and handles event data in application code. This route is useful when you want to own how message content maps to your UI. Your application must parse the SSE framing, decide which events to render, and manage message state; it is not the typed UI Message Stream Protocol just because it also uses SSE.
Choose and document the event shape your server sends, then make the browser parser match it. If you later add reasoning, tool activity, sources, or other structured parts, define how those events are represented and rendered rather than assuming a text-only consumer will infer them.
When the model call is already complete
The Solon guide also shows wrapping a blocking prompt().call() result as a “fake stream.” That can provide a stream-shaped response to a client, but the model call has already completed; it is not token-by-token generation. Use prompt().stream() when the UI needs incremental model output.
Check dependency compatibility before copying an example
The Solon documentation page is dated 2026-03-09 and provides Maven coordinates, but it does not state an exact artifact release or an authoritative compatibility matrix for the adapter and @ai-sdk/vue or @ai-sdk/react. Confirm the current release metadata and the versions used by your project before relying on an example as copy-paste-ready. The documented integrations establish the intended pattern, not compatibility for every version combination.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

