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