Skip to content

Objet : Sanity Visual Editing
Type : Configuration
Slice : Slice 1 (Page d’accueil)
Cycle : DOC → SPEC → CODE → TEST → INTÉG
Statut : DOC


Le Sanity Visual Editing permet aux collaborateurs de prĂ©visualiser et modifier le contenu directement depuis l’interface du Studio, avec un affichage “click-to-edit” et des modifications en temps rĂ©el.

  • PrĂ©visualisation des brouillons Sanity
  • Édition visuelle click-to-edit
  • Mise Ă  jour en temps rĂ©el pendant l’édition
  • Fonctionne pour tous les types de pages (SSG et SSR)
  • Type : Configuration Sanity Studio + intĂ©gration Astro
  • Composants : sanity/presentation plugin, loaders @sanity/astro
  • Pages : Page d’accueil, blog, et toutes les pages Sanity-backed
  • Technologie : Stega (Content Source Maps), Live Content API

Entrée : Plugin sanity/presentation dans sanity.config.ts

Structure :

import { presentationTool } from 'sanity/presentation'
import { resolve } from '@/sanity/presentation/resolve'
export default defineConfig({
plugins: [
presentationTool({
resolve,
previewUrl: {
initial: process.env.SANITY_STUDIO_PREVIEW_URL || 'http://localhost:4321',
previewMode: {
enable: '/api/draft-mode/enable',
},
},
}),
],
})

RĂšgles :

  • URL de prĂ©visualisation configurĂ©e pour dev et prod
  • Mode draft activĂ© via endpoint /api/draft-mode/enable
  • Document locations dĂ©finis pour navigation bidirectionnelle

Entrée : Loader @sanity/astro dans astro.config.mjs et <VisualEditing /> dans MainLayout.astro

Structure :

import sanity from '@sanity/astro'
export default defineConfig({
integrations: [
sanity({
projectId: process.env.SANITY_PROJECT_ID,
dataset: process.env.SANITY_DATASET,
stega: {
studioUrl: process.env.SANITY_STUDIO_PREVIEW_URL || 'http://localhost:3333',
},
}),
],
})

Composant Layout :

---
import { VisualEditing } from '@sanity/astro/visual-editing';
const visualEditingEnabled = !!Astro.cookies.get('sanity-perspective')?.value;
---
<VisualEditing enabled={visualEditingEnabled} />

RĂšgles :

  • Stega activĂ© sur createClient dans loadQuery.ts quand visualEditingEnabled est vrai
  • Composant <VisualEditing /> injectĂ© dans le layout principal pour charger les overlays du Presentation Tool
  • Perspective drafts activĂ©e via le cookie sanity-perspective

Sortie : Interface de prévisualisation intégrée

Comportement :

  • Bouton “Presentation” dans le Studio
  • Rendu du site dans un iframe dans le Studio
  • Navigation bidirectionnelle entre Studio et site
  • Click-to-edit sur les Ă©lĂ©ments du site

Sortie : Rendu des données Sanity avec metadata Stega

Comportement :

  • Les champs texte contiennent des mĂ©tadonnĂ©es invisibles
  • Ces mĂ©tadonnĂ©es permettent le click-to-edit
  • Mises Ă  jour en temps rĂ©el via Live Content API
  • PrĂ©sence d’indicateurs visuels en mode preview

Effet : Les champs texte contiennent des métadonnées Stega

Impact :

  • Les mĂ©tadonnĂ©es sont invisibles visuellement
  • Elles sont utilisĂ©es par le Presentation Tool
  • Doivent ĂȘtre nettoyĂ©es avant utilisation logique (comparaisons, etc.)

Effet : Mode preview désactive le cache

Impact :

  • En mode preview : pas de cache, donnĂ©es live
  • En mode production : cache CDN activĂ©
  • NĂ©cessite de gĂ©rer le mode draft-mode/preview

Erreur Cause probable Solution
Stega corrompu Mauvaise configuration sanity Vérifier stega: true dans config
Presentation tool non visible Plugin non configuré Vérifier sanity.config.ts
Click-to-edit non fonctionnel Resolve mal configuré Vérifier document locations
Draft mode non activé Endpoint manquant Créer endpoint /api/draft-mode/enable

Gestion des erreurs :

  • Si Stega Ă©choue : rendu normal sans click-to-edit
  • Si Presentation tool Ă©choue : utiliser open preview classique
  • Si Live Content API Ă©choue : requĂȘte standard Sanity

Studio → Presentation Tool → Frontend Astro → Sanity Live API
↓ ↓ ↓
Edit content Render with Stega Real-time updates
↓ ↓ ↓
Click-to-edit Metadata decoding Automatic refresh

Studio :

  • sanity/presentation plugin
  • Document locations pour navigation
  • Resolve function pour mapping routes

Frontend :

  • Loader @sanity/astro avec stega
  • Endpoint draft-mode/enable
  • Composants compatibles Stega

RĂšgles :

  • Token de lecture Sanity requis pour preview
  • Token injectĂ© via variable d’environnement
  • Jamais exposĂ© dans le code client

RĂšgles :

  • Endpoint draft-mode protĂ©gĂ© (optionnel)
  • Secret Sanity utilisĂ© pour validation
  • Mode preview accessible uniquement aux auteurs

Avant de considérer le Visual Editing comme terminé :

  • Documentation Studio visual editing
  • Plugin presentation configurĂ©
  • Document locations dĂ©finis
  • Loader Astro configurĂ© avec stega
  • Endpoint draft-mode créé
  • Click-to-edit fonctionnel
  • Live Content API testĂ©
  • Mode preview pour pages SSG testĂ©
  • Mode preview pour pages SSR testĂ©

Validation requise : Confirmer que la documentation du Visual Editing peut passer Ă  l’étape SPEC.


Date Version Description Auteur
2026-09-17 1.0 Création initiale Devin
Edit page

Last updated: