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.