Become a Gold Sponsor

Drizzle <> Supabase

This guide assumes familiarity with:

According to the official website, Supabase is an open source Firebase alternative for building secure and performant Postgres backends with minimal configuration.

Checkout official Supabase + Drizzle docs.

Step 1 - Install packages

npm
yarn
pnpm
bun
npm i drizzle-orm postgres
npm i -D drizzle-kit

Step 2 - Initialize the driver and make a query

index.ts
import { drizzle } from 'drizzle-orm'

const db = drizzle('postgres-js', process.env.DATABASE_URL);

const allUsers = await db.select().from(...);

If you need a synchronous connection, you can use our additional connection API, where you specify a driver connection and pass it to the Drizzle instance.

index.ts
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'

const client = postgres(process.env.DATABASE_URL)
const db = drizzle(client);

const allUsers = await db.select().from(...);

If you decide to use connection pooling via Supabase (described here), and have “Transaction” pool mode enabled, then ensure to turn off prepare, as prepared statements are not supported.

index.ts
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'

// Disable prefetch as it is not supported for "Transaction" pool mode 
const client = postgres(process.env.DATABASE_URL, { prepare: false })
const db = drizzle(client);

const allUsers = await db.select().from(...);

Connect to your database using the Connection Pooler for serverless environments, and the Direct Connection for long-running servers.

What’s next?