Switch to Better Auth
How to change the authentication provider to Better Auth.
Better Auth is a comprehensive, open-source authentication framework for TypeScript. It is designed to be framework agnostic, but integrates well with Next.js and provides a lot of features out of the box.
1. Swap out the auth
package dependencies
Uninstall the existing Clerk dependencies from the auth
package…
…and install the Better Auth dependencies:
2. Update your environment variables
Generate a secret with the following command to add it to the .env.local
file in each Next.js application (app
, web
and api
):
This will add a BETTER_AUTH_SECRET
environment variable to the .env.local
file.
3. Setup the server and client auth
Update the auth
package files with the following code:
Read more in the Better Auth installation guide.
4. Update the auth components
Update both the sign-in.tsx
and sign-up.tsx
components in the auth
package to use the signIn
and signUp
functions from the client
file.
You can use different sign-in methods like social providers, phone, username etc. Read more about Better Auth basic usage.
5. Generate Prisma Models
From the root folder, generate Prisma models for Better Auth by running the following command:
You may have to comment out the server-only
directive in packages/database/index.ts
temporarily. Ensure you have environment variables set.
Best practice is to have a better-auth.ts
file, but we’re just specifying the existing server.ts
left over from Clerk here.
6. Update the Provider file
Better Auth has no concept of a Provider as a higher-order component, so you can either remove it entirely or just replace it with a stub, like so:
7. Change Middleware
Change the middleware in the auth
package to the following:
8. Update your apps
From here, you’ll need to replace any remaining Clerk implementations in your apps with Better Auth.
Here is some inspiration:
For using organization, check organization plugin and more from the Better Auth documentation.