shadcn/ui July 2026 Update: Base UI Default and New Chat Components
shadcn/ui July 2026 Update: Base UI Default and New Chat Components
shadcn/ui now defaults to Base UI
Base UI is now the default component library for new shadcn/ui projects, replacing Radix as the primary choice during initialization. This shift follows a period of community adoption where projects created via shadcn/create picked Base UI over Radix at a 2-to-1 ratio.
Key Changes for Users
- Initialization: Running
npx shadcn initnow selects Base UI by default. - Documentation: Component pages now default to the Base UI tab, though Radix documentation remains accessible with one click.
- CLI Defaults:
shadcn/createnow presents Base UI as the first option.
Support for Radix
Radix is not deprecated. shadcn/ui continues to support Radix, and new components will be shipped for both libraries unless a component is exclusive to Base UI. Users with existing production apps on Radix are advised that migration is not required. For those who prefer Radix for new projects, the -b radix flag can be used during shadcn init to maintain the previous default.
AI-Driven Migration Path
Rather than providing a traditional codemod, shadcn/ui has introduced a "skill" for coding agents (such as Claude Code or Cursor) to handle migrations. This approach is designed to preserve custom variants, classes, and props that a mechanical codemod would typically overwrite.
The migration process produces:
- Verified Code: Typechecked and built code before reporting success.
- Detailed Reports: A
.migration/directory containing reports for each component, detailing what changed, what was left alone, and a manual verification checklist. - Atomic Git History: One commit per component on a separate branch to allow for easy rollbacks.
New Chat Interface Components
shadcn/ui has released a suite of components specifically designed for streaming chat experiences, focusing on the conversation layer and interaction logic.
Core Chat Primitives
- MessageScroller: A scroll container that manages complex behaviors including anchored turns, streamed replies, saved thread restoration, and visibility tracking. This is also available as an unstyled headless component in the new
@shadcn/reactpackage. - Message: Handles the layout of conversation rows, including avatars, alignment, and grouped messages.
- Bubble: Renders the message surface with support for reactions, links, and collapsible content.
- Attachment: Manages the rendering of files and images with metadata and upload states.
- Marker: Used for system notes, date breaks, and streaming state indicators.
Chat-Specific CSS Utilities
Two new utilities have been added to shadcn/tailwind.css:
scroll-fade: Adds scroll-aware edge fades to containers to hint at additional content.shimmer: Provides a text shimmer effect for live status indicators (e.g., "Thinking...").
GitHub Repositories as Registries
Any public GitHub repository can now be turned into a shadcn registry, allowing developers to distribute not only components but also hooks, utilities, design tokens, and CI workflows.
By adding a registry.json file to the root of a repository, users can install items directly via the shadcn CLI. For example, a team can distribute project conventions (like .editorconfig or AGENTS.md) using the command npx shadcn add https://github.com/acme/toolkit/project-conventions.
Additional Updates and Tooling
The shadcn eject Command
To reduce dependency on the shadcn package, the shadcn eject command inlines the shared shadcn/tailwind.css (which contains custom variants like data-open:) directly into the project's global CSS file and removes the package dependency.
Rhea Style
Rhea is a new, compact design style based on Luma. It provides higher information density with smaller spacing and tighter controls, specifically tailored for focused product interfaces without altering the underlying Tailwind spacing scale.
@shadcn/react Package
This new package provides unstyled, headless React components. The first primitive released is the message-scroller, allowing developers to implement complex scroll behavior without being locked into a specific visual style.
Community Perspectives
The transition to Base UI and the move toward AI-assisted migrations have sparked discussion among developers:
"Moving away from codemods and towards LLMs doing migration work is an interesting development. Even if they’re more deterministic, I wonder if the days of codemods are numbered."
Some users expressed concerns regarding the "div-heavy" nature of these libraries, noting that native HTML elements like <details> and <summary> could often replace complex div structures. Others questioned the trade-off of the copy-paste approach versus traditional UI libraries like Mantine, noting that the former requires AI agents for updates that would otherwise be a simple version bump.