Skip to content

Migrate from Radix UI to Base UI#3

Open
venables wants to merge 6 commits intomainfrom
venables/base-ui
Open

Migrate from Radix UI to Base UI#3
venables wants to merge 6 commits intomainfrom
venables/base-ui

Conversation

@venables
Copy link
Contributor

Summary

  • Replace Radix UI with Base UI via shadcn's base-nova preset, switching the underlying primitive library for all shadcn/ui components
  • Convert asChild to render prop in all consumer components (header, user-menu, theme-picker, index page) — Base UI uses render for component composition instead of Radix's asChild pattern
  • Remove radix-ui dependency (~76 transitive packages removed), replaced by single @base-ui/react package
  • Disable jsx-no-jsx-as-prop lint rule globally since Base UI's render prop inherently requires JSX as a prop value

Test plan

  • vp check passes (format, lint, typecheck)
  • vp test passes (12/12 tests)
  • Verify dropdown menus (theme picker, user menu) open/close correctly
  • Verify button links render as proper <a> / <Link> elements
  • Verify avatar renders with image and fallback in user menu trigger

🤖 Generated with Claude Code

venables and others added 6 commits March 23, 2026 20:59
Memoize inline JSX callbacks with useCallback, wrap context value with
useMemo, replace unsafe `as Theme` cast with a type guard, rename
shadowed variable, extract ProviderButton component, and add inline
disable comments for side-effect font imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace bun with pnpm via vite-plus (vp), consolidate oxlint/oxfmt
config into vite.config.ts, update CI workflow to use setup-vp,
and switch imports to vite-plus module paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace radix-ui primitives with @base-ui/react via shadcn's base-nova
preset. Convert asChild prop pattern to Base UI's render prop across
all consumer components. Disable jsx-no-jsx-as-prop lint rule as it
conflicts with Base UI's idiomatic render prop API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link

vercel bot commented Mar 24, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
tanstack-start Ready Ready Preview, Comment Mar 24, 2026 2:18am

Request Review

@cloudflare-workers-and-pages
Copy link

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
startkit 8fe42fe Commit Preview URL

Branch Preview URL
Mar 24 2026, 02:18 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant