This is self-hosted auth: no third-party dashboard, no per-user pricing, and the server lives in your own tree at src/server/auth.ts, mounted at /api/auth/* through src/app/api/auth/[...all]+api.ts. It ships email/password plus Apple and Google (each enabled only when its keys are set), the screens src/app/(auth)/{sign-in,sign-up,reset} with src/screens/auth/*, and src/hooks/use-auth-redirect.ts (signed-out → /(auth)/sign-in, signed-in inside (auth) → /). It requires backend/api-routes, since it needs somewhere to run. @/lib/auth keeps the same API whichever option you pick - pick Better Auth when you want the user table to be yours.
At a glance
- Runs in Expo Go
- Yes
- Files added
- 24
- npm packages
- 4
- Keys to paste
EXPO_PUBLIC_API_URL- Included in
- Pro
Set it up
bun run setup --auth better-authSetup copies the module in, installs SDK-matched versions and removes the options you did not pick. Then bun run doctor lists every key still missing, with a link to where you get it. The step-by-step guide is in the Better Auth docs.
Other auth options
- Supabase Auth - email+password, Apple (native), Google (OAuth) · session on the storage adapter · Expo Go OK
- Clerk - email+code verification, Apple (native), Google (SSO) · @clerk/expo · Expo Go OK for JS flows
Get it
Better Auth ships in Pro: one payment, lifetime updates. See pricing or browse every module.