Session helpers
Read the current Better Auth session or user in server components and route handlers, with typed helpers you define once.
These helpers read the session from request headers through payload.betterAuth. They return Better Auth's session object, not a Payload document.
getServerSession
getServerSession<TUser>(payload: BasePayload, headers: Headers): Promise<Session<TUser> | null>Returns { user, session } for the current request, or null when there is no session (or Better Auth isn't initialized). Pass your Payload-generated User type to type session.user.
getServerUser
getServerUser<TUser>(payload: BasePayload, headers: Headers): Promise<TUser | null>Shorthand for session.user.
Both are read-only: they pass disableRefresh, because a server component has no response to carry a refreshed cookie. See Sliding sessions.
createSessionHelpers
Creates typed versions of both helpers. Define them once and import them everywhere, with no generics at call sites.
import { createSessionHelpers } from '@delmaredigital/payload-better-auth'
import type { User } from '@/payload-types'
export const { getServerSession, getServerUser } = createSessionHelpers<User>({
idType: 'number',
})// no generic needed
const session = await getServerSession(payload, headersList)Prop
Type

