File: dynamodb.md | Updated: 11/15/2025
š 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
This is the AWS DynamoDB 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 need a table with a partition key pk and a sort key sk. Your table also needs a global secondary index named GSI1 with GSI1PK as partition key and GSI1SK as sorting key. You can set whatever you want as the table name and the billing method.
You can find the full schema in the table structure section below.
Getting Startedā
Install next-auth and @next-auth/dynamodb-adapter@canary
npm install next-auth @next-auth/dynamodb-adapter@canary
Add this adapter to your pages/api/auth/[...nextauth].js next-auth configuration object.
You need to pass DocumentClient instance from aws-sdk to the adapter. The default table name is next-auth, but you can customise that by passing { tableName: 'your-table-name' } as the second parameter in the adapter.
pages/api/auth/[...nextauth].js
import AWS from "aws-sdk";import NextAuth from "next-auth";import Providers from "next-auth/providers";import { DynamoDBAdapter } from "@next-auth/dynamodb-adapter"AWS.config.update({ accessKeyId: process.env.NEXT_AUTH_AWS_ACCESS_KEY, secretAccessKey: process.env.NEXT_AUTH_AWS_SECRET_KEY, region: process.env.NEXT_AUTH_AWS_REGION,});export default NextAuth({ // Configure one or more authentication providers providers: [ Providers.GitHub({ clientId: process.env.GITHUB_ID, clientSecret: process.env.GITHUB_SECRET, }), Providers.Email({ server: process.env.EMAIL_SERVER, from: process.env.EMAIL_FROM, }), // ...add more providers here ], adapter: DynamoDBAdapter( new AWS.DynamoDB.DocumentClient() ), ...});
(AWS secrets start with NEXT_AUTH_ in order to not conflict with Vercel's reserved environment variables
.)
Schemaā
The table respects the single table design pattern. This has many advantages:
Here is a schema of the table :
