<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd" -->

---
title: TanStack AI now fully speaks AG-UI | daily.dev
description: TanStack AI now implements the AG-UI protocol in both directions. Previously only server-to-client streaming events were AG-UI compliant; the client-to-server...
canonical: https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: TanStack AI now fully speaks AG-UI | daily.dev
og:description: TanStack AI now implements the AG-UI protocol in both directions. Previously only server-to-client streaming events were AG-UI compliant; the client-to-server...
og:url: https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd
og:image: https://api.daily.dev/og/posts/K8UmQZAfD.png
og:image:alt: TanStack AI now fully speaks AG-UI
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# TanStack AI now fully speaks AG-UI

**[TanStack](https://daily.dev/sources/tanstack-blog)** · 6 min read · 0 upvotes · 0 comments

## Summary

TanStack AI now implements the AG-UI protocol in both directions. Previously only server-to-client streaming events were AG-UI compliant; the client-to-server request body was a proprietary { messages, data } shape. This release replaces that with the full AG-UI RunAgentInput envelope (threadId, runId, tools, forwardedProps, etc), making @tanstack/ai-client interoperable with any AG-UI server and any AG-UI client interoperable with @tanstack/ai endpoints. The change is fully backward compatible: body is deprecated in favor of forwardedProps, conversationId is a deprecated alias for threadId, and a jscodeshift codemod is provided to migrate call sites. These compatibility bridges will be removed in the next major release. The release targets AG-UI spec version 0.0.52 and claims TanStack AI is the first SDK with full bidirectional AG-UI compliance.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://tanstack.com/blog/ag-ui-compliance>

## Questions this post answers

### What changed in the TanStack AI client-to-server request format for AG-UI compliance?

The @tanstack/ai-client now POSTs the full AG-UI RunAgentInput envelope instead of a proprietary { messages, data } body. The new payload includes threadId, runId, state, messages, tools, context, and forwardedProps. The old data field is still emitted as a mirror of forwardedProps, so servers reading body.data.X keep working unchanged.

_daily.dev surfaces protocol upgrades like this for teams wiring agent clients to new backends._

### Is the AG-UI protocol upgrade in TanStack AI a breaking change?

No, it ships fully backward compatible through three compatibility bridges: body is now a deprecated alias for forwardedProps, body.data mirrors forwardedProps on the wire, and conversationId is a deprecated alias for threadId. Existing code using any of these old names keeps working, though the bridges will be removed in the next major release.

_Teams planning framework upgrades can track deprecation timelines like this one on daily.dev._

### How do I migrate existing TanStack AI code from the body option to forwardedProps?

Run the provided jscodeshift codemod against the source tree: npx jscodeshift --parser=tsx -t https://raw.githubusercontent.com/TanStack/ai/main/codemods/ag-ui-compliance/transform.ts "src/**/*.{ts,tsx}". The codemod is import-source gated, so it only touches files that import from @tanstack/ai* packages, leaving unrelated code untouched.

_Developers running framework codemods can find migration guides like this through daily.dev._

## Similar posts on daily.dev

- [TanStack Releases Framework Agnostic AI Toolkit](https://daily.dev/posts/tanstack-releases-framework-agnostic-ai-toolkit-j747yitl6) · InfoQ · 1 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#architecture](https://daily.dev/tags/architecture), [#ai-agents](https://daily.dev/tags/ai-agents), [#tanstack](https://daily.dev/tags/tanstack)

[View this post on daily.dev](https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"TanStack AI now fully speaks AG-UI","url":"https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd"},"datePublished":"2026-08-23T12:23:55.941Z","dateModified":"2026-08-23T12:57:12.971Z","description":"TanStack AI now implements the AG-UI protocol in both directions. Previously only server-to-client streaming events were AG-UI compliant; the client-to-server...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/356befb3314da03264d6276dae8bde32?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/356befb3314da03264d6276dae8bde32?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"TanStack","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"TanStack","logo":"https://media.daily.dev/image/upload/s--TVIrvIT7--/f_auto,q_auto/v1787487634/logos/tanstack-blog?_a=BAMAMicg0","url":"https://daily.dev/sources/tanstack-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"javascript,architecture,ai-agents,tanstack","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"TanStack","item":"https://daily.dev/sources/tanstack-blog"},{"@type":"ListItem","position":3,"name":"TanStack AI now fully speaks AG-UI"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/tanstack-ai-now-fully-speaks-ag-ui-k8umqzafd#faq","mainEntity":[{"@type":"Question","name":"What changed in the TanStack AI client-to-server request format for AG-UI compliance?","acceptedAnswer":{"@type":"Answer","text":"The @tanstack/ai-client now POSTs the full AG-UI RunAgentInput envelope instead of a proprietary { messages, data } body. The new payload includes threadId, runId, state, messages, tools, context, and forwardedProps. The old data field is still emitted as a mirror of forwardedProps, so servers reading body.data.X keep working unchanged. daily.dev surfaces protocol upgrades like this for teams wiring agent clients to new backends."}},{"@type":"Question","name":"Is the AG-UI protocol upgrade in TanStack AI a breaking change?","acceptedAnswer":{"@type":"Answer","text":"No, it ships fully backward compatible through three compatibility bridges: body is now a deprecated alias for forwardedProps, body.data mirrors forwardedProps on the wire, and conversationId is a deprecated alias for threadId. Existing code using any of these old names keeps working, though the bridges will be removed in the next major release. Teams planning framework upgrades can track deprecation timelines like this one on daily.dev."}},{"@type":"Question","name":"How do I migrate existing TanStack AI code from the body option to forwardedProps?","acceptedAnswer":{"@type":"Answer","text":"Run the provided jscodeshift codemod against the source tree: npx jscodeshift --parser=tsx -t https://raw.githubusercontent.com/TanStack/ai/main/codemods/ag-ui-compliance/transform.ts \"src/**/*.{ts,tsx}\". The codemod is import-source gated, so it only touches files that import from @tanstack/ai* packages, leaving unrelated code untouched. Developers running framework codemods can find migration guides like this through daily.dev."}}]}
```

