Tu deploy termina, el sitio va en vivo, y tres semanas después tu equipo de contenido te envía un mensaje: las cargas de imágenes se están agotando, las categorías anidadas no se guardan, y la respuesta de la API está subiendo más allá de 800ms. He reconstruido este escenario con Directus, Payload, y Supabase en proyectos de producción en los últimos dos años — los mismos síntomas, diferentes causas raíz cada vez. La respuesta depende de cosas que las landing pages omiten: cómo tus editores estructuran los flujos de trabajo, cómo se ve realmente tu gráfico relacional, y si todavía estás usando este stack cuando se cierre la Serie A. Aquí está el framework que determina cuál backend sobrevive tus próximos seis sprints.

Esto no es una comparación de lista de características. Es el marco de decisión que realmente uso cuando defino el alcance de proyectos en Social Animal, refinado a través de docenas de builds headless. Al final, sabrás cuál herramienta se ajusta a tu situación específica sin dudar.

Tabla de Contenidos

Directus vs Payload vs Supabase: Qué Backend de CMS Usar en 2026

La Identidad Central de Cada Herramienta

Antes de profundizar en detalles, necesitas entender qué es realmente cada herramienta en su núcleo, porque la superposición en conjuntos de características puede ser engañosa.

Directus es un CMS headless de base de datos primero. Envuelve una base de datos SQL existente (Postgres, MySQL, SQLite, MS SQL, MariaDB, CockroachDB) con una API auto-generada y un panel de administración pulido. Diseñas tu base de datos, Directus la introspecciona y te da una interfaz de usuario. Está escrito en TypeScript y se ejecuta en Node.js.

Payload es un CMS headless code-first construido sobre Next.js (a partir de Payload 3.0). Defines colecciones y campos en archivos de configuración TypeScript, y Payload genera el esquema de la base de datos, la interfaz de administrador, los puntos finales de la API y los tipos de TypeScript a partir de esa configuración. Usa MongoDB o Postgres como su capa de base de datos.

Supabase es una alternativa de código abierto a Firebase — un backend-as-a-service construido sobre Postgres. Realmente no es un CMS en absoluto. Es una plataforma de base de datos con autenticación, almacenamiento, suscripciones en tiempo real y funciones edge. Pero los equipos la usan como backend de CMS constantemente, es por eso que sigue apareciendo en estas comparaciones.

Esta distinción importa más que cualquier otra cosa en este artículo. Directus y Payload son sistemas de gestión de contenido construidos específicamente para este propósito. Supabase es un backend de propósito general que puedes moldear en un sistema de gestión de contenido con suficiente esfuerzo.

Arquitectura y Modelado de Datos Comparados

Directus: Base de Datos Primero

Directus no posee tu esquema. Puedes apuntarlo a una base de datos existente y generará un panel de administración automáticamente. Esto es genuinamente poderoso cuando trabajas con sistemas heredados o cuando tu modelo de datos sirve múltiples aplicaciones más allá de la gestión de contenido.

El modelado de relaciones en Directus es sólido. M2M, M2O, O2M, e incluso traducciones se manejan a través de la interfaz de usuario. Pero hay un inconveniente: porque Directus introspecciona la base de datos en lugar de generarla desde código, tus cambios de esquema suceden en dos lugares — migraciones y el panel de administración de Directus. Esto puede volverse desordenado en entornos de equipo si no eres disciplinado.

# Snapshot de esquema de Directus (simplificado)
collections:
  - collection: articles
    fields:
      - field: title
        type: string
        interface: input
      - field: content
        type: text
        interface: input-rich-text-md
      - field: author
        type: uuid
        interface: select-dropdown-m2o
        related_collection: authors

Payload: Code-First

Payload 3.0 (la versión actual en 2026) se ejecuta dentro de Next.js como un plugin. Tus colecciones se definen en TypeScript:

import { CollectionConfig } from 'payload'

