A finales de 2024 estaba tres semanas adentro de un proyecto SaaS para un cliente fintech en Canary Wharf. La app era un dashboard Next.js 14 que sacaba resúmenes financieros para pequeños dueños de negocio. Me había inclinado por Vercel Postgres porque estaba ahí mismo en el dashboard de Vercel y me movía rápido. Seis semanas después estaba cableando manualmente la lógica de autenticación a nivel de fila que Supabase me habría dado gratis el día uno. Eso nos costó aproximadamente dos sprints extras. No ideal.
Así que quiero ser directo sobre esto: Supabase y Vercel Postgres no son herramientas equivalentes peleando por el mismo trabajo. Uno es una plataforma backend completa. El otro es una instancia Postgres administrada con un wrapper de DX agradable. Elegir la incorrecta no quiebra tu app, pero te cobra silenciosamente cada hora que gastes en ella.
Aquí está lo que realmente he aprendido de desplegar ambos en proyectos de clientes en Seahawk Media.Seahawk Media.
---
Qué son realmente (No la versión de marketing)
Vercel Postgres
Vercel Postgres se lanzó en 2023 y está construido sobre Neon, la empresa de Postgres serverless. Eso es importante y a menudo se pasa por alto. Básicamente estás obteniendo una base de datos de Neon con un SDK con sabor Vercel encima y la facturación integrada en tu plan de Vercel.Neon, the serverless Postgres company. That's important and often glossed over. You're basically getting a Neon database with a Vercel-flavoured SDK on top and billing rolled into your Vercel plan.
Lo que obtienes: una base de datos PostgreSQL, connection pooling compatible con edge a través de @vercel/postgres, e integración estrecha con el sistema de variables de entorno de Vercel. Escribes SQL o usas Drizzle/Prisma encima. Eso es más o menos todo.@vercel/postgres, and tight integration with Vercel's environment variable system. You write SQL or use Drizzle/Prisma on top of it. That's more or less it.
Supabase
Supabase es un animal completamente diferente. Postgres está debajo, sí, pero envuelto en una plataforma que incluye autenticación (vía GoTrue), suscripciones en tiempo real (vía canales de Phoenix), almacenamiento de archivos, funciones edge, y una API REST autogenerada basada en PostgREST. Los documentos de arquitectura de Supabase valen la pena leer si quieres entender cómo encajan las piezas. Estás eligiendo un stack de backend con opiniones, no solo una base de datos.Supabase architecture docs are worth reading if you want to understand how the pieces fit. You're choosing an opinionated backend stack, not just a database.
La distinción importa de inmediato al definir el alcance de un proyecto. Con Vercel Postgres sigues construyendo toda tu autenticación, almacenamiento y capas de API. Con Supabase, una parte significativa de eso ya está lista.
---
Experiencia del Desarrollador: Día Uno vs Mes Tres
El día uno con Vercel Postgres es genuinamente rápido. Haces clic en "Create Database" en el panel, copias las variables de entorno, instalas @vercel/postgres, y escribes tu primera consulta en unos ocho minutos. Lo cronometré una vez. Es sin fricciones si ya vives en el ecosistema de Vercel.@vercel/postgres, and write your first query in about eight minutes. I timed it once. It's frictionless if you already live in the Vercel ecosystem.
El día uno con Supabase también es rápido, pero hay más superficie que entender. El panel es denso. Editor de tablas, configuración de autenticación, políticas RLS, buckets de almacenamiento, funciones edge, puede sentirse como mucho cuando solo quieres almacenar tres tablas de datos de usuario.
Aquí está el punto. Para el mes tres, el panorama cambia. Con Vercel Postgres estoy constantemente buscando paquetes de terceros para llenar vacíos: Clerk o NextAuth para autenticación, Uploadthing o S3 para almacenamiento de archivos, Pusher para tiempo real. Cada integración suma una dependencia, una nueva línea en la factura, y un nuevo punto de fallo. Con Supabase, esas cosas ya están ahí y se comunican entre sí de forma nativa.
Ejecuté un proyecto en Seahawk el año pasado, una plataforma comunitaria para una marca de fitness, donde elegimos Supabase específicamente porque necesitábamos actualizaciones de tablas de posiciones en tiempo real y cargas de contenido generado por usuarios. Entregamos esas características en dos semanas. Estoy seguro de que el mismo proyecto en Vercel Postgres habría tomado cuatro semanas, mínimo, porque habríamos estado ensamblando Pusher, S3 y Clerk desde cero.
---
Rendimiento y escalabilidad
Ambos ejecutan Postgres. Así que el rendimiento bruto de consultas para cargas típicas de aplicaciones web no va a ser tu diferenciador. Ambos soportan connection pooling. Ambos manejan millones de filas sin problema si has indexado correctamente.
La verdadera historia de rendimiento trata sobre la arquitectura.
Vercel Postgres, siendo Neon bajo el capó, usa un enfoque nativo sin servidores donde la computación y el almacenamiento están separados. Los arranques en frío son algo real. En los niveles gratuito y hobby, si tu base de datos no ha sido consultada en un tiempo, la primera consulta de una nueva conexión puede tomar 500ms o más. Para una aplicación de panel de control con tráfico predecible, es una nota al pie. Para una aplicación de consumidor con usuarios esporádicos, es un problema visible.
Supabase corre en instancias dedicadas (o conexiones agrupadas vía PgBouncer en planes pagos). No arranca en frío de la misma manera. La guía de connection pooling de Supabase es clara sobre cómo se configura PgBouncer por plan. En el nivel gratuito obtienes 60 conexiones de base de datos. En Pro obtienes 200. Escala tu aplicación más allá de eso y estarás mirando Supavisor (su pooler más nuevo) o una herramienta externa como PgBouncer en modo transaccional.Supabase connection pooling guide is clear on how PgBouncer is configured per plan. On the free tier you get 60 database connections. On Pro you get 200. Scale your app past that and you're looking at Supavisor (their newer pooler) or an external tool like PgBouncer in transaction mode.
Ninguna plataforma va a ser un cuello de botella para una aplicación SaaS típica con menos de 10,000 usuarios activos mensuales. Pasado ese punto, la conversación cambia y de todas formas deberías estar haciendo tus propias pruebas de carga.
---
Precios: Donde se pone interesante
Aquí es donde veo que la gente se deja atrapar.
Precios de Vercel Postgres (a partir de 2025-2026):
- Incluido en Vercel Pro a $20/mes (con límites)
- 256MB de almacenamiento en Pro, luego $0.30/GB adicional
- El compute escala según el uso
Precios de Supabase:
- Tier gratuito: 500MB de base de datos, 1GB de almacenamiento de archivos, 50,000 usuarios activos mensuales para autenticación
- Pro: $25/mes, 8GB de base de datos, 100GB de almacenamiento de archivos, 100,000 MAUs
Si ya estás pagando Vercel Pro, la base de datos se siente "gratis" porque viene incluida. Eso es psicológicamente atractivo. Pero en el momento en que sumas Clerk a $25/mes, Uploadthing y Pusher, tu base de datos "gratis" en realidad te cuesta $80+ mensuales en herramientas asociadas.
Supabase Pro a $25/mes reemplaza la mayoría de esos. Para un proyecto de tamaño medio, Supabase suele ganar en gasto mensual total aunque el rubro de la base de datos se vea más alto.
Una salvedad honesta: si eres un desarrollador solo enviando rutas API puramente serverless sin complejidad de autenticación y sin necesidades de tiempo real, Vercel Postgres es genuinamente más barato y simple. No pagues por características que no usarás.
---
Integración con Next.js: Las Partes Prácticas
Ambas bases de datos funcionan bien con Next.js App Router y Server Actions. Pero la sensación de integración es diferente.
Con Vercel Postgres, el patrón es generalmente:
- Escribe una Server Action o Route Handler
- Importa sql de @vercel/postgres
sqlfrom@vercel/postgres - Ejecuta tu query
- Devuelve datos a tu componente
Simple. Familiar. Funciona de maravilla con Drizzle ORM, llevo usando Drizzle como mi ORM predeterminado durante unos 18 meses y se integra con Vercel Postgres sin complicaciones.
Con Supabase, el patrón típico en Next.js es:
- Crear un cliente de Supabase (lado del servidor mediante @supabase/ssr)
@supabase/ssr) - Usar el cliente para hacer consultas, o llamar a la API REST autogenerada
- Opcionalmente usar RLS para dejar que la base de datos maneje la autorización directamente
El paquete @supabase/ssr tuvo algunos problemas cuando se lanzó por primera vez en 2023. Ahora es significativamente mejor. Configurar el flujo de cookies de autenticación con el middleware de Next.js solía requerir una implementación personalizada; la documentación actual lo maneja de forma limpia. Aun así, requiere más configuración que Vercel Postgres. Ten eso en cuenta desde el principio.@supabase/ssr package had some rough edges when it first launched in 2023. It's significantly better now. Setting up the auth cookie flow with Next.js middleware used to require a custom implementation; the current docs handle it cleanly. Still, it's more setup than Vercel Postgres. Accept that going in.
Una cosa que genuinamente me gusta de Supabase en Next.js: Row Level Security significa que puedo escribir una consulta a la base de datos en una Server Action sin preocuparme de exponer accidentalmente los datos de otro usuario. La lógica de autorización vive en la base de datos, no dispersa por el código de mi aplicación. Eso es una verdadera victoria arquitectónica en cualquier aplicación multiusuario.
---
Cuándo elegir Vercel Postgres
- Estás creando un sitio de contenido simple, un blog, o una herramienta interna sin requisitos de autenticación (o prefieres manejar la autenticación por separado)
- Ya estás profundamente integrado en el ecosistema de Vercel y los precios agrupados te resultan convenientes
- Tu equipo domina SQL y quiere escribir consultas raw o usar Drizzle sin ninguna abstracción innecesaria
- Estás prototipando rápidamente y sabes que reevaluarás la infraestructura en 90 días
---
Cuándo elegir Supabase
Usa esto como una lista de verificación. Si marcas tres o más de estas, elige Supabase:
- Necesitas autenticación de usuarios (correo/contraseña, OAuth social, magic links)
- Estás construyendo funcionalidades en tiempo real: feeds en vivo, edición colaborativa, indicadores de presencia
- Quieres almacenamiento de archivos sin configurar políticas de S3
- Estás construyendo un SaaS multi-tenant donde el aislamiento de datos a nivel de fila es importante
- Esperas moverte rápido y quieres que los problemas del backend ya estén resueltos
- Tu proyecto tiene un stakeholder que no es desarrollador y usará el dashboard para inspeccionar datos
Usé Supabase en una plataforma de listados de propiedades en 2025. El cliente necesitaba que los agentes subieran imágenes, que los compradores guardaran favoritos en tiempo real, y un panel de administración con reportes básicos. Auth, storage, realtime, RLS, todo cubierto. Usamos el editor de tablas incorporado de Supabase para que el cliente manejara los listados directamente. No fue necesario un panel de administración personalizado. Solo eso nos ahorró una semana.
---
La Pregunta del Vendor Lock-In
Vale la pena mencionarlo. Ambas opciones te atan a infraestructura específica, pero de formas diferentes.
Con Vercel Postgres (Neon), tus datos están en una base de datos Neon. Neon es lo suficientemente abierto como para que migrar a una instancia Postgres autohospedada sea manejable. pg_dump, apuntala a tu nuevo host, listo. El lock-in es realmente la capa DX de Vercel, no los datos en sí.pg_dump, point it at your new host, done. The lock-in is really Vercel's DX layer, not the data itself.
Con Supabase, el lock-in de la base de datos es similar (es Postgres, después de todo) pero el lock-in de la plataforma es más significativo. Tu auth es GoTrue. Tu storage es Supabase Storage. Tu realtime es una configuración de canal Phoenix. Migrar todo eso a un stack diferente es más de una semana de trabajo. Es un verdadero trade-off que hay que reconocer. Supabase ofrece autohospedaje vía Docker, consulta la guía de autohospedaje de Supabase, lo cual mitiga la preocupación de vendor en cierta medida.Supabase self-hosting guide, which mitigates the vendor concern somewhat.
Ninguno es un lock-in catastrófico. Pero si estás construyendo algo que necesitarás poseer completamente en tres años, factoriza esto en la conversación.
---
FAQ
¿Supabase es simplemente Firebase pero con Postgres?
Más o menos, pero ese planteamiento le quita importancia al lado de Postgres. Firebase usa Firestore, una base de datos de documentos con su propio modelo de consultas. Supabase te da una base de datos relacional completa con joins, transacciones, claves foráneas y todas las cosas que hacen que valga la pena usar Postgres. La comparación con Firebase es principalmente sobre la filosofía de "todo incluido". Si sabes SQL y estás construyendo un modelo de datos relacional, Supabase es un lugar mucho más cómodo para trabajar que Firebase nunca fue.
¿Puedo usar Supabase sin usar su sistema de autenticación?
Sí. Puedes usar Supabase puramente como una base de datos Postgres administrada e implementar tu propia autenticación con Clerk o NextAuth. Algunos equipos lo hacen. Honestamente, cuestionaría esa decisión, estás pagando por la plataforma sin usar su función más ahorradora de tiempo, pero es una opción arquitectónica válida si tienes opiniones firmes sobre proveedores de autenticación.
¿Vercel Postgres funciona con Prisma?
Sí. El paquete @vercel/postgres funciona con Prisma a través del conector estándar de Prisma para Postgres. Estableces tu DATABASE_URL en tus variables de entorno y Prisma no le importa qué hay detrás. He usado Prisma con Vercel Postgres en dos proyectos. Drizzle es mi preferencia ahora por la seguridad de tipos y la ausencia de un servidor de migraciones separado, pero Prisma funciona perfectamente bien.@vercel/postgres package works with Prisma via the standard Prisma Postgres connector. You set your DATABASE_URL in your env vars and Prisma doesn't care what's behind it. I've used Prisma with Vercel Postgres on two projects. Drizzle is my preference now for the type safety and lack of a separate migration server, but Prisma works perfectly fine.
¿Cuál es mejor para un desarrollador indie en solitario con presupuesto limitado?
El nivel gratuito de Supabase es genuinamente generoso: 500MB de almacenamiento, autenticación incluida, realtime incluido. Para un proyecto secundario o un producto en etapa inicial, es difícil de superar. El nivel gratuito de Vercel Postgres es más limitado y el verdadero valor solo aparece si ya estás en Vercel Pro. Si fuera a comenzar un proyecto personal mañana, elegiría Supabase sin dudarlo.
¿Qué tal Neon directamente, en lugar de Vercel Postgres?
Buena pregunta. Como Vercel Postgres es Neon por debajo, puedes prescindir del intermediario y usar Neon directamente. Obtienes más flexibilidad en los planes, características de branching (el database branching de Neon para entornos de preview es genuinamente brillante), y no estás atado al empaquetado de precios de Vercel. Si estás usando Vercel Postgres principalmente por la base de datos y no por la integración del ecosistema, en serio considera simplemente usar Neon directamente a través de su integración oficial de Next.js.official Next.js integration.
---
El resumen honesto: Vercel Postgres es una excelente base de datos para proyectos nativos de Vercel donde quieres una decisión menos. Supabase es una plataforma backend que incluye una base de datos excelente. Define el alcance de tu proyecto primero, luego elige la herramienta que se adapte a lo que realmente estás construyendo. He desperdiciado sprints yendo en la otra dirección. Probablemente no necesites cometer el mismo error.
