Web Dev Tools

Your Stack — Node + Next.js + Postgres

A read on the Node + Next.js + React + TypeScript + Postgres + pg-boss stack as of May 2026.

This is the closest thing to a "default" full-stack JavaScript stack in 2026. It's not exciting, and that's a feature.

The components

LayerChoiceNotes
RuntimeNode 24 LTS (or Bun)LTS Node is still the safe default; Bun is production-ready for many workloads.
FrameworkNext.js 16 (App Router)Server Components stable; Turbopack default in dev; partial prerendering generally available.
UIReact 19use, server actions, async transitions, document metadata APIs.
Languagemodern TypeScript--isolatedDeclarations, using / disposable resources, regex types.
DBPostgres 17/18Self-hosted, Neon, Supabase, RDS, or Railway.
Job queuepg-bossPostgres-backed queue, no Redis required.
Common addsDrizzle / Prisma, Tailwind, shadcn/ui, NextAuth or Better Auth, Resend, Stripe, Sentry, Vercel/Cloudflare/Fly.

Why it's the default

  • Talent + AI — every model, every Stack Overflow answer, every starter assumes some version of this. New hires are productive on day 1.
  • Library coverage — the React ecosystem still has more high-quality components, patterns, and integrations than any other.
  • Hosting — Vercel, Netlify, Cloudflare, Fly, Render, Railway, AWS Amplify all support Next.js as a first-class target.
  • Postgres — boring, durable, well-understood, scales further than most apps will need.
  • pg-boss — using your existing DB as the queue removes Redis from the stack. You trade some throughput for one fewer service to operate.

Where it strains

  • Cold starts on serverless for big apps — partly addressed by partial prerendering, but still a tax on Lambda-style deploys.
  • Bundle size — easy to bloat the client with ill-considered dependencies; Server Components help but aren't a silver bullet.
  • App Router complexity — server vs client components, request memoization, cache directives, route handlers, server actions — there is a real learning curve.
  • pg-boss limits — fine up to a few thousand jobs/minute; beyond that consider BullMQ + Redis, Inngest, or Trigger.dev.

What's worth adding

Likely-good additions to this exact stack:

  • Drizzle ORM — closer to SQL than Prisma, very small runtime, edge-compatible.
  • Better Auth — flexible, plugin-based auth that pairs well with your own DB.
  • shadcn/ui + Tailwind v4 — copy-paste components on top of Radix primitives.
  • Zod or Valibot — runtime validation for inputs, env vars, and API boundaries.
  • TanStack Query — even with Server Components you'll want this on client-heavy screens.
  • Sentry or Highlight — error tracking; do this before you launch.
  • PostHog or Plausible — product analytics or simple privacy-respecting analytics.
  • Resend + React Email — transactional email with components.
  • UploadThing or direct R2/S3 presigned URLs — file uploads.

What you can probably remove

If you're honest about your scale:

  • A separate Redis instance (use pg-boss + LISTEN/NOTIFY + a Postgres-backed cache like pg_kvstore or lru-cache for hot paths).
  • Most "BaaS" services if you're already running Postgres.
  • Cloudinary or similar — direct R2 + a small image transform Worker is usually enough.

Worth dabbling with

If your goal is to broaden, not switch:

On this page