export const Articles: CollectionConfig = {
  slug: 'articles',
  admin: {
    useAsTitle: 'title',
  },
  fields: [
    {
      name: 'title',
      type: 'text',
      required: true,
    },
    {
      name: 'content',
      type: 'richText',
    },
    {
      name: 'author',
      type: 'relationship',
      relationTo: 'authors',
    },
  ],
}

Este enfoque code-first significa que tu esquema vive en control de versiones. Obtienes tipos TypeScript auto-generados desde tu configuración. Es la mejor DX de los tres para equipos con mucho TypeScript. ¿El inconveniente? Los no desarrolladores no pueden modificar el modelo de datos sin un cambio de código.

Supabase: SQL-First

Con Supabase, estás escribiendo SQL. Postgres crudo. Defines tus tablas, configuras políticas de seguridad a nivel de fila, y luego interactúas a través de la API REST auto-generada (PostgREST) o el cliente JavaScript.

CREATE TABLE articles (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  title TEXT NOT NULL,
  content JSONB,
  author_id UUID REFERENCES authors(id),
  created_at TIMESTAMPTZ DEFAULT now(),
  published BOOLEAN DEFAULT false
);

-- Row Level Security
ALTER TABLE articles ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Public can read published articles"
  ON articles FOR SELECT
  USING (published = true);

Obtienes máxima flexibilidad pero cero interfaz de gestión de contenido lista para usar. Construirás un administrador personalizado, usarás una herramienta de terceros, o conectarás algo como Directus en la misma instancia de Postgres (sí, la gente realmente lo hace).

Experiencia de Edición de Contenido

Aquí es donde la distinción CMS-vs-not-a-CMS golpea más fuerte.

Característica Directus Payload Supabase
Interfaz de Administrador Integrada ✅ Pulida, personalizable ✅ Nativa de Next.js, muy buena ❌ Solo editor de tabla
Editor de Texto Enriquecido ✅ WYSIWYG + Markdown ✅ Basado en Lexical (excelente) ❌ Ninguno
Biblioteca de Medios ✅ Completa ✅ Completa ⚠️ Buckets de almacenamiento (sin UI de biblioteca)
Vista Previa de Contenido ✅ Vía módulos personalizados ✅ Vista previa activa nativa ❌ Construye la tuya
Localización ✅ Sistema de traducción integrado ✅ Localización a nivel de campo ❌ Implementación manual
Control de Versiones de Contenido ✅ Revisiones integradas ✅ Borradores + versiones ❌ Construye el tuyo
Flujo de Trabajo / Publicación ✅ Sistema de flujos ✅ Estados de borrador/publicación ❌ Lógica personalizada necesaria
Amigable con no desarrolladores ✅ Muy ✅ Sí ❌ Para nada

Si tu proyecto involucra editores de contenido — personas que escriben publicaciones de blog, administran catálogos de productos, actualizan landing pages — Supabase es la herramienta equivocada. Punto. Pasarías semanas construyendo lo que Directus y Payload te dan en el primer día.

La experiencia del editor de Payload ha mejorado notablemente desde 3.0. El editor de texto enriquecido basado en Lexical es flexible, la función de vista previa activa funciona beautifully con frontends de Next.js, y el panel de administración se siente nativo porque literalmente se ejecuta dentro de tu aplicación Next.js.

Directus tiene el panel de administración más maduro de los tres. Ha sido refinado durante años, y el sistema de visualización/interfaz personalizado significa que puedes construir flujos de trabajo editorial complejos sin tocar código frontend. Para organizaciones con mucho contenido, esto importa mucho.

Directus vs Payload vs Supabase: Qué Backend de CMS Usar en 2026 - arquitectura

Experiencia del Desarrollador y Diseño de API

Estilos de API

Directus te da REST y GraphQL listos para usar, además de un SDK de JavaScript. La API REST sigue un patrón consistente, y la implementación de GraphQL se auto-genera desde tu esquema. Funciona, pero el GraphQL puede sentirse limitado para consultas anidadas complejas.

