Skip to content
Migrating from NextAuth.js v4? Read our migration guide.
API reference
@auth/upstash-redis-adapter

@auth/upstash-redis-adapter

Official Upstash Redis adapter for Auth.js / NextAuth.js.

Installation

npm install @upstash/redis @auth/upstash-redis-adapter

UpstashRedisAdapterOptions

This is the interface of the Upstash Redis adapter options.

Properties

accountByUserIdPrefix?

optional accountByUserIdPrefix: string;

The prefix for the accountByUserId key

accountKeyPrefix?

optional accountKeyPrefix: string;

The prefix for the account key

baseKeyPrefix?

optional baseKeyPrefix: string;

The base prefix for your keys

emailKeyPrefix?

optional emailKeyPrefix: string;

The prefix for the emailKey key

sessionByUserIdKeyPrefix?

optional sessionByUserIdKeyPrefix: string;

The prefix for the sessionByUserId key

sessionKeyPrefix?

optional sessionKeyPrefix: string;

The prefix for the sessionKey key

userKeyPrefix?

optional userKeyPrefix: string;

The prefix for the user key

verificationTokenKeyPrefix?

optional verificationTokenKeyPrefix: string;

The prefix for the verificationToken key


defaultOptions

const defaultOptions: {
  accountByUserIdPrefix: "user:account:by-user-id:";
  accountKeyPrefix: "user:account:";
  baseKeyPrefix: "";
  emailKeyPrefix: "user:email:";
  sessionByUserIdKeyPrefix: "user:session:by-user-id:";
  sessionKeyPrefix: "user:session:";
  userKeyPrefix: "user:";
  verificationTokenKeyPrefix: "user:token:";
};

Type declaration

accountByUserIdPrefix

accountByUserIdPrefix: string = "user:account:by-user-id:";

accountKeyPrefix

accountKeyPrefix: string = "user:account:";

baseKeyPrefix

baseKeyPrefix: string = "";

emailKeyPrefix

emailKeyPrefix: string = "user:email:";

sessionByUserIdKeyPrefix

sessionByUserIdKeyPrefix: string = "user:session:by-user-id:";

sessionKeyPrefix

sessionKeyPrefix: string = "user:session:";

userKeyPrefix

userKeyPrefix: string = "user:";

verificationTokenKeyPrefix

verificationTokenKeyPrefix: string = "user:token:";

UpstashRedisAdapter()

UpstashRedisAdapter(client, options): Adapter

Setup

Configure Auth.js to use the Upstash Redis Adapter:

pages/api/auth/[...nextauth].js
import NextAuth from "next-auth"
import GoogleProvider from "next-auth/providers/google"
import { UpstashRedisAdapter } from "@auth/upstash-redis-adapter"
import upstashRedisClient from "@upstash/redis"
 
const redis = upstashRedisClient(
  process.env.UPSTASH_REDIS_URL,
  process.env.UPSTASH_REDIS_TOKEN
)
 
export default NextAuth({
  adapter: UpstashRedisAdapter(redis),
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
})

Advanced usage

Using multiple apps with a single Upstash Redis instance

The Upstash free-tier allows for only one Redis instance. If you have multiple Auth.js connected apps using this instance, you need different key prefixes for every app.

You can change the prefixes by passing an options object as the second argument to the adapter factory function.

The default values for this object are:

const defaultOptions = {
  baseKeyPrefix: "",
  accountKeyPrefix: "user:account:",
  accountByUserIdPrefix: "user:account:by-user-id:",
  emailKeyPrefix: "user:email:",
  sessionKeyPrefix: "user:session:",
  sessionByUserIdKeyPrefix: "user:session:by-user-id:",
  userKeyPrefix: "user:",
  verificationTokenKeyPrefix: "user:token:",
}

Usually changing the baseKeyPrefix should be enough for this scenario, but for more custom setups, you can also change the prefixes of every single key.

export default NextAuth({
  adapter: UpstashRedisAdapter(redis, {baseKeyPrefix: "app2:"})
})

Parameters

ParameterType
clientRedis
optionsUpstashRedisAdapterOptions

Returns

Adapter


hydrateDates()

hydrateDates(json): any

Parameters

ParameterType
jsonobject

Returns

any

Auth.js © Balázs Orbán and Team - 2024