vendredi 25 septembre 2026

À propos

Contact

Blocs Gutenberg

« Documenter un bloc pour son équipe : README, JSDoc ou Storybook »

Comparaison pragmatique de trois approches de documentation de blocs sur un vrai projet, pour éviter que chaque recrue redécouvre le code à la dure.

Par Clément Hadrot • 21 août 2024 • 4 min de lecture • Aucun commentaire
"Documenter un bloc pour son équipe : README, JSDoc ou Storybook"

Studio Lucarne, une agence spécialisée dans les sites éditoriaux, gère un plugin interne regroupant vingt-deux blocs maison, réutilisés d’un projet client à l’autre. Chaque nouvelle recrue passait ses deux premières semaines à redécouvrir, bloc par bloc, ce que fait attributs.variante ou pourquoi tel bloc dépend d’un autre. L’équipe a testé trois approches de documentation sur ce même plugin, à des moments différents, pour comparer ce qui tenait réellement dans la durée.

Le README à la racine de chaque bloc

Première tentative : un fichier README.md dans le dossier de chaque bloc, décrivant son rôle métier, ses dépendances avec d’autres blocs, et des captures d’écran. Ce format a bien fonctionné pour le contexte que le code seul ne peut pas porter : pourquoi ce bloc existe, dans quel projet il a été conçu à l’origine, quelles limites ont été acceptées consciemment.

En revanche, le README a vite divergé du code sur les détails techniques : un attribut renommé lors d’un refactoring n’était mis à jour dans le README que si quelqu’un y pensait, ce qui n’arrivait pas systématiquement. Au bout de six mois, environ un tiers des README contenaient au moins une information technique obsolète.

La JSDoc directement dans le code

Deuxième approche, en réaction à la précédente : documenter chaque composant et chaque fonction utilitaire avec des commentaires JSDoc standards, directement au-dessus de la déclaration :

/**
 * Affiche un encart de mise en avant d'article avec image et texte.
 *
 * @param {Object} props
 * @param {string} props.variante - 'horizontal' ou 'vertical'.
 * @param {number} props.articleId - Identifiant de l'article mis en avant.
 * @return {JSX.Element} Le composant d'édition du bloc.
 */
function Edit({ variante, articleId }) {
  // ...
}
L'essentiel à retenir : README pour le contexte métier, jamais pour l'API ; JSDoc directement dans le code, jamais désynchronisé ; Storybook rentable seulement à partir d'un vrai catalogue

Cette approche a un avantage décisif : elle est physiquement impossible à ignorer lors d’une modification, puisqu’elle se trouve juste au-dessus du code qu’on modifie. Le taux de désynchronisation a chuté drastiquement par rapport aux README. Sa limite : elle documente bien l’API d’un composant isolé, mais peu le contexte global (pourquoi deux blocs existent en parallèle, quand choisir l’un plutôt que l’autre).

Storybook pour les composants visuels partagés

Troisième étape, réservée aux composants d’interface réutilisés entre plusieurs blocs (un sélecteur de couleur maison, un composant de gestion d’onglets) : Storybook, avec une story par variante visuelle. L’investissement de mise en place (configuration du build, écriture des premières stories) a représenté environ trois jours pour l’équipe, non négligeable pour une agence de cette taille.

Le retour sur cet investissement n’est apparu qu’à partir d’un certain volume : en dessous d’une demi-douzaine de composants partagés, Storybook ajoutait plus de charge de maintenance (mise à jour des stories à chaque changement de props) qu’il n’en économisait. Au-delà, sur les composants réellement transverses, il a évité plusieurs redémarrages de développement quand une nouvelle recrue cherchait « est-ce qu’un composant de ce type existe déjà ».

Ce que l’équipe a finalement retenu

ApprocheForceLimite observée
READMEContexte métier, historique du choixSe désynchronise vite du code technique
JSDocToujours à jour car collée au codeNe documente pas le pourquoi global
StorybookCatalogue visuel navigable des composants partagésRentable seulement à partir d’un vrai volume

La combinaison retenue aujourd’hui : un README court par bloc, limité au contexte métier et volontairement dépourvu de détails techniques précis, de la JSDoc systématique sur chaque composant et fonction exportée, et Storybook réservé aux composants d’interface génériques partagés par plus de trois blocs.

Une documentation qui peut mentir sans que personne ne s’en aperçoive finit toujours par mentir.

Ce que cet article ne couvre pas

Les tests automatisés des blocs (Jest, tests de bout en bout) relèvent d’une problématique différente, déjà traitée séparément : ils vérifient un comportement, la documentation explique une intention. Les deux sont complémentaires mais répondent à des besoins distincts d’une équipe qui grandit.

Notre verdict

Aucune des trois approches, seule, n’a suffi durablement chez Studio Lucarne. La bonne réponse dépend moins d’un choix unique que d’assigner à chaque type d’information le format qui a le plus de chances de rester vrai dans le temps.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi