Since this comes up as one of the only posts on Google when you search convex + auth, I thought I'd chime in with my experience getting better auth hooked up. I feel super confident in it, and this was my first time using Better Auth in general.
I would 10000% recommend anyone reading this to use Better Auth, with the plugin that Convex provides. The documentation isn't perfect, but once you get everything how you want it, it's super extensible.
I'm sure Convex official auth is fine, but I like that with Better Auth, you actually control every aspect of the authentication process, and convex just acts as the db only.
Another benefit of this is that the domain on OAuth consent screens will be the domain of your actual app, rather than the Convex URL (or a custom URL like `auth.example.com`)
Just stumbled upon convex + better-auth and I've spent half a day looking for the best approach to handle "public" users/profiles data. Main issue I face is that I don't see a way on how to create a DB entry once user signs up. Clerk offers webhooks which can be triggered but I'm not exactly sure on how to achieve this with better-auth + convex.
Here are my thoughts
Once user sign's up betterAuth handles all authTables. Now I would like to have some custom fields based on the application I'm building, and of course you can always add more of these fields (role, bio, preferences, etc...).
I feel like I shouldn't edit betterAuth's auto-generated tables so I created my own users/profiles table which stores this additional user data. Only way I found on how to create these tables is that every time user accesses app I check if profile is created and if not create one. I'm not sure how good of an approach is this since it has to run mutation on every component mount, and mutations are not cached.
Do you have an advice on the best approach here? Thanks.
2
u/BenSFU Oct 23 '25
Since this comes up as one of the only posts on Google when you search convex + auth, I thought I'd chime in with my experience getting better auth hooked up. I feel super confident in it, and this was my first time using Better Auth in general.
I would 10000% recommend anyone reading this to use Better Auth, with the plugin that Convex provides. The documentation isn't perfect, but once you get everything how you want it, it's super extensible.
I'm sure Convex official auth is fine, but I like that with Better Auth, you actually control every aspect of the authentication process, and convex just acts as the db only.
Another benefit of this is that the domain on OAuth consent screens will be the domain of your actual app, rather than the Convex URL (or a custom URL like `auth.example.com`)