šŸ“„ next-auth/v3/adapters/fauna

File: fauna.md | Updated: 11/15/2025

Source: https://next-auth.js.org/v3/adapters/fauna

Skip to main content

šŸŽ‰ NextAuth.js is now part of Better Auth !

This is documentation for NextAuth.js v3, which is no longer actively maintained.

For up-to-date documentation, see the **latest version ** (v4).

Version: v3

On this page

FaunaDB

This is the Fauna Adapter for next-auth . This package can only be used in conjunction with the primary next-auth package. It is not a standalone package.

You can find the Fauna schema and seed information in the docs at next-auth.js.org/adapters/fauna .

Getting Started​


  1. Install next-auth and @next-auth/fauna-adapter@canary

    npm install next-auth @next-auth/fauna-adapter@canary

  2. Add this adapter to your pages/api/auth/[...nextauth].js next-auth configuration object.

pages/api/auth/[...nextauth].js

import NextAuth from "next-auth"import Providers from "next-auth/providers"import * as Fauna from "faunadb"import { FaunaAdapter } from "@next-auth/fauna-adapter"const client = new Fauna.Client({  secret: "secret",  scheme: "http",  domain: "localhost",  port: 8443,})// For more information on each option (and a full list of options) go to// https://next-auth.js.org/configuration/optionsexport default NextAuth({  // https://providers.authjs.dev  providers: [    Providers.Google({      clientId: process.env.GOOGLE_ID,      clientSecret: process.env.GOOGLE_SECRET,    }),  ],  adapter: FaunaAdapter({ faunaClient: client})  ...})

Schema​


CreateCollection({ name: "accounts" })CreateCollection({ name: "sessions" })CreateCollection({ name: "users" })CreateCollection({ name: "verification_requests" })CreateIndex({  name: "account_by_provider_account_id",  source: Collection("accounts"),  unique: true,  terms: [    { field: ["data", "providerId"] },    { field: ["data", "providerAccountId"] },  ],})CreateIndex({  name: "session_by_token",  source: Collection("sessions"),  unique: true,  terms: [{ field: ["data", "sessionToken"] }],})CreateIndex({  name: "user_by_email",  source: Collection("users"),  unique: true,  terms: [{ field: ["data", "email"] }],})CreateIndex({  name: "verification_request_by_token",  source: Collection("verification_requests"),  unique: true,  terms: [{ field: ["data", "token"] }, { field: ["data", "identifier"] }],})