惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
H
Help Net Security
GbyAI
GbyAI
博客园_首页
G
Google Developers Blog
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
月光博客
月光博客
美团技术团队
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 叶小钗
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Proofpoint News Feed

shadcn/ui Changelog

September 2026 - cn August 2026 - Private GitHub Registries August 2026 - Human in the Loop August 2026 - Questionnaire July 2026 - Dynamic Search July 2026 - Toast July 2026 - React Aria July 2026 - Introducing shadcn/typeset July 2026 - Base UI as the Default June 2026 - Components for Chat Interfaces June 2026 - GitHub Registries May 2026 - shadcn eject May 2026 - Introducing Rhea May 2026 - Registry Include and Validate May 2026 - Package Imports and Target Aliases April 2026 - shadcn preset April 2026 - Pointer Cursor April 2026 - Partial Preset Apply April 2026 - Introducing Sera April 2026 - shadcn apply April 2026 - Component Composition March 2026 - Introducing Luma March 2026 - shadcn/cli v4 February 2026 - Blocks for Radix and Base UI February 2026 - Unified Radix UI Package January 2026 - RTL Support January 2026 - Inline Start and End Styles January 2026 - Base UI Documentation December 2025 - npx shadcn create October 2025 - Registry Directory
July 2026 - Introducing @shadcn/helpers
shadcn · 2026-07-14 · via shadcn/ui Changelog

Small, focused helpers for developing apps, starting with AI SDK and TanStack AI.

We are open sourcing @shadcn/helpers, a new package for small, focused helpers that make developing apps easier.

Starting with a helper for AI SDK and TanStack AI. It lets you write a conversation in code, then run it through the real useChat lifecycle without a model, API route, network request, or API key.

Your UI receives native framework messages and streaming events, so reasoning, tool calls, loading states, and message components behave the same way they do in production.

Here is a conversation written with the AI SDK helper:

import { createChat } from "@shadcn/helpers/ai-sdk"
 
const chat = createChat()
  .user("What changed in this release?")
  .assistant("The release adds keyboard shortcuts and faster search.")
  .user("Can you check the full release notes?")
  .sleep(500)
  .assistant(({ writer }) => {
    writer.stepStart()
 
    // Reasoning.
    writer.reasoning("I should read the release notes first.")
 
    // Tool call.
    writer
      .tool("getReleaseNotes", {
        title: "Reading release notes",
        input: { version: "latest" },
      })
      .sleep(500)
      .output({
        highlights: ["Keyboard shortcuts", "Faster search"],
      })
 
    // Source.
    writer.sourceUrl({
      title: "Release notes",
      url: "https://example.com/releases",
    })
 
    // Response.
    writer.text("The release adds keyboard shortcuts and faster search.")
  })

Pass its messages and transport to useChat:

import { useChat } from "@ai-sdk/react"
 
const initialMessages = chat.get(0)
const transport = chat.transport()
 
export function Chat() {
  const { messages } = useChat({
    messages: initialMessages,
    transport,
  })
}

The package includes two adapters:

Use it to build components, create previews and demos, write documentation, or test streaming interfaces with deterministic output and no backend dependency.