Payload genera APIs REST y GraphQL, además obtienes acceso completo a la API Local (consultas de base de datos directas sin overhead HTTP). Como Payload 3.0 se ejecuta dentro de tu aplicación Next.js, puedes llamar a payload.find() directamente en tus Server Components. Esto es una ventaja masiva para proyectos de Next.js.

// API Local de Payload en un Server Component de Next.js
import { getPayload } from 'payload'
import config from '@payload-config'

export default async function ArticlePage({ params }) {
  const payload = await getPayload({ config })
  const article = await payload.findByID({
    collection: 'articles',
    id: params.id,
    depth: 2,
  })
  return <Article data={article} />
}

La API de Supabase se auto-genera por PostgREST, y la biblioteca del cliente JavaScript es genuinamente excelente. El constructor de consultas se siente natural:

const { data, error } = await supabase
  .from('articles')
  .select('*, author:authors(*)')
  .eq('published', true)
  .order('created_at', { ascending: false })
  .range(0, 9)

Supabase también tiene suscripciones en tiempo real, que ni Directus ni Payload ofrecen nativamente. Si necesitas actualizaciones de datos en vivo (chat, notificaciones, edición colaborativa), Supabase gana por defecto.

Seguridad de Tipos

Payload tiene la mejor historia de TypeScript. Los tipos se generan desde tus configuraciones de colección, y todo está fuertemente tipificado de extremo a extremo. Supabase tiene generación de tipos sólida a través de su CLI (supabase gen types typescript), que crea tipos desde tu esquema de base de datos. Directus tiene un SDK de TypeScript pero la generación de tipos requiere configuración adicional y no está tan estrechamente integrada.

Autenticación, Permisos y Seguridad a Nivel de Fila

Aquí es donde Supabase genuinamente brilla. Postgres Row-Level Security (RLS) es el modelo de permisos más granular y más probado en batalla de los tres. Defines políticas a nivel de base de datos, y se aplican sin importar cómo se acceda a los datos. Es increíblemente poderoso para aplicaciones SaaS multi-inquilino.

Directus tiene un sistema de permisos basado en roles que funciona a nivel de colección y campo. Es intuitivo en el panel de administración y suficiente para la mayoría de casos de uso de CMS. Puedes establecer permisos CRUD por rol e incluso agregar reglas de filtro personalizadas.

Payload ofrece control de acceso a nivel de campo y colección a través de funciones en tu configuración:

{
  slug: 'articles',
  access: {
    read: () => true,
    create: ({ req: { user } }) => user?.role === 'editor',
    update: ({ req: { user } }) => user?.role === 'editor',
    delete: ({ req: { user } }) => user?.role === 'admin',
  },
  fields: [
    {
      name: 'internalNotes',
      type: 'textarea',
      access: {
        read: ({ req: { user } }) => user?.role === 'admin',
      },
    },
  ],
}

Para un CMS estándar con editores, revisores y administradores, los tres funcionan bien. Para aplicaciones multi-inquilino complejas con reglas de permisos dinámicos, el RLS de Supabase es la opción más poderosa.

Alojamiento Propio, Cloud y Precios en 2026

Los tres son de código abierto y auto-alojables. Pero los precios en cloud te dicen mucho sobre sus mercados objetivo.

Plan Directus Cloud Payload Cloud Supabase Cloud
Tier gratuito ❌ Sin cloud gratuito ✅ 1 proyecto, limitado ✅ 2 proyectos, 500MB BD
Inicio/Pro $99/mo (Professional) $35/mo (Standard) $25/mo (Pro)
Equipo/Negocio $399/mo (Enterprise) Precios personalizados $599/mo (Team)
Costo autohospedado Gratuito (código abierto) Gratuito (código abierto) Gratuito (código abierto)
Base de datos incluida ✅ Gestionada ✅ Postgres Gestionado ✅ Postgres Gestionado
CDN/Almacenamiento Incluido Incluido Incluido con límites

Precios a partir de Q1 2026. Revisa la página de precios de cada plataforma para tarifas actuales.

