Better Auth Core (TypeScript)
Goals
-
Set up a Better Auth instance with environment variables and data layer wiring.
-
Wire server handlers and a client instance.
-
Use sessions and server-side API methods safely.
-
Keep data-layer choices pluggable (drivers or adapters).
Quick start
-
Install better-auth .
-
Set BETTER_AUTH_SECRET (32+ chars) and BETTER_AUTH_URL .
-
Create auth.ts and export auth .
-
Provide database (driver or adapter) or omit for stateless sessions.
-
Mount a handler (auth.handler or a framework helper).
-
Create a client with createAuthClient .
import { betterAuth } from "better-auth";
export const auth = betterAuth({ database: myDatabaseOrAdapter, // driver or adapter; omit for stateless mode emailAndPassword: { enabled: true }, socialProviders: { github: { clientId: process.env.GITHUB_CLIENT_ID as string, clientSecret: process.env.GITHUB_CLIENT_SECRET as string, }, }, });
Core setup checklist
-
Export the instance as auth (or default export) so helpers find it.
-
Keep BETTER_AUTH_URL in sync with the public base URL.
-
Pass the full base URL to the client if you change the /api/auth base path.
-
Add database migrations before enabling plugins that require tables.
Server API usage
-
Call server endpoints via auth.api.* with { body, headers, query } .
-
Use asResponse: true if you need a Response object.
-
Use returnHeaders: true to access Set-Cookie headers.
import { auth } from "./auth";
const session = await auth.api.getSession({ headers: request.headers, });
const response = await auth.api.signInEmail({ body: { email, password }, asResponse: true, });
Session access
-
Client: authClient.useSession() or authClient.getSession() .
-
Server: auth.api.getSession({ headers }) .
TypeScript tips
-
Infer types with auth.$Infer and authClient.$Infer .
-
Use inferAdditionalFields on the client when you extend the user schema.
References
-
toolchains/platforms/auth/better-auth/better-auth-core/references/setup-database.md
-
toolchains/platforms/auth/better-auth/better-auth-core/references/client-server.md
-
toolchains/platforms/auth/better-auth/better-auth-core/references/typescript.md