Convex Better Auth UI vs Better Auth UI
Both projects give you Better Auth components as source you own. They differ in what they assume about your backend.
Better Auth UI is a general-purpose UI library for Better Auth, built for React (shadcn/ui and HeroUI) and SolidJS. It doesn’t assume a database or a backend, so you connect it to your own Better Auth server.
Convex Better Auth UI (this project) targets Better Auth on Convex with SvelteKit or Next.js. Besides the components, it ships the Convex functions, routes, route protection, server-side preloading and admin tools, wired together.
Quick recommendation
Use Convex Better Auth UI if your app runs on Convex and Better Auth with SvelteKit or Next.js.
Use Better Auth UI if your app uses Better Auth without Convex, or uses a framework this project doesn’t support.
Comparison
| Area | Convex Better Auth UI | Better Auth UI |
|---|---|---|
| Target | Better Auth on Convex | Any Better Auth backend |
| Frameworks | SvelteKit 3 and Next.js 16 | React and SolidJS; its docs show Next.js and TanStack Start |
| Backend code | Convex queries, mutations and the Better Auth HTTP handler are part of the install | You write the backend integration |
| Organizations | Switcher, create, profile, members, email invitations, roles and an accept-invitation route | Organization plugin with switcher, settings, members, invitations, teams and roles |
| Admin | /admin dashboard: search, create, ban, impersonate and delete users, set passwords, manage organizations and members, and a banner while impersonating | A “stop impersonating” item in the user menu |
| Data and reactivity | Components read users, accounts, organizations, invitations and roles through Convex queries and update live | Depends on the data layer you connect |
| Server-side preloading | +layout.server.ts (the base/ssr item)The root layout.tsx preloads the user, accounts, active organization, organization list, invitations and role. | You add server rendering yourself |
| Routes | /signin, /reset-password, /api/auth/[...all], /api/organization/accept-invitation/[invitationId], /device, /admin, /active-organization/[[...all]] and /organization/create | Its organization plugin documents /organization/..., /settings/organizations and /auth/accept-invitation; you connect routes to your app |
| Route protection | hooks.server.tsproxy.ts sends signed-out visitors to /signin | You add it |
| Dialogs on mobile | Profile and organization dialogs are URL-backed, close with the browser back button and handle the iOS back-swipe | Depends on how you assemble the UI |
| Feature setup | Password, OTP, magic link, social providers, emails, API keys, device authorization, organizations and admin are flags in auth.constants.ts plus environment variables | You add each Better Auth plugin to your server and client |
| Installation | jsrepo copies the source into your repository | The shadcn CLI copies the source into your repository |
Why the Convex-specific path matters
Better Auth on Convex has more moving parts than a typical client and server setup. Auth requests go through Convex HTTP actions, server rendering needs the session token, protected routes need framework-specific redirects, and user and organization screens have to stay in sync with Convex data.
Convex Better Auth UI starts you from code where those pieces already work together. You can change any of it.
That helps when you build with an AI coding agent too. Adapting a working auth and organization system to your product is a smaller task for an agent than assembling the Better Auth and Convex integration from scratch.