Payload Cloud es la opción gestionada más asequible para proyectos pequeños a medianos. El tier gratuito de Supabase es el más generoso para prototipado y proyectos secundarios. Directus Cloud apunta a organizaciones más grandes dispuestas a pagar por una experiencia gestionada pulida.

El alojamiento propio cambia la ecuación dramáticamente. Los tres funcionan bien en un VPS de $5-20/mes. Directus y Supabase tienen configuraciones oficiales de Docker Compose que funcionan confiablemente. Payload se despliega en cualquier lugar donde se ejecute Next.js — Vercel, Railway, Fly.io, tu propio servidor.

Para nuestros proyectos de desarrollo de CMS headless, típicamente recomendamos auto-alojamiento en Railway o Fly.io para eficiencia de costos, con cloud gestionado solo cuando el cliente necesita SLAs garantizados.

Benchmarks de Rendimiento y Escalabilidad

Ejecuté algunos benchmarks informales en hardware equivalente (4 vCPU, 8GB RAM, Postgres 16) con un dataset de ~50,000 registros de contenido.

Operación Directus Payload Supabase
Consulta de lista simple (20 elementos) ~45ms ~12ms (API Local) / ~38ms (REST) ~18ms
Consulta de relación anidada (profundidad 3) ~120ms ~35ms (API Local) / ~95ms (REST) ~55ms
Búsqueda de texto completo (1000 resultados) ~180ms ~85ms ~40ms (pg_trgm)
Inserción masiva (1000 registros) ~2.1s ~1.8s ~0.9s
Tiempo de inicio en frío ~3.5s ~2.8s N/A (siempre ejecutándose)

La API Local de Payload es la opción más rápida para aplicaciones Next.js porque no hay overhead HTTP — estás consultando la base de datos directamente desde tu proceso de renderizado. El rendimiento de Postgres crudo de Supabase es difícil de superar para operaciones intensivas en datos. Directus agrega algo de overhead a través de su capa de abstracción, pero es perfectamente fino para cargas de trabajo de servicio de contenido.

Para búsqueda específicamente, Supabase tiene una ventaja significativa porque puedes usar búsqueda de texto completo nativa de Postgres, índices de trigramas, e incluso la extensión pgvector para búsqueda semántica. Payload y Directus ambos soportan búsqueda pero se basan en sus propias implementaciones en lugar de aprovechar Postgres directamente.

El Marco de Decisión: Cuándo Usar Cuál

Aquí está el marco real. Responde estas preguntas, y tu elección se vuelve obvia.

Elige Directus Cuando:

  • Tu equipo de contenido es grande y no técnico
  • Necesitas envolver una base de datos existente con una capa de CMS
  • Estás usando una base de datos distinta a Postgres (MySQL, MS SQL, etc.)
  • Necesitas un CMS independiente que sirva múltiples frontends (web, móvil, kiosko)
  • Tu frontend no es Next.js (tal vez estés usando Astro, Nuxt, o SvelteKit)
  • Quieres máxima flexibilidad en personalización de UI de administración sin código

Directus se empareja beautifully con Astro para sitios con mucho contenido donde el renderizado en tiempo de compilación y la arquitectura de islas tienen más sentido que un framework React completo.

Elige Payload Cuando:

  • Tu frontend es Next.js (este es el caso de uso clave)
  • Tu equipo es TypeScript-first y quiere seguridad de tipos en todas partes
  • Quieres CMS y frontend en una única unidad desplegable
  • Necesitas vista previa activa y capacidades de edición visual
  • Quieres esquemas definidos por código en control de versiones
  • Estás construyendo un sitio donde el modelo de contenido es bien definido de antemano

Payload es nuestra recomendación go-to para proyectos de desarrollo de Next.js donde la gestión de contenido es un requisito central. La integración es inigualable.

