Sanity CMS: el editor de contenido que enamora a los desarrolladores

Reseña de Sanity: CMS headless con colaboración en tiempo real, consultas GROQ y panel de administración personalizable. Para equipos que valoran el DX y el control del contenido.

Sanity es un CMS headless noruego fundado en 2015. Su principal diferencia frente a la competencia: el contenido son datos estructurados, no bloques de HTML. Los desarrolladores definen el esquema en código, los editores lo rellenan en un panel de administración colaborativo en tiempo real y las consultas al contenido se ejecutan con GROQ, el lenguaje de consultas propio de Sanity.

Web: sanity.io

Arquitectura

Sanity separa el contenido y la presentación a un nivel fundamental. El contenido reside en Sanity Content Lake, un almacenamiento en la nube accesible mediante API. El panel de administración (Sanity Studio) es una aplicación React que se puede personalizar a voluntad y alojar en cualquier sitio.

El esquema de contenido se define en archivos JavaScript/TypeScript. Defines los campos, sus tipos, validaciones y relaciones, y Studio recoge el esquema automáticamente. Los cambios en el esquema se despliegan junto con el código de Studio: un flujo de trabajo basado en Git, sin configuradores gráficos.

GROQ: el lenguaje de consultas

GROQ (Graph-Relational Object Queries) es como GraphQL pero optimizado para trabajar con documentos. Permite consultar estructuras anidadas, filtrar, agregar y transformar datos en una sola consulta. Ejemplo:

*[_type == "post" && publishedAt < now()] | order(publishedAt desc) {
  title,
  "slug": slug.current,
  "author": author->name,
  "related": *[_type == "post" && references(^._id)]{title}
}[0...10]

Potente, pero requiere un periodo de adaptación. Los desarrolladores que ya conocen GraphQL lo dominan en uno o dos días.

Colaboración en tiempo real

Varios editores pueden trabajar en el mismo documento simultáneamente. Los cambios se muestran al instante, como en Google Docs. Los conflictos se resuelven a nivel de campo. Para redacciones y equipos de contenido donde 2 o 3 personas trabajan en un mismo artículo, esto es una killer feature.

Precios

  • Free: contenido ilimitado, 2 usuarios, 100 GB de assets
  • Growth: $15/mes por usuario — roles personalizados, publicación programada
  • Enterprise: personalizado — SSO, audit logs, soporte dedicado

El plan gratuito es increíblemente generoso. Para un equipo de hasta 5 personas son $75/mes. Compáralo con Contentful ($489/mes por 5 usuarios): la diferencia es de un orden de magnitud.

Lo bueno

La experiencia de desarrollo (DX) es la característica principal. Esquema en código, despliegue por Git, personalización del panel en React. Puedes incrustar tus propios componentes directamente en el panel del editor: vistas previas, widgets personalizados, integraciones. Sanity Studio se puede estilizar con la marca del cliente.

GROQ, una vez dominado, te da superpoderes. Filtrado por documentos relacionados, campos condicionales, agregaciones: todo en una sola consulta sin el problema N+1.

El contenido está disponible simultáneamente por GraphQL y GROQ. La API es rápida, con caché en CDN y webhooks para rebuilds.

Lo que frena

La curva de aprendizaje es más pronunciada que en Strapi o Storyblok. Hay que aprender GROQ, hay que montar el Studio: no es Plug & Play. Para un blog sencillo con una estructura típica, el overhead es considerable.

Vendor lock-in: el contenido en Content Lake no es solo JSON. Se puede exportar a Markdown, pero la estructura de Sanity (references, blocks, portable text) se pierde. Una migración de vuelta sería dolorosa.

El precio por usuario ($15/mes) se acumula rápidamente en equipos grandes. 20 editores son $300/mes.

Veredicto

Sanity es el CMS para equipos donde los desarrolladores participan en el diseño del contenido. Si tienes una estructura de datos compleja, necesitas colaboración en tiempo real y quieres personalizar el panel de administración para el cliente, Sanity es la mejor opción del mercado. Para blogs sencillos y landing pages, elige Strapi: es más simple.