Vercel Postgres Options: What to Use Since the Switch

Vercel doesn't really host your database - it connects you to someone who does. What happened to Vercel Postgres, every real option for a database behind a Vercel app, and the pooled-connection detail that decides whether any of them work.

TL;DR
Vercel Postgres was Neon all along and is now explicitly Neon via the Vercel Marketplace. Any Postgres works with Vercel apps - the real requirements are a pooled connection string (serverless functions exhaust direct connections) and low latency to your functions' region. Marketplace billing convenience is the only Vercel-specific part.
What you’ll learn
  • What actually happened to Vercel Postgres
  • Why serverless functions exhaust database connections, and the pooling fix
  • Every real option: marketplace Neon, Supabase, external managed Postgres
  • How to place the database region so queries stay fast
  • The decision rules that pick an option in minutes

Vercel does not host databases. It hosts your functions and static assets superbly, and for everything stateful it connects you to someone else. 'Vercel Postgres' was Neon's infrastructure under a Vercel label from day one, and the pretence has since been dropped: Postgres on Vercel now lives in the Vercel Marketplace, provisioned from Neon directly and billed through your Vercel invoice. If you searched for Vercel Postgres hoping to add a database to a Next.js app, the real question is the one this article answers: which Postgres should sit behind a Vercel app, and what does Vercel-shaped traffic demand of it?

Where the database actually lives in a Vercel deploymentVercel hosts functions and static assets; the Postgres database is always an external service reached over a pooled connectionVercel hosts your app. Someone else hosts your database.Vercelfunctions + static assetsConnection poolerone string changePostgresNeon / Supabase / managedThe 'Vercel Postgres' button was always a marketplace door to Neon.Any Postgres with a pooled connection string works identically.
The architecture every option shares: Vercel runs the app, an external Postgres holds the data, and a pooled connection string joins them.

The one requirement that is not optional: pooling

Traditional servers open a handful of long-lived database connections. Serverless inverts that: every function instance may open its own connection, and a burst of traffic spawns hundreds of instances in seconds. Postgres tops out at a configured connection limit - often 20 to 100 on hosted plans - so a burst converts directly into

bash
FATAL: sorry, too many clients already
errors at exactly the moment you have users.

Why serverless functions exhaust database connectionsA traffic burst spawns many function instances, each opening its own database connection; a pooler multiplexes them into a fewThe serverless connection problemEvery function instance opens its own connection. Bursts spawn instances.10 requests10 instances100 requests100 instancesBurstconnection errorsPoolerPgBouncer-stylePostgres~20 real connections
Function instances multiply with traffic; a pooler multiplexes their short-lived connections onto a few real ones.

The fix is a connection pooler between the functions and the database. Every serious option provides one - the only thing you must do is use the pooled connection string, not the direct one, and keep the client-side pool tiny:

ts
// Use the POOLED string (port 6543 / -pooler suffix, provider-dependent)
import { Pool } from "pg";

const pool = new Pool({
  connectionString: process.env.DATABASE_URL, // pooled URL
  max: 1, // per function instance - the real pooling happens server-side
});

Option 1: Neon through the marketplace

The path of least resistance. Provisioning from Vercel's dashboard gives you a Neon database with the pooled string pre-wired into your project's environment variables, billing folded into Vercel, and preview-branch databases that pair naturally with Vercel preview deployments. The free tier covers prototypes comfortably. The economics are Neon's usage-based model - excellent while compute suspends between visits, and worth re-checking once traffic becomes steady, which we unpacked in our Neon pricing breakdown.

Option 2: Supabase

Supabase is the right call when the database was never the whole ask - when you also want auth, file storage and realtime subscriptions without building them. It connects to Vercel like any external Postgres (Supabase's pooler is built in; use the pooled string) and has its own Vercel integration for environment wiring. The $25 Pro floor and per-project compute meters are the trade - see our Supabase pricing analysis for where that lands at scale.

Option 3: external managed Postgres

Nothing about Vercel requires your database to come from its marketplace. A managed Postgres from anywhere - full disclosure, ours included - works identically: set the pooled connection string in Vercel's environment variables and deploy. What you gain is independence (your data host is not coupled to your app host's pricing decisions) and, with flat-priced providers, a bill that does not move with invocation counts. Swyftstack is $19/month flat with pooling and backups included; RDS and DigitalOcean play the same role with their own pricing shapes, compared in our PostgreSQL hosting guide.

The options side by side

Option

Pricing shape

Pooling

Best when

Neon (marketplace)

Usage-based, free tier

Built in, pre-wired

Prototypes, preview-per-PR workflows, spiky traffic

Supabase

$25/mo floor + meters

