CopilotKit v1.50 is here, with brand new interfaces, streamlined internals, and no breaking changes!
CopilotKit has been working toward this architecture upgrade for several months.
v1.50 is the most significant step forward in the CopilotKit 1.x line, focused on the problems developers face when building agentic features: ie, thread persistence, reliable reconnection, multi-agent coordination, shared state, type safety, and a cleaner interface.
Let’s walk through everything included in this release, explain why these changes matter, and show what you can do with the new APIs starting today.
Set your CopilotKit version to:
pnpm i @copilotkit/react-core@latest @copilotkit/react-ui@latest @copilotkit/runtime@latestThen install with with your preferred package manager.
useAgent is the easiest way to connect your frontend to any agent. It:
sendMessage()), automatically wrapped as AG-UI events.Limit the work with a few lines of code and instantly get a real-time, long-running agent inside your app
Simpler architecture, and what you get out of the box is:
v1.50 tackles all of that in one release, without breaking existing apps.
Everything you’re using from CopilotKit v1.x continues to work - components, hooks, patterns, and runtime setup. You can upgrade, rebuild, and the app should behave identically.
Important: Don't confuse CopilotKit versions with interface versions
Compatibility:
The new capabilities live under versioned imports:
import { CopilotChat, useAgent } from "@copilotkit/react-core/v2";You can mix old and new:
This keeps migration friction low while giving you a path to adopt the more powerful APIs whenever you’re ready.
One of the top developer requests: long-running, resumable conversations.
v1.50 introduces the first fully supported thread model in CopilotKit:
Development:
You get InMemory and SQLite runners out of the box.
import { CopilotRuntime } from "@copilotkit/runtime";
const runtime = new CopilotRuntime({
agents: { default: agent },
runner: new InMemoryAgentRunner(),
});Production:
Copilot Cloud + Copilot Enterprise (coming soon) will provide:
(Teams needing this today can join the Enterprise Early Access program.)
On the client:
This:
No extra complicated setup is required.
useAgent is the new v2 hook and a superset of useCoAgent. It exposes a more complete set of tools for coordinating agent behavior.
Useful when the agent needs to maintain a structured memory object tied to your UI.
const { agent } = useAgent({ agentId: "my-agent" });
agent.state;
agent.setState;Set or override the message history directly.
agent.setMessages(/* new message array */);Great for restoring conversations, cleaning up state, testing, and replaying interactions.
Run multiple agents side-by-side in the same UI.
const { agent: langgraph } = useAgent({ agentId: "langgraph" });
const { agent: pydantic } = useAgent({ agentId: "pydantic" });
[langgraph, pydantic].forEach((agent) => {
agent.addMessage({ id: crypto.randomUUID(), role: "user", content: message });
agent.runAgent();
});Agents can read or adopt each other’s messages.
langgraph.setMessages(pydantic.messages);
pydantic.setMessages(langgraph.messages);This enables structured multi-agent orchestration without forcing developers to adopt a specific agent framework.
The UI overhaul introduces modernized components with a flexible override system.
Available under @copilotkit/react-core/v2:
CopilotChatCopilotSidebarCopilotPopupHighlights:
The goal: build UIs that match your product, not look like a generic chat widget.
v1.50 extends Zod to more hooks, keeping your agent interfaces type-safe in both directions.
Improved runtime and compile-time type checking for:
useHumanInTheLoopuseFrontendTooluseRenderToolCall (new dev-experience tooling)This tightens the contract between UI components, runtime messages, and LLM-driven operations.
For teams that prefer a direct LLM integration rather than a full agent runtime, the Direct-to-LLM path is now more flexible.
new BasicAgent({
model: "openai/gpt-4o",
prompt: "You are a helpful AI assistant.",
temperature: 0.7,
});Use more models, more providers, and configure them with fewer constraints.
The same shared state API from useAgent works with BasicAgent as well.
const { agent } = useAgent({ agentId: "myBasicAgent" });
agent.state;
agent.setState;You can now maintain structured UI-level state in setups that don’t rely on more complex agent frameworks.
One significant change is that GraphQL has been entirely removed.
The runtime now uses a simpler, more direct architecture that:
This is one of the most impactful internal cleanups of the release.
latform questions, early access inquiries, or team integration help:
→ https://calendly.com/d/cnqt-yr9-hxr/talk-to-copilotkit?
We’d love to hear how CopilotKit fits into your product.
v1.50 brings CopilotKit a lot closer to what developers have been asking for:
If you’re building agentic features into your product, this release provides a simpler, more scalable foundation for doing it well.
If you’re using CopilotKit in a production product or business, we’d love to help.
You can schedule time with the team here:


.png&w=750&q=75)
Subscribe to our blog and get updates on CopilotKit in your inbox.