Elige Supabase Cuando:

  • Estás construyendo una aplicación, no un sitio web de contenido
  • Necesitas características en tiempo real (chat, actualizaciones en vivo, edición colaborativa)
  • Necesitas permisos multi-inquilino complejos (RLS es el rey)
  • Tu necesidad principal es un backend, y el contenido es secundario
  • Quieres usar extensiones de Postgres (pgvector, PostGIS, pg_cron)
  • Tu equipo es cómodo construyendo sus propias interfaces de administrador
  • Estás construyendo un producto SaaS donde los datos generados por el usuario importan más que el contenido editorial

Escenarios de Proyectos Reales

Escenario 1: Sitio Web de Marketing con Blog

Mejor opción: Payload (si Next.js) o Directus (si Astro/otro)

Un sitio de marketing con 50-200 páginas, un blog, y un pequeño equipo de contenido de 2-3 personas. Necesitas flexibilidad de landing page, optimización de imágenes, gestión de metadatos SEO, y quizás algunas pruebas A/B.

La función de vista previa activa de Payload es perfecta aquí. Los editores de contenido pueden ver exactamente cómo se verá la página antes de publicar. El tipo de campo basado en bloques te permite construir landing pages flexibles sin dar a los editores suficiente cuerda para colgarse.

Escenario 2: Catálogo de Productos de E-commerce

Mejor opción: Directus o Payload

Un catálogo de productos con 5,000+ SKUs, categorización compleja, múltiples listas de precios e integración con sistemas de inventario. La clave aquí es flexibilidad de modelado de datos y la capacidad de manejar datos estructurados de manera eficiente.

Directus tiene una ligera ventaja si necesitas conectar a una base de datos de productos existente sin migrar datos. Payload gana si estás construyendo desde cero y quieres consultas de productos type-safe en tu escaparate Next.js.

Escenario 3: Plataforma SaaS Multi-inquilino

Mejor opción: Supabase

Una plataforma donde cada cliente tiene su propio espacio de datos, con acceso basado en roles, notificaciones en tiempo real, y contenido generado por el usuario. Necesitas seguridad a nivel de fila, funciones edge para lógica de negocio, y la capacidad de escalar horizontalmente.

Esto no es un proyecto de CMS — es un proyecto de backend de aplicación. Supabase fue construido exactamente para esto.

Escenario 4: Base de Conocimiento Interna

Mejor opción: Payload o Directus

Una wiki/base de conocimiento interna para una empresa de 200 personas. Contenido de texto enriquecido, categorización, búsqueda, y acceso basado en roles. Los editores de contenido van de técnicos a no técnicos.

Cualquiera de los CMS funciona bien aquí. Directus tiene una ligera ventaja para equipos no técnicos porque el panel de administrador requiere cero código para personalizar. Payload es mejor si quieres una experiencia frontend pulida y marcada.

Rutas de Migración y Consideraciones de Bloqueo

El bloqueo es real. Piensa en ello antes de comprometerte.

Directus tiene el menor bloqueo porque tu esquema de base de datos es independiente del CMS. Elimina Directus, y todavía tienes una base de datos SQL limpia y estándar. Tus datos no están atrapados en un formato propietario.

Payload almacena datos en tablas estándar de Postgres (o MongoDB), pero el esquema sigue las convenciones de Payload. Migrar implica reestructurar algunas cosas, pero tus datos siguen siendo en una base de datos estándar.

Supabase es solo Postgres. Cero bloqueo. Puedes tomar tu dump de base de datos y ejecutarlo en cualquier instancia de Postgres. El cliente es solo un wrapper alrededor de PostgREST y GoTrue. Si Supabase desapareciera mañana, necesitarías reemplazar algunas llamadas de API pero tus datos y esquema serían perfectamente intactos.

Los tres tienen buena puntuación en bloqueo en comparación con plataformas de CMS propietarias como Contentful o Sanity, donde tus datos viven en la nube de alguien más y exportarlos siempre es un proceso parcial.

FAQ

¿Puedo usar Supabase como un CMS headless?

Técnicamente sí, pero estarás construyendo características de CMS desde cero — interfaz de edición de contenido, gestión de medios, historial de revisiones, flujos de trabajo de publicación. Para proyectos pequeños con gestión de contenido solo de desarrollador, puede funcionar. Para cualquier cosa que involucre editores no técnicos, usa un CMS real como Payload o Directus y conecta Supabase para datos de aplicación si es necesario.

¿Es Payload realmente gratuito? ¿Cuál es la trampa?

Payload CMS es genuinamente de código abierto bajo la licencia MIT. Puedes auto-alojarlo de forma gratuita para siempre. Payload Cloud es su servicio de alojamiento gestionado pagado, comenzando en $35/mes. La trampa, si quieres llamarlo así, es que Payload Cloud tiene algunas características premium como constructor de formularios y complementos SEO que son gratuitos pero se benefician del entorno alojado. El CMS central es completamente funcional sin pagar nada.

¿Puedo usar Directus y Supabase juntos?

Absolutamente, y este es un patrón que he usado múltiples veces. Apunta Directus a una base de datos Postgres de Supabase. Obtienes el panel de administración de Directus para gestión de contenido y las suscripciones en tiempo real, autenticación y funciones edge de Supabase para características de aplicación. Las dos herramientas se complementan bien porque operan en diferentes capas.

¿Cuál es mejor para un proyecto de Next.js?

Payload, y no es cercano. Desde Payload 3.0, el CMS se ejecuta dentro de tu aplicación Next.js como un plugin. Obtienes la API Local para consultas de base de datos sin overhead en Server Components, vista previa activa nativa, y un único despliegue. Usamos esta combinación constantemente en nuestro trabajo de desarrollo de Next.js.

¿Cómo se comparan estos con Strapi en 2026?

Strapi v5 es una opción sólida pero se ha quedado atrás en algunas áreas. Su panel de administración se siente desactualizado comparado con el de Payload, su soporte de TypeScript no es tan fuerte, y su modelo de licencia se ha vuelto más restrictivo. Directus ofrece un enfoque similar de envoltura de base de datos con una UI más moderna. Payload ofrece mejor DX para equipos de TypeScript. La principal ventaja de Strapi es su ecosistema de plugins más grande y comunidad más grande, pero la brecha se está cerrando.

¿Qué pasa con Sanity, Contentful u otras plataformas de CMS SaaS?

Sanity y Contentful son excelentes productos pero son plataformas SaaS propietarias. Tus datos viven en sus servidores, los precios escalan con el uso (y pueden volverse muy caros rápidamente), y depende de su infraestructura. Directus, Payload, y Supabase son todos de código abierto y auto-alojables. Si la propiedad de datos, el control de costos y la flexibilidad de despliegue importan, las opciones de código abierto ganan. Cubrimos esto con más detalle en nuestra página de desarrollo de CMS headless.

¿Cuál tiene el mejor ecosistema de complementos/extensiones?

Directus tiene un marketplace con extensiones comunitarias para interfaces, visualizaciones y módulos personalizados. Payload tiene un ecosistema de plugins en crecimiento con plugins oficiales para SEO, formularios, docs anidados y redirecciones. Supabase tiene extensiones de Postgres (cientos de ellas) que sirven un propósito diferente pero son increíblemente poderosas. Para complementos específicos de CMS, Directus actualmente tiene más opciones.

¿Cuál es la mejor opción para un pequeño equipo con presupuesto limitado?

Payload auto-alojado en el tier gratuito de Vercel o el plan hobby de Railway. Obtienes un CMS completo sin costo mensual para proyectos de bajo tráfico. El tier gratuito de Supabase también es excelente para prototipado. Directus requiere auto-alojamiento para uso gratuito (sin tier cloud gratuito), pero funciona bien en un VPS de $5/mes. Si el presupuesto es ajustado y necesitas ayuda para elegir la arquitectura más rentable, ponte en contacto con nosotros — hemos ayudado a muchos equipos a encontrar la arquitectura más rentable.