Built in (use pooled string)

You want auth + storage + realtime too

Swyftstack

$19/mo flat

Included

Steady production traffic, predictable bill

DigitalOcean

$15/mo node

Included (PgBouncer)

You already run infrastructure on DO

AWS RDS

5 meters

Via RDS Proxy (extra cost)

The rest of your stack is AWS

Wiring it up: the details that bite

Whichever option you pick, the setup is the same three steps: set the pooled connection string as an environment variable in the Vercel project, reference it from your database client, and deploy. Two details reliably trip people up. First, migrations need the direct string, not the pooled one - schema-changing statements and advisory locks do not play well through a transaction-mode pooler, which is why Prisma's convention is two variables:

bash
# .env - the split every provider recommends
DATABASE_URL="postgres://...-pooler.../<db>"   # runtime queries (pooled)
DIRECT_URL="postgres://.../<db>"               # migrations only (direct)

Second, remember that environment variables are per-environment on Vercel: production, preview and development each get their own values. Pointing preview deployments at the production database is the classic self-inflicted outage - give previews their own database or branch, which is exactly the workflow Neon's branching and Supabase's projects are built around.

Latency: put the database where the functions run

Vercel functions execute in a region (or several); every query crosses the distance between that region and your database. A function in Washington querying a database in Frankfurt adds ~90 ms to every round trip, and a typical page render makes several. Pick the database region to match your functions' primary region - it matters more than any performance feature on any provider's pricing page. If you use Vercel's edge runtime for latency-critical routes, keep those routes database-free or cache aggressively; the edge is global, your database is not.

What marketplace billing changes (and what it doesn't)

The marketplace's genuine convenience is consolidation: one invoice, one dashboard, environment variables injected automatically, and usage visible next to your Vercel spend. What it does not change is the underlying pricing - marketplace Neon bills at Neon's rates, so every observation in our pricing breakdown applies unchanged. It also does not change ownership questions: your data lives with the provider, and if you ever want to leave the marketplace arrangement, a standard pg_dump moves the database anywhere in an afternoon. Treat the marketplace as a checkout flow, not a platform commitment.

Choosing in three questions

  • Is this a prototype? Marketplace Neon, free tier, done. Revisit when traffic is real.

  • Do you need auth and file storage too? Supabase, and accept the platform gravity.

  • Is traffic steady and the bill worth predicting? External flat-priced managed Postgres, same region as your functions.

Whichever you choose, the exit cost is one environment variable and one dump-and-restore. That is the quiet advantage of the marketplace era: since Vercel stopped pretending to host your database, your database decision stopped being a Vercel decision - it is an ordinary Postgres hosting decision, made with ordinary leverage, and reversible the ordinary way.

Prices quoted here were checked in July 2026. Vendors change them; treat the structure as the durable part and re-check the current numbers before you budget.

Summary
There is no such thing as a database hosted by Vercel - only databases connected to Vercel. That is good news: it means the decision is a standard Postgres hosting decision plus two serverless-specific requirements, a pooled connection string and a sensible region. Marketplace Neon is the lowest-friction path; Supabase adds a backend suite; an external managed Postgres gives you a flat bill and no coupling between app host and data host.

Frequently asked questions

Does Vercel host databases?

Not itself - database offerings on Vercel are marketplace integrations (Neon for Postgres) billed through Vercel. Any external Postgres with a pooled connection string works identically.

What happened to Vercel Postgres?

It was Neon infrastructure under a Vercel label from the start. Vercel moved it to the marketplace model, where you now provision Neon directly - existing databases were transitioned to Neon accounts.

Why does my Vercel app exhaust database connections?

Each serverless function invocation can open its own connection, and traffic bursts spawn many instances at once. Use a pooled connection string (PgBouncer-style) rather than a direct one, and keep pool settings modest in the client.

Do I have to use Neon with Vercel?

No. The marketplace makes Neon convenient, but Supabase, Swyftstack, RDS or any reachable Postgres works - pooling and region proximity are what matter, not the vendor.

Share this articleXLinkedInHacker News

Related articles

PostgreSQL Hosting: The Best Providers in 2026

There is no best Postgres host - there is a best host for your workload shape. Serverless, all-in-one backends, flat-priced managed Postgres, the…

Read more
Free PostgreSQL Hosting: Every Real Option in 2026

Free Postgres hosting exists, but every provider caps a different thing: storage, compute, connections, or how long the database lives. Here is every…

Read more
Neon Pricing Explained: What Serverless Postgres Costs

Neon has no plan fee on its paid tiers - the whole bill is four meters: compute CU-hours, storage, branches and egress. Here is how each meter works,…

Read more

All posts