Aller au contenu

ADR 0042 – react-jsonschema-form pour les formulaires de pack

Statut : Décidée. Date : 01/10/2026. Lot 1, séquence B3 (écran des produits et attributs).

Les attributs d’un produit sont décrits par un JSON Schema dans le pack de la filière (ADR 0024, module packs). Le back-office doit afficher et saisir ces attributs sans code propre à une filière : aucun écran n’est écrit pour l’ananas. Le thème « Registre » (libellé au-dessus, unité à droite, erreur en clair) était prévu en B1 et repoussé à B3 (EC-067). Le projet n’a qu’un système de schémas : TypeBox / JSON Schema validé par Ajv (ADR 0009).

@rjsf/core et @rjsf/validator-ajv8, avec un thème « Registre » dans apps/backoffice/src/formulaire/ (il migrera vers packages/ui quand l’application terrain en aura besoin, Lot 3). L’écran des produits est chargé à la demande (import()) : rjsf pèse plus de 300 Ko. Le validateur est Ajv, déjà utilisé côté serveur : le formulaire et l’API valident le même schéma avec le même moteur. La validation du serveur reste la seule qui fait foi.

  • Formulaire écrit à la main par type d’attribut : aucune dépendance, mais chaque nouveau type de champ d’un pack demande du code, ce qui contredit « aucun code spécifique à une filière dans le noyau ».
  • react-hook-form avec zod : introduit un second système de schémas, interdit par CLAUDE.md.

Deux dépendances d’exécution. Le thème se limite aux champs que les packs emploient (texte, nombre avec unité, liste de choix, booléen, date) ; un type de champ absent du thème retombe sur le rendu par défaut, signalé par un test. Les schémas du pack ne portent aucune information d’affichage propre à rjsf.

Le contrat est le JSON Schema du pack, qui ne dépend pas de rjsf. Remplacer la bibliothèque revient à réécrire le thème et un composant de formulaire.