Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

Supabase with Accelerate

This guides teaches you how to add connection pooling to a PostgreSQL database hosted on Supabase using Prisma Accelerate.

Prisma Accelerate is a connection pooler that keeps your database within its connection limits during traffic spikes and high load. Check out this video demonstrating how it performs in a load test or learn why connection pooling is important.

https://www.youtube.com/embed/cVB7Bv0T16M

To successfully complete this guide, you need a connection string for a PostgreSQL instance hosted on Supabase. It typically looks similar to this:

postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres

If you already have a project using Prisma ORM, you can skip the first two steps and jump ahead to Step 3. Install the Accelerate extension.

Start by installing the Prisma CLI in your project:

title="bun"
bun add prisma@prev --dev
pnpm
pnpm add prisma@prev --save-dev
yarn
yarn add prisma@prev --dev
npm
npm install prisma@prev --save-dev

Then, run the following command to initialize a new project:

bunx --bun prisma init
Bash
pnpm prisma init
Bash
yarn prisma init
Bash
npx prisma init

This will create a new prisma directory with a schema.prisma file and add a .env file with the DATABASE_URL environment variable.

Update the file and set the DATABASE_URL to your Supabase connection string:

.env
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"

Create a prisma.config.ts file to configure Prisma:

prisma.config.ts
import "dotenv/config";
import { defineConfig, env } from "prisma/config";

export default defineConfig({
  schema: "prisma/schema.prisma",
  migrations: {
    path: "prisma/migrations",
  },
  datasource: {
    url: env("DATABASE_URL"),
  },
});

[!NOTE] You'll need to install the dotenv package to load environment variables:

bun

```bash
bun add dotenv
```

pnpm

```bash
pnpm add dotenv
```

yarn

```bash
yarn add dotenv
```

npm

```bash
npm install dotenv
```

This will create a new prisma directory with a schema.prisma file and add a .env file with the DATABASE_URL environment variable.

Update the file and set the DATABASE_URL to your Supabase connection string:

title=".env"
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"

Create a prisma.config.ts file to configure Prisma:

title="prisma.config.ts"
import "dotenv/config";

import { defineConfig, env } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});

Next, run the following command to introspect your database and create your data model:

bunx prisma db pull
Bash
pnpm add @prisma/extension-accelerate
Bash
yarn add @prisma/extension-accelerate
Bash
npm install @prisma/extension-accelerate

This is needed to access Prisma Accelerate's connection pool.

This command reads your database schema and creates new models in your schema.prisma file that match the tables in your database.

Install the Prisma Client extension for Accelerate:

bun add @prisma/extension-accelerate
Bash
pnpm prisma generate
Bash
yarn prisma generate
Bash
npx prisma generate

[!NOTE] In Prisma v7, the --no-engine flag is no longer required when using Prisma Accelerate. Previously, you would run prisma generate --no-engine, but now the standard prisma generate command works for all use cases.

This is needed to access Prisma Accelerate's connection pool.

To set up Accelerate in the Prisma Console, follow these steps:

  1. Log into the Prisma Console.
  2. Select New project
  3. Choose a Name for your project
  4. In the Choose your starting product section, find the Accelerate card and click Get started
  5. In the field for your Database connection string, paste your Supabase connection string
  6. Select the Region that's closest to your database
  7. Click Create project
  8. On the next screen, click Enable Accelerate

Once you went through these steps, you'll be redirected to another page where you need to the click the Generate API key button.

You'll then be shown a new connection URL which enables you to connect to Prisma Accelerate's connection pool. This needs to be set as the new DATABASE_URL in your .env file:

title=".env"
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."

With your Prisma schema in place, generate Prisma Client:

bunx prisma generate

In your application code, you now need to apply the Accelerate extension to your Prisma Client instance:

import { PrismaClient } from "./generated/prisma/client";

import { withAccelerate } from "@prisma/extension-accelerate";

const prisma = new PrismaClient({

  accelerateUrl: process.env.DATABASE_URL,

}).$extends(withAccelerate());

At this point, you can now start sending queries which will be routed through the connection pool to your database.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu