Sign-in

Account page

Where people manage their own profile, security, devices and data.
The account page: the overview card with email, two-factor, passkeys, sign-in methods and devices, then the tabs

/account is for signed-in users. It's in your app's layout and uses Better Auth's own user and session APIs (User & Accounts, Session Management). Move it or turn it off with pages.account.

What's on it

An overview card sits on top: avatar, name, email, role, "member since", and a tile for each part of the account's security (email, two-factor, passkeys, sign-in methods, devices) that opens where it's managed.

Below it, the sections are in tabs. The open tab is in the URL (/account?tab=security), so a tab can be linked to and survives a reload.

SectionWhat people can doNeeds
ProfileChange their name and avatar
EmailResend the verification link; change their emailuser.changeEmail.enabled to change it
PasswordChange it, optionally signing out other devices; accounts without one get a link to set oneEmail and password sign-in
PasskeysAdd, rename and remove passkeysPasskeys
Two-factorSet up an authenticator app or email codes; new backup codes; turn it offTwo-factor
Sign-in methodsConnect another provider; disconnect one (never the last)Sign-in providers
Phone numberAdd, change or remove a numberPhone numbers
DevicesSee where they're signed in; sign out of one or all others
OrganizationsTheir organizations, invitations, and creating oneOrganizations
BillingTheir plan, and changing itStripe
API keysCreate and revoke keysAPI keys
Your dataDownload what the auth keeps about them
Delete accountWith their password, a recent sign-in, or an email confirmationuser.deleteUser.enabled

Sections your Better Auth set-up doesn't support are left out.

Changing email

When the current email is verified, the change is approved from the old address first, then verified at the new one. That needs user.changeEmail.enabled and its confirmation email, both in your Better Auth config. See Emails for sending them.

Downloading their data

"Download my data" (GDPR's right of access) gives an account-data.json file with:

  • their user record, with your app's own user fields;
  • their sign-in methods, sessions, passkeys and API keys;
  • whether two-factor is on, and when they were last active;
  • their history from the audit log.

It never includes secrets: no password hashes, tokens, two-factor secrets, backup codes, passkey keys or the API keys themselves. History entries made by an admin say "an admin", without the admin's name, email, IP or browser.

The file covers the auth's tables only. Your app's own data about them is yours to add.

Deleting the account

People confirm with their password, a recent sign-in, or (with user.deleteUser.sendDeleteAccountVerification) a link by email. Turn deletion on in your Better Auth config:

server/auth.config.ts
import { betterAuthEmails } from '@treygrr/nuxt-better-auth-ui/emails'

export default defineServerAuth({
  user: {
    deleteUser: {
      enabled: true,
      sendDeleteAccountVerification: betterAuthEmails.deleteAccount
    }
  }
})