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

推荐订阅源

Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
D
Docker
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Cloudflare Blog
雷峰网
雷峰网
A
About on SuperTechFans
小众软件
小众软件
博客园 - Franky
博客园 - 聂微东
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
Engineering at Meta
Engineering at Meta
宝玉的分享
宝玉的分享
aimingoo的专栏
aimingoo的专栏
量子位
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
罗磊的独立博客
Martin Fowler
Martin Fowler
D
DataBreaches.Net
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Secure Thoughts
Project Zero
Project Zero
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
S
Schneier on Security
Blog — PlanetScale
Blog — PlanetScale
The Hacker News
The Hacker News
Spread Privacy
Spread Privacy
Security Latest
Security Latest
NISL@THU
NISL@THU
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
J
Java Code Geeks

shadcn/ui Changelog

July 2026 - Introducing @shadcn/helpers 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 October 2025 - New Components September 2025 - Registry Index July 2025 - Universal Registry Items July 2025 - Local File Support June 2025 - radix-ui Migration June 2025 - Calendar Component May 2025 - New Site April 2025 - MCP April 2025 - shadcn 2.5.0 April 2025 - Cross-framework Route Support February 2025 - Tailwind v4 February 2025 - Updated Registry Schema January 2025 - Blocks Community December 2024 - Monorepo Support November 2024 - Icons October 2024 - React 19 October 2024 - Sidebar August 2024 - npx shadcn init April 2024 - Lift Mode March 2024 - Introducing Blocks March 2024 - Breadcrumb and Input OTP December 2023 - New Components July 2023 - JavaScript June 2023 - New CLI, Styles and more
August 2025 - shadcn CLI 3.0 and MCP Server
shadcn · 2025-08-27 · via shadcn/ui Changelog

We just shipped shadcn CLI 3.0 with support for namespaced registries, advanced authentication, new commands and a completely rewritten registry engine.

What's New

  • Namespaced Registries - Install components using @registry/name format.
  • Private Registries - Secure your registry with advanced authentication.
  • Search & Discovery - New commands to find and view code before installing.
  • MCP Server - MCP server for all registries.
  • Faster Everything - Completely rewritten registry resolution.
  • Improved Error Handling - Better error messages for users and LLMs.
  • Upgrade Guide - Migration notes for existing users.

Namespaced Registries

The biggest change in 3.0 is namespaced registries. You can now install components from registries: a community registry, your company's private registry or internal registry, using the @registry/name format.

This makes it easier to distribute code across teams and projects.

Configure registries in your components.json:

components.json
{
  "registries": {
    "@acme": "https://acme.com/r/{name}.json",
    "@internal": {
      "url": "https://registry.company.com/{name}",
      "headers": {
        "Authorization": "Bearer ${REGISTRY_TOKEN}"
      }
    }
  }
}

Then use the @registry/name format to install components:

It's completely decentralized. There's no central registrar. Create any namespace you want and organize components however makes sense for your team.

components.json
{
  "registries": {
    "@design": "https://registry.company.com/create/{name}.json",
    "@engineering": "https://registry.company.com/eng/{name}.json",
    "@marketing": "https://registry.company.com/marketing/{name}.json"
  }
}

Components can even depend on resources from different registries. Everything gets resolved and installed automatically from the right sources.

registry-item.json
{
  "name": "dashboard",
  "type": "registry:block",
  "registryDependencies": [
    "@shadcn/card", // From default registry
    "@v0/chart", // From v0 registry
    "@acme/data-table", // From acme registry
    "@lib/data-fetcher", // Utility library
    "@ai/analytics-prompt" // AI prompt resource
  ]
}

Private Registries

Need to keep your components private? We've got you covered. Configure authentication with tokens, API keys, or custom headers:

components.json
{
  "registries": {
    "@private": {
      "url": "https://registry.company.com/{name}.json",
      "headers": {
        "Authorization": "Bearer ${REGISTRY_TOKEN}"
      }
    }
  }
}

Your private components stay private. Perfect for enterprise teams with proprietary UI libraries.

We support all major authentication methods: basic auth, bearer token, API key query params and custom headers.

See the authentication docs for more details.

Search & Discovery

Three new commands make it easy to find exactly what you need:

  1. View items from the registry before installing
  1. Search items from registries
  1. List all items from a registry

Preview components before installing them. Search across multiple registries. See the code and all dependencies upfront.

MCP Server

MCP Server

Back in April, we introduced the first version of the MCP server. Since then, we've taken everything we learned and built a better MCP server.

Here's what's new:

  • Works with all registries. Zero config
  • One command to add to your favorite MCP clients
  • We improved the underlying tools
  • Better integration with the CLI and registries
  • Support for multiple registries in the same project

Add the MCP server to your project:

See the docs for more details.

Faster Everything

We completely rewrote the registry resolution engine from scratch. It's faster, smarter, and handles even the trickiest dependency trees.

  • Up to 3x faster dependency resolution
  • Smarter file deduplication and merging
  • Better monorepo support out of the box
  • Updated build command for registry authors

Improved Error Handling

Registry developers can now provide custom error messages to help guide users (and LLMs) when things go wrong. The CLI displays helpful, actionable errors for common issues:

Unknown registry "@acme". Make sure it is defined in components.json as follows:
{
  "registries": {
    "@acme": "[URL_TO_REGISTRY]"
  }
}

Missing environment variables? The CLI tells you exactly what's needed:

Registry "@private" requires the following environment variables:
  • REGISTRY_TOKEN
 
Set the required environment variables in your .env or .env.local file.

Registry authors can provide custom error messages in their responses to help users and AI agents understand and fix issues quickly.

Error:
You are not authorized to access the item at http://example.com/r/component.
 
Message:
[Unauthorized] Your API key has expired. Renew it at https://example.com/api/renew-key.

Upgrade Guide

Here's the best part: there are no breaking changes for users. Your existing components.json works exactly the same. All your installed components work exactly the same.

For developers, if you're using the programmatic APIs directly, we've deprecated a few functions in favor of better ones:

  • fetchRegistrygetRegistry
  • resolveRegistryTreeresolveRegistryItems
  • Schema moved from shadcn/registry to shadcn/schema package
- import { registryItemSchema } from "shadcn/registry"
+ import { registryItemSchema } from "shadcn/schema"

That's it. Seriously. Everything else just works.