Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc(prisma): add edge compatibility section #9965

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 39 additions & 1 deletion packages/adapter-prisma/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,45 @@ import type { Adapter, AdapterAccount, AdapterAuthenticator, AdapterSession, Ada
* ```
*
* Everything else should be the same.
*
*
* ### Edge runtime compatibility
* At the moment, Prisma is still working on being fully compatible with the Vercel edge runtime. See the issue being tracked [here](https://github.com/prisma/prisma/issues/20560). There are two options to deal with this issue:
* - Use the Prisma's [Accelerate plan](https://pris.ly/d/accelerate)
* - Switch to the `jwt` session strategy. Below is an example:
Comment on lines +162 to +164
Copy link
Member

@ndom91 ndom91 Feb 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* At the moment, Prisma is still working on being fully compatible with the Vercel edge runtime. See the issue being tracked [here](https://github.com/prisma/prisma/issues/20560). There are two options to deal with this issue:
* - Use the Prisma's [Accelerate plan](https://pris.ly/d/accelerate)
* - Switch to the `jwt` session strategy. Below is an example:
* At the moment, Prisma is still working on being fully compatible with the Vercel edge runtime. See the issue being tracked [here](https://github.com/prisma/prisma/issues/20560), and Prisma’s announcement about edge support in early access since 5.9.0 [here](https://github.com/prisma/prisma/releases/tag/5.9.0). There are two options to deal with this issue:
*
* - Use the Prisma’s [Accelerate](https://pris.ly/d/accelerate) feature
* - Switch to the `jwt` session strategy
*
* Using Prisma in and edge runtime with `jwt` session strategy looks like this.

*
* Define the `auth.config.ts` file:
* ```ts title="auth.config.ts"
* export default {
* providers: [
* GitHub,
* Google,
* Facebook,
* Twitter,
* ],
* } satisfies NextAuthConfig
* ```
*
* Import and use the `PrismaAdapter` in the `auth.ts` file:
* ```ts title="auth.ts"
* import NextAuth from "next-auth"
* import authConfig from "auth.config"
* import { PrismaAdapter } from "@auth/prisma-adapter"
*
* export const { handlers, auth, signIn, signOut, unstable_update } = NextAuth({
* adapter: PrismaAdapter(globalThis.prisma),
Comment on lines +182 to +185
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* import { PrismaAdapter } from "@auth/prisma-adapter"
*
* export const { handlers, auth, signIn, signOut, unstable_update } = NextAuth({
* adapter: PrismaAdapter(globalThis.prisma),
* import { PrismaAdapter } from "@auth/prisma-adapter"
* import { PrismaClient } from "@prisma/client"
*
* globalThis.prisma ??= new PrismaClient()
*
* export const { handlers, auth, signIn, signOut, unstable_update } = NextAuth({
* adapter: PrismaAdapter(globalThis.prisma),

* session: { strategy: "jwt" },
* ...authConfig,
* })
* ```
*
* In the middleware file, import the `auth.config` and use it as the configuration for `NextAuth` (note that the `adapter` is not used here to avoid the error):
* ```ts title="middleware.ts"
* import NextAuth from "next-auth"
* import authConfig from "auth.config"
*
* export const middleware = NextAuth(authConfig).auth
* ```
*
* ### Naming Conventions
*
* If mixed snake_case and camelCase column names is an issue for you and/or your underlying database system, we recommend using Prisma's `@map()`([see the documentation here](https://www.prisma.io/docs/concepts/components/prisma-schema/names-in-underlying-database)) feature to change the field names. This won't affect Auth.js, but will allow you to customize the column names to whichever naming convention you wish.
Expand Down
Loading