migrate / nextauth
same user table. same providers. typed functions + hosting on top.
nextauth.js is auth-only — you still need a database, a service layer, and hosting. briven gives you all three, and because both ship Better Auth's table shape, the user migration is the simplest part.
what you're afraid of
will my users have to sign in again?
usually no. briven uses Better Auth, and your nextauth users / accounts / sessions tables already match Better Auth's schema. we copy the rows; OAuth users land on their account on next sign-in without any action.
do my OAuth providers still work?
yes. configure the same Google / GitHub / Apple / etc. client IDs in briven, and existing provider+subject pairs resolve to existing accounts.
what about my getServerSession / useSession code?
replaced with briven's session helpers. shape is similar; types are stricter. light find-and-replace.
the conceptual mapping
your mental model survives the move. left column: what you call it in nextauth / auth.js. right column: where it lives in briven.
| nextauth / auth.js | briven |
|---|---|
| nextauth users table | briven users table (same Better Auth shape) |
| nextauth accounts table | briven accounts table (1:1) |
| nextauth sessions table | briven sessions (1:1) |
| getServerSession(authOptions) | briven session helpers (server components: requireUser()) |
| useSession() hook | briven's useSession (same shape) |
| authOptions.providers config | briven dashboard → providers (UI configuration) |
what the migration actually costs
ranked honestly: what comes for free, what we automate, what stays manual.
- free
data — user/account/session tables copy directly. zero transformation.
- auto
provider config — point briven at your existing OAuth client IDs.
- manual
callsite migration — getServerSession + useSession references rewritten throughout your app.
questions you actually have
- will all my users keep their sessions?
- yes if we copy the sessions table; everyone stays signed in. or we can force one fresh sign-in if you prefer cleaner state.
- do i lose nextauth's middleware patterns?
- briven uses route-level helpers (requireUser, requireSession). the patterns are similar; cleaner, less middleware-magic.
- what about my custom adapter / database?
- briven owns the database — you don't bring one. your custom adapter logic becomes briven function code.
ready to start? no signup needed
leave us your email and we'll reach out within one business day. your nextauth / auth.js stays untouched the entire time.
already got a briven account?
jump straight into the in-product wizard for a more detailed intake form — you can save progress and track status from your dashboard.