Migrating to 2.0
Migration to 2.0
Section titled “Migration to 2.0”In 2.0, shadcn-admin-kit builds on Base UI instead of Radix UI. This changes almost nothing in the UI (almost the Base UI components aren’t perfectly aligned with their Radix counterparts), but it does change the API of the components, and the way they are composed.
Switching Shadcn/ui to Base UI
Section titled “Switching Shadcn/ui to Base UI”Update your components.json to use the Base UI style:
{ "style": "base-vega"}Then, reinstall shadcn-admin-kit:
npx shadcn@latest add https://marmelab.com/shadcn-admin-kit/r/admin.jsonConfirm to overwrite all the kit’s components.
The components/ui components are now Base UI-first.
Migrating your own components to BaseUI
Section titled “Migrating your own components to BaseUI”Shadcn ships an agent skill to migrate your code from Radix UI to Base UI. It is not a codemod, precisely because you own your component files and have likely edited them. Install it once:
pnpm dlx skills add shadcn/uiThen ask your coding agent, one component at a time:
migrate accordion to base-uiIt works with Claude Code, Cursor, or any agent that supports skills, migrates progressively, and writes a report per component under .migration/.
Shadcn’s Base UI as the Default changelog entry covers this in full, including why they shipped a skill rather than a codemod: you own your component files, and a codemod would drop the variants, classes and props you added to them.
Direct @radix-ui/* packages are no longer dependencies of the kit. If your app
imported them itself, add them to your own package.json.
Known Limitation: Radix Is Still In The Bundle, Through cmdk
Section titled “Known Limitation: Radix Is Still In The Bundle, Through cmdk”command.tsx builds on cmdk, which shadcn/ui has not migrated, and cmdk depends on Radix’s dialog, portal and presence primitives. Any build that includes <AutocompleteInput>, <AutocompleteArrayInput> or another <Command> consumer therefore ships both libraries: cmdk weighs 45 kB minified, 21 kB of which is Radix.
There is nothing to do on your side, and nothing to gain from removing the @radix-ui/* packages by hand: they come in as transitive dependencies of cmdk. It is tracked upstream in shadcn-ui/ui#9191.