Skip to Content
Delmare Digital

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.

src/lib/auth.ts
import { createSessionHelpers } from '@delmaredigital/payload-better-auth'
import type { User } from '@/payload-types'

export const { getServerSession, getServerUser } = createSessionHelpers<User>({
  idType: 'number',
})
src/app/(frontend)/page.tsx
// no generic needed
const session = await getServerSession(payload, headersList)

Prop

Type

Edit this page on GitHub

On this page