TanStack AI 1.0 makes the model easier to change—and the application harder to ignore
TanStack AI 1.0 stabilizes its core while keeping the agent harness experimental. A practical look at provider portability, three application scenarios, and a careful upgrade from 0.x.
Original editorial diagram by Ken Jo, based on the sources listed below.
Changing a model should be a product decision. In an application that has accumulated provider-specific message formats, browser state, and tool callbacks, it can become a migration project before anyone compares the new answers.
TanStack AI 1.0, announced on October 23, 2026, makes a concrete commitment at that boundary: stable core APIs, with 23 provider adapters and support across several UI frameworks. Its new agent harness remains experimental. That distinction matters more than the version number if you are deciding what to build on today. TanStack's announcement.
TanStack develops open-source libraries for application developers. This release concerns the software between an AI model and the product around it: streaming responses, tools, interfaces, and application state. Here is how to judge its portability promise, where it helps in three ordinary projects, and what an existing 0.x application needs before upgrading.

Official TanStack AG-UI example, © 2025 Tanner Linsley, MIT license. The image shows the project's example interface and its selected model, not a run performed for this article.
A common interface makes a provider change smaller
An adapter translates between an application's expectations and a provider's API. It gives developers a consistent place to request a model response and consume what comes back. The application can keep its conversation display and business rules while changing the provider-facing piece.
Think of this layer as a switchboard. It establishes understandable connections without making every system on the other end identical. That is useful precisely because models, hosting arrangements, and product requirements keep changing independently.
The October 23 announcement describes 23 adapters, plus an OpenAI-compatible option for services using that API shape. It also separates the stable core from experimental harness packages. These are compatibility and maintenance commitments; they do not promise that every provider supports every model feature. Release scope.
For a developer, the immediate question is therefore specific: which parts of the current application would survive a provider change? A response renderer may transfer easily. A workflow built around one provider's file identifiers, unusual tool behavior, or model-specific output assumptions may still require deliberate changes.
Our view is that this is the right unit of progress. Portability is valuable when it reduces the amount of product code a team must revisit. The number of supported providers is less useful than successfully changing the one dependency a real product needs to change.
The application still owns what success means
A common API cannot make two models produce equivalent decisions. One may be better at following a structured output contract; another may respond differently to a long conversation or ambiguous tool result. An adapter can normalize how a request travels without proving that its answer meets your application's requirements.
This has a practical consequence for testing. Keep provider integration tests separate from the examples that define acceptable product behavior. A correctly completed request verifies one contract; an accurate answer, appropriate tool choice, and understandable interface verify several others.
For example, a support assistant may have a tool that retrieves an order and another that prepares a refund request. Both providers may call those tools correctly at the protocol level. The important question is whether each model selects the right operation, respects the same authorization rules, and describes the result accurately.
Use a small, named evaluation set before switching. Include incomplete requests, unusual inputs, an unavailable tool, and a conversation resumed after a previous turn. The suggested set is an engineering procedure, not a benchmark published by TanStack. Its purpose is to make the team's own definition of success repeatable.
An adapter can preserve the connection contract. Application-specific evaluations establish whether the behavior on the other side remains acceptable.
Three projects expose different kinds of portability
Consider an existing customer-support application first. It already has accounts, permissions, and a conversation history. Adding streaming answers should fit that product rather than require replacing its navigation or data ownership. A shared AI layer is attractive when it lets the team keep those established structures and evaluate providers behind them.
In this illustrative project, start with read-only help retrieval. Check whether the answer cites the material the application supplied and whether cancellation leaves the conversation in a sensible state. Introduce actions only after the interface clearly distinguishes a proposal from a completed operation. Changing the model later should reuse those same checks.
A second scenario is an internal writing tool. A team wants people to select a paragraph, ask for a revision, and compare it with the original. The interface is an editor rather than a conventional chat window. Here, a headless integration is useful because the product needs to own where generated text appears and when a person accepts it.
For this application, provider portability should preserve the user's work. Do not overwrite a source paragraph merely because a stream completed. Keep the suggestion separate, let the person inspect it, and define how a stopped or failed generation is discarded. Those choices are application responsibilities regardless of which SDK supplies the stream.
A third scenario involves a team with an existing backend in another language. TanStack's official AG-UI example connects a React client to six possible backend languages through Server-Sent Events. The example's README explains that those servers speak the wire protocol without requiring TanStack packages on the server. Official polyglot example.
That example gives the portability claim a useful shape. A team can evaluate a browser interface without immediately rewriting a functioning backend. It must still implement the expected events correctly, protect the endpoint, and connect conversation state to its own users. A demonstration of a compatible protocol is a starting point for that work.
| Project | What a common layer can preserve | What the application must evaluate |
|---|---|---|
| Support assistant | Conversation display and provider integration boundary | Source accuracy, permitted tool actions, and error recovery |
| Writing interface | Streaming mechanics inside an existing editor | Original-text preservation, acceptance, cancellation, and revision quality |
| Existing non-JavaScript backend | A client that consumes a shared event protocol | Correct event order, authentication, conversation ownership, and persistence |
These scenarios explain why the choice is broader than a comparison between chat libraries. The relevant question is how much of a product remains coherent when one component changes. Different teams will care about different boundaries, even when they use the same model.
Stable core and experimental harness deserve separate decisions
The release makes the core 1.0 commitment explicit, while its new agent harness stays on experimental 0.x APIs. A team should record those as two different dependency choices. Installing both does not extend the core's stability commitment to the harness. October 23 release announcement.
For a bounded feature, the simpler lifecycle is often easier to reason about: a request arrives, the model works, and the application handles the result. A longer-lived agent introduces additional questions about concurrent messages, recovery, stored state, and actions that outlive a browser connection. The appeal of a harness is that it offers a place to organize those concerns.
The experimental designation is a maintenance fact, not a reason to avoid every experiment. Keep an evaluation isolated from the product's critical path, make ownership explicit, and budget for API changes. A prototype can teach a team whether the longer-lived interaction is useful before the team commits to operating it.
If the immediate goal is a streaming answer in an existing screen, start there. Add orchestration when the user workflow requires it. A richer abstraction should solve a concrete lifecycle problem rather than become a prerequisite for every small AI feature.
Start with a complete, small interaction
TanStack's current quick start connects a server route, provider credentials, and a framework-specific interface. Its React example uses a server-side model call and an SSE connection, with an explicit conversation identifier. The documentation also keeps the provider API key out of the browser. Quick start, checked October 27, 2026.
For an initial evaluation, use the following sequence in a separate development branch. The goal is one interaction that your team can inspect from request to result. There is no need to migrate unrelated application infrastructure to learn whether the integration fits.
- Choose one existing screen and one bounded task. A read-only question about supplied help material is easier to inspect than a workflow that immediately changes customer records.
- Install the stable packages for that interface together. For the documented React/OpenAI starting point, use
npm i @tanstack/ai@^1 @tanstack/ai-react@^1 @tanstack/ai-openai@^1. Commit the resulting lockfile so the evaluated versions are identifiable. - Implement the server boundary from the current quick start. Keep credentials in the server environment. Connect the request to an authenticated user and a conversation identifier owned by the application.
- Render streaming, completion, and cancellation visibly. A person should be able to tell whether the response is still arriving, finished, or interrupted. Preserve their input when a request fails.
- Exercise the same task with a second supported provider. Keep the source material and evaluation cases fixed. Record behavior differences separately from integration changes.
- Review the result as a product feature. Inspect what users see, what data is retained, and which failures require intervention before deciding whether to expand the integration.
The procedure is intentionally small enough to repeat. One successful answer is encouraging, but a failure that remains understandable is equally informative. A useful abstraction makes both paths easier to maintain.
An upgrade from 0.x includes data, not just imports
The migration guide removes APIs that were deprecated during 0.x and describes coordinated package updates. It also calls out saved chats, runs, and files as a separate migration concern. A passing type check therefore establishes only part of upgrade readiness. TanStack's 1.0 upgrade guide, checked October 27.
This is easy to miss in an application that looks healthy in a fresh browser session. A new conversation can succeed while an older conversation contains state the new client cannot resume. The migration must include representative persisted records, not only newly generated requests.
The guide distinguishes renaming a property from supplying its correct value. An explicit threadId needs a real ownership model; an automated edit cannot decide how your route or database identifies a conversation. Likewise, a similar-looking body option in another part of the API should not be changed by an indiscriminate text replacement.
Use the documented codemod in preview mode, inspect the diff, and upgrade the stable client and server packages together. Then follow the guide's saved-data steps in a test environment before deploying. Keep the experimental harness packages on their documented release track rather than assuming every related package has the same major version.
An upgrade is complete when existing conversations and the interface still work, as well as the newly compiled code.
Give the release check a user-visible definition. Open an existing conversation, continue it, cancel another response, and exercise an allowed tool flow plus a denied one. Confirm that a permission decision still belongs to the correct user. These checks make the migration's consequences reviewable without treating the SDK version as a quality score.
Portability is a maintained ability to change
TanStack AI 1.0 offers a useful direction for teams that want models and interfaces to remain deliberate choices. The strongest adoption case is an application with a clear boundary that the library can simplify. The weakest is an application expecting an adapter to erase all behavioral differences between providers.
The practical test is what happens on the second change: another provider, a resumed conversation, a revised tool contract, or an older record opened by a new client. Keep those changes observable, and portability becomes an operating capability rather than a promise in an architecture document.
Sources
- TanStack AI 1.0 announcement, October 23, 2026.
- TanStack AI quick start, checked October 27, 2026.
- Upgrade to 1.0, checked October 27, 2026.
- Official AG-UI polyglot example and MIT license, inspected October 27, 2026. The scenarios and evaluation procedure above are illustrative; no comparative provider benchmark was performed.
A recommendation from Telli.sh
Keep the requests, source material, and decisions behind an AI integration in a searchable reference collection. Create a Telli.sh account to organize your project notes and review material.