Sanity CMS avec Next.js ou Astro : Guide complet
Pour gérer du contenu sur un site web, WordPress reste souvent le premier réflexe. Pourtant, pour des projets modernes — sites vitrines performants, blogs, sites corporate, landing pages — les CMS headless se sont imposés comme une alternative crédible, notamment quand on vise performance, SEO et flexibilité.
Parmi eux, Sanity CMS s'est imposé comme une référence grâce à sa capacité à s'adapter à des contenus sur-mesure, tout en proposant une interface d'édition moderne. Associé à Astro ou Next.js, Sanity permet de construire des sites rapides, bien référencés et conçus pour évoluer dans le temps.
Dans ce guide, je vais vous expliquer comment Sanity fonctionne avec ces frameworks, quand choisir l'un ou l'autre, et pourquoi cette approche peut être une excellente alternative à WordPress pour certains projets.
Au sommaire
1. Qu'est-ce que Sanity CMS ?
Sanity est un CMS headless : il gère le contenu, mais ne génère pas directement les pages HTML comme un CMS traditionnel.
Ce que Sanity fournit
- ✓Une interface d'administration (Sanity Studio)
Interface moderne et personnalisable pour éditer le contenu
- ✓Des modèles de contenu personnalisés (schémas)
Définissez la structure exacte de vos contenus (pages, articles, projets...)
- ✓Une API pour exposer les données (GROQ ou GraphQL)
Récupérez vos données via des requêtes optimisées
Le site visible par les visiteurs est construit séparément avec un framework frontend comme Astro ou Next.js. On parle alors d'architecture headless : le contenu et l'affichage sont découplés.
Exemple : Schéma Sanity pour une page
// schemas/page.ts
export default {
name: 'page',
title: 'Page',
type: 'document',
fields: [
{
name: 'title',
title: 'Titre',
type: 'string',
validation: (Rule) => Rule.required()
},
{
name: 'slug',
title: 'URL',
type: 'slug',
options: {
source: 'title',
maxLength: 96
}
},
{
name: 'description',
title: 'Description',
type: 'text',
rows: 3
},
{
name: 'content',
title: 'Contenu',
type: 'array',
of: [
{ type: 'block' },
{ type: 'image' }
]
},
{
name: 'publishedAt',
title: 'Date de publication',
type: 'datetime'
}
]
}Ce schéma définit la structure d'une page : titre, URL, description, contenu enrichi et date. L'interface Sanity Studio est générée automatiquement depuis cette définition.
Avantage principal : Le contenu devient une source unique, réutilisable sur plusieurs supports (site, app, pages marketing...).
2. Pourquoi Sanity fonctionne bien avec Astro ou Next.js
1. Un CMS orienté données, pas pages
Avec Sanity, le contenu est structuré sous forme de types : pages, sections, articles, projets, témoignages, FAQ...
Cette approche permet de construire des sites très personnalisés, réellement évolutifs, sans bricolage ni contournement. La structure du contenu est claire, maîtrisée et indépendante du design.
2. Une interface d'édition moderne
Sanity Studio est rapide, clair et agréable à utiliser. Bien configuré, il permet aux équipes non techniques de :
- •Modifier les textes et les images
- •Gérer les pages et les contenus
- •Publier ou dépublier du contenu
- •Prévisualiser les changements en temps réel
3. Une API flexible : GROQ et GraphQL
Sanity expose son contenu via deux options :
- →GROQ : langage de requêtes très performant pour sélectionner précisément les données nécessaires
- →GraphQL : via l'API officielle, pour les projets déjà orientés GraphQL
// Exemple de requête GROQ
const query = `
*[_type == "page" && slug.current == $slug][0]{
title,
description,
content,
"imageUrl": mainImage.asset->url
}
`;
const page = await client.fetch(query, { slug: 'about' });GROQ permet de limiter le volume de données chargées et d'optimiser les performances du frontend.
À retenir : Sanity offre une flexibilité totale sur la structure du contenu tout en restant simple à utiliser pour les éditeurs.
3. Sanity est-il complexe à utiliser ?
La question est légitime, mais la réponse mérite d'être nuancée.
Côté utilisateur
Pour un client, Sanity peut être très simple :
- ✓Champs bien nommés
- ✓Sections claires
- ✓Validations intégrées
- ✓Interface épurée
Dans de nombreux cas, l'expérience d'édition est plus agréable qu'un WordPress chargé de plugins.
Côté mise en place
Sanity demande un travail initial :
- →Définition des schémas
- →Organisation de l'interface
- →Règles de validation
- →Système de preview
Un WordPress professionnel nécessite aussi du développement initial (thème, performance, SEO, plugins).
La différence principale
WordPress
Mise en place rapide, complexité qui augmente avec le temps (plugins, maintenance, performance)
Sanity
Configuration initiale plus structurée, maintenance souvent plus sereine sur la durée
→ Dans les deux cas, un projet sérieux demande une vraie réflexion technique. Sanity a l'avantage de partir sur une architecture moderne et propre.
4. Astro vs Next.js : comparaison détaillée
Le choix entre Astro et Next.js dépend du niveau de complexité fonctionnelle, pas du CMS.
| Critère | Astro + Sanity | Next.js + Sanity |
|---|---|---|
| JavaScript client | Quasi nul (0 JS par défaut) | Minimal (hydration React) |
| Performance | Excellent (Lighthouse 100) | Très bon (95-100) |
| SEO | Natif (HTML pur) | Excellent (SSR/SSG) |
| Visual Editing | Possible (moins fluide) | Natif (Vercel Edit Mode) |
| Multilingue | i18n natif (Routing simple) | i18n natif (Routing + Middleware) |
| Interactivité | Ciblée (islands) | Totale (React SPA) |
| Complexité | Simple | Moyenne |
| Time-to-market | Rapide (1-3 semaines) | Rapide (1-3 semaines) |
| Cas d'usage idéal | Site vitrine, blog, landing pages | Projet complexe, multilingue, app |
Astro + Sanity pertinent pour :
- →Site vitrine d'agence/freelance
- →Blog performant
- →Site corporate
- →Landing pages multiples
- →Documentation
Next.js + Sanity pertinent pour :
- →Site multilingue complexe
- →Visual editing fluide requis (Vercel Edit Mode)
- →Site avec animations complexes
- →E-commerce content (non transactionnel)
- →Documentation interactive
À retenir : Astro privilégie performance maximale et simplicité. Next.js privilégie flexibilité et fonctionnalités avancées. Pour un site vitrine performant, Astro est souvent le meilleur choix.
5. Exemples de code : Sanity avec Astro et Next.js
Voyons concrètement comment récupérer et afficher du contenu Sanity avec chaque framework.
Approche Astro + Sanity
ASTRO---
// src/pages/[slug].astro
import { client } from '../lib/sanity';
const { slug } = Astro.params;
// Requête GROQ pour récupérer la page
const query = `*[_type == "page" && slug.current == $slug][0]{
title,
description,
content,
"imageUrl": mainImage.asset->url
}`;
const page = await client.fetch(query, { slug });
if (!page) {
return Astro.redirect('/404');
}
---
<html>
<head>
<title>{page.title}</title>
<meta name="description" content={page.description} />
</head>
<body>
<h1>{page.title}</h1>
<p>{page.description}</p>
{page.imageUrl && <img src={page.imageUrl} alt={page.title} />}
<!-- Rendu du contenu enrichi -->
<div>
{page.content}
</div>
</body>
</html>✓HTML pur généré au build (SSG)
✓0 JavaScript côté client par défaut
✓Chargement instantané (< 0.5s)
✓SEO parfait (HTML complet au premier rendu)
Approche Next.js + Sanity
NEXT.JS// app/[slug]/page.tsx
import { client } from '@/lib/sanity';
import { PortableText } from '@portabletext/react';
interface PageProps {
params: { slug: string };
}
async function getPage(slug: string) {
const query = `*[_type == "page" && slug.current == $slug][0]{
title,
description,
content,
"imageUrl": mainImage.asset->url
}`;
return await client.fetch(query, { slug });
}
export default async function Page({ params }: PageProps) {
const page = await getPage(params.slug);
if (!page) {
notFound();
}
return (
<article>
<h1>{page.title}</h1>
<p>{page.description}</p>
{page.imageUrl && (
<img src={page.imageUrl} alt={page.title} />
)}
<PortableText value={page.content} />
</article>
);
}
// Métadonnées SEO
export async function generateMetadata({ params }: PageProps) {
const page = await getPage(params.slug);
return {
title: page.title,
description: page.description,
};
}✓TypeScript natif pour la sécurité des types
✓Server Components pour le rendu serveur
✓Support PortableText natif (contenu enrichi)
✓Métadonnées dynamiques pour le SEO
Ce que révèle cette comparaison
Astro : Code simple, HTML pur, 0 JS client. Parfait pour un site vitrine ultra-performant.
Next.js : Plus de structure, TypeScript, Server Components. Idéal pour un projet évolutif avec interactivité.
→ Les deux approches fonctionnent excellemment avec Sanity. Le choix dépend de vos priorités : performance maximale vs flexibilité maximale.
6. Exemple concret : Horizon Architecture
Projet réel avec Sanity + Next.js
Horizon Architecture →
Site vitrine de cabinet d'architecture avec Sanity CMS + Next.js + GSAP + Tailwind
Pourquoi Next.js et pas Astro ?
- →Animations complexes avec GSAP : Nécessite plus de contrôle sur le JavaScript côté client
- →Visual editing fluide : Le client peut cliquer directement sur le site pour modifier le contenu
- →Architecture évolutive : Le site pourra intégrer un espace client à l'avenir
Résultats obtenus
Performance
Lighthouse 95-98
Autonomie client
Gestion projets via Sanity Studio
Maintenance
Minimale après mise en ligne
Ce projet démontre qu'un site avec Sanity + Next.js peut être à la fois performant, visuellement riche et facile à gérer pour le client.
7. Sanity vs WordPress : tableau comparatif
Sanity et WordPress répondent à des besoins différents. Voici une comparaison pragmatique.
| Critère | WordPress | Sanity + Astro/Next.js |
|---|---|---|
| Architecture | Monolithique (tout-en-un) | Headless (découplée) |
| Performance | Moyenne (dépend des plugins) | Excellente (HTML optimisé) |
| SEO | Bon (avec plugins) | Excellent (natif) |
| Autonomie client | Élevée (interface connue) | Élevée (si bien configuré) |
| Maintenance | Régulière (plugins, sécurité) | Minimale |
| Design sur-mesure | Limité (thèmes/builders) | Total |
| Évolutivité | Limitée (plugins) | Très flexible |
| Coûts hébergement | Variable (serveur nécessaire) | Faible/Gratuit (static hosting) |
| Mise en place | Rapide (installation simple) | Structure (config initiale) |
| Cas d'usage idéal | Blog standard, site simple | Site moderne, performance prioritaire |
WordPress est pertinent si :
- →Vous recherchez une solution "tout-en-un" très standard
- →Vous acceptez l'écosystème plugins / thèmes
- →Vous êtes à l'aise avec une maintenance régulière
- →Le projet est simple et standard (blog classique)
Sanity + Astro/Next.js est pertinent si :
- →La performance et le SEO sont prioritaires
- →Le design doit être réellement sur-mesure
- →Vous souhaitez une architecture moderne et durable
- →Le contenu doit être structuré et réutilisable
8. Coûts et hébergement
Contrairement à certaines idées reçues, utiliser Sanity ne signifie pas forcément un abonnement élevé.
Exemple d'architecture économique
Souvent gratuit pour un usage raisonnable (bande passante illimitée)
Plan gratuit généreux disponible, plans payants si besoins avancés
~10-15€/an (seul coût récurrent réel)
Hébergement recommandé
- • Vercel (offre gratuite disponible)
- • Cloudflare Pages (offre gratuite disponible)
- • Netlify (offre gratuite disponible)
Sanity CMS - Plan Free
- • Jusqu'à 20 utilisateurs
- • 2 datasets publics
- • Contenus et locales illimités
- • Live preview inclus
Évolution payante
- • Plans Growth et Enterprise
- • Fonctionnalités avancées
- • Support dédié si besoin
À retenir : Un site Sanity + Astro peut fonctionner gratuitement (hors domaine) pour la plupart des projets vitrines et blogs. C'est très économique comparé à WordPress hébergé.
9. Quand choisir Sanity ?
1. Site moderne et performant
Vous voulez un site vitrine, blog ou corporate ultra-rapide avec un SEO parfait et une architecture moderne.
2. Contenu structuré et évolutif
Le contenu doit être bien organisé, réutilisable et évoluer dans le temps sans devenir un sac de nœuds.
3. Autonomie sur les contenus
Vous voulez que le client/l'équipe puisse gérer le contenu facilement via une interface moderne et agréable.
4. Design sur-mesure
Le design ne doit pas être limité par un thème ou un page builder. Vous voulez une liberté créative totale.
5. Base saine à long terme
Vous cherchez une architecture pérenne, facile à maintenir, sans dette technique qui s'accumule avec le temps.
Sanity est moins pertinent si :
- •Le projet est très simple et figé (1-2 pages statiques)
- •Vous souhaitez une solution prête immédiatement sans aucune configuration
- •Vous recherchez un outil no-code ou un page builder clé en main
- •Le budget est extrêmement limité et vous devez tout faire vous-même
À retenir : Sanity est excellent pour des sites modernes qui ont besoin de performance, de structure et de flexibilité. Pour un blog WordPress classique sans enjeu de performance, WordPress reste plus simple.
10. Questions fréquentes (FAQ)
Sanity CMS est-il gratuit ?
Oui, Sanity propose un plan gratuit généreux incluant jusqu'à 20 utilisateurs, 2 datasets publics, des contenus et locales illimités, ainsi que les outils de live preview et visual editing. C'est largement suffisant pour la plupart des sites vitrines, blogs et petits projets. Des plans payants (Growth et Enterprise) existent pour les besoins avancés : datasets privés, permissions complexes, AI Assist, support dédié, etc.
Quelle est la différence entre Sanity et WordPress ?
WordPress est un CMS monolithique (tout-en-un) où le contenu et l'affichage sont couplés. Sanity est un CMS headless où le contenu est géré séparément du frontend. Sanity offre de meilleures performances, plus de flexibilité et une architecture moderne, mais nécessite un framework frontend (Astro, Next.js) pour afficher le site. WordPress est plus simple à démarrer mais peut devenir complexe et lent avec le temps.
Astro ou Next.js avec Sanity ?
Astro est idéal pour les sites orientés contenu (vitrine, blog, corporate) où la performance maximale est prioritaire (0 JS client, HTML pur). Next.js est préférable pour les projets plus complexes nécessitant du multilingue avancé, un visual editing natif et fluide (Vercel Edit Mode), des animations interactives ou une logique applicative. Pour un site vitrine simple et performant, Astro est souvent le meilleur choix.
Combien de temps pour créer un site avec Sanity ?
Un site simple avec Astro + Sanity peut être livré en 1 à 3 semaines. Un site plus complexe (multipage, contenu riche) prend 3 à 4 semaines avec Astro. Avec Next.js (pour des besoins plus avancés), comptez 1 à 3 semaines selon la complexité. Ces délais incluent la configuration du CMS, le développement du frontend et l'intégration du contenu.
Puis-je migrer de WordPress vers Sanity ?
Oui, c'est possible. La migration nécessite d'exporter le contenu WordPress (articles, pages, médias) et de le réimporter dans Sanity via des scripts. Le design et la structure doivent être reconstruits avec Astro ou Next.js. C'est un projet de refonte complet, mais cela permet de repartir sur une base moderne et performante.
Sanity est-il difficile à utiliser pour un client ?
Non, si l'interface Sanity Studio est bien configurée. L'interface est moderne, intuitive et souvent plus agréable que WordPress. Les clients apprécient la clarté des champs, les validations en temps réel et la prévisualisation. La clé est de bien structurer les schémas dès le départ : des noms de champs clairs, des descriptions, et une organisation logique rendent l'édition très simple.
Quel hébergement pour un site Astro/Next.js + Sanity ?
Vercel, Cloudflare Pages et Netlify sont les meilleures options. Tous trois proposent des plans gratuits généreux avec déploiement automatisé via Git. Cloudflare Pages est excellent pour Astro avec sa bande passante généreuse. Vercel est optimisé par l'équipe de Next.js et offre la meilleure intégration. Netlify est aussi une excellente alternative polyvalente.
Sanity est-il adapté pour l'e-commerce ?
Sanity peut gérer le contenu e-commerce (descriptions produits, pages, médias) mais n'est pas un système transactionnel. Pour l'e-commerce complet, il faut le coupler avec Shopify (architecture headless), Stripe pour les paiements, ou utiliser un framework e-commerce dédié. Sanity excelle pour la partie contenu et présentation, mais la gestion des transactions, stocks et commandes nécessite d'autres outils.
Conclusion
Sanity CMS, associé à Astro ou Next.js, permet de construire des sites performants, administrables et évolutifs, sans dépendre d'un CMS monolithique comme WordPress.
Astro + Sanity est un excellent choix pour un site vitrine, blog ou corporate ultra-rapide, avec une infrastructure pouvant rester très économique (souvent gratuite hors domaine).
Next.js + Sanity est pertinent lorsque le projet intègre du multilingue avancé, un visual editing natif et fluide, des animations complexes ou une logique applicative plus poussée.
La complexité ne réside pas tant dans l'outil que dans la conception du contenu et de l'architecture. L'objectif est de viser une solution performante, structurée et durable : un frontend optimisé, un contenu bien organisé, et une administration pensée pour l'autonomie.
Besoin d'un site avec Sanity CMS ?
Je peux vous aider à déterminer l'architecture la plus adaptée (Astro ou Next.js) et créer un site performant, moderne et facile à gérer.
Johan Lorck
Développeur Next.js freelance spécialisé dans la création d'applications web performantes. Je peux vous aider à choisir la meilleure architecture pour votre projet.
Discutons de votre projet →