Set up serverless Postgres with Neon or Vercel Postgres for Cloudflare Workers/Edge. Includes connection pooling, git-like branching, and Drizzle ORM integration. Use when: setting up edge Postgres, troubleshooting "TCP not supported", connection pool exhausted, SSL config errors, or Node v20 transaction issues.
View on GitHubSelect agents to install to:
npx add-skill https://github.com/jezweb/claude-skills/blob/main/skills/neon-vercel-postgres/SKILL.md -a claude-code --skill neon-vercel-postgresInstallation paths:
.claude/skills/neon-vercel-postgres/# Neon & Vercel Serverless Postgres
**Status**: Production Ready
**Last Updated**: 2026-01-21
**Dependencies**: None
**Latest Versions**: `@neondatabase/serverless@1.0.2`, `@vercel/postgres@0.10.0`, `drizzle-orm@0.45.1`, `drizzle-kit@0.31.8`, `neonctl@2.19.0`
---
## Quick Start (5 Minutes)
### 1. Choose Your Platform
**Option A: Neon Direct** (multi-cloud, Cloudflare Workers, any serverless)
```bash
npm install @neondatabase/serverless
```
**Option B: Vercel Postgres** (Vercel-only, zero-config on Vercel)
```bash
npm install @vercel/postgres
```
**Note**: Both use the same Neon backend. Vercel Postgres is Neon with Vercel-specific environment setup.
**Why this matters:**
- Neon direct gives you multi-cloud flexibility and access to branching API
- Vercel Postgres gives you zero-config on Vercel with automatic environment variables
- Both are HTTP-based (no TCP), perfect for serverless/edge environments
### 2. Get Your Connection String
**For Neon Direct:**
```bash
# Sign up at https://neon.tech
# Create a project → Get connection string
# Format: postgresql://user:password@ep-xyz.region.aws.neon.tech/dbname?sslmode=require
```
**For Vercel Postgres:**
```bash
# In your Vercel project
vercel postgres create
vercel env pull .env.local # Automatically creates POSTGRES_URL and other vars
```
**CRITICAL:**
- Use **pooled connection string** for serverless (ends with `-pooler.region.aws.neon.tech`)
- Non-pooled connections will exhaust quickly in serverless environments
- Always include `?sslmode=require` parameter
### 3. Query Your Database
**Neon Direct (Cloudflare Workers, Vercel Edge, Node.js):**
```typescript
import { neon } from '@neondatabase/serverless';
const sql = neon(process.env.DATABASE_URL!);
// Simple query
const users = await sql`SELECT * FROM users WHERE id = ${userId}`;
// Transactions
const result = await sql.transaction([
sql`INSERT INTO users (name) VALUES (${name})`,
sql`SELECT * FROM users WHERE name = ${name}`
]);
```
**Verce