Standard Schema Validation

NestJS 🔴 Senior

Définition

Depuis NestJS 12.0.0 (27 août 2026), les décorateurs @Body(), @Query(), @Param() et @RawBody() acceptent une option schema compatible avec la spécification Standard Schema (Zod, Valibot, ArkType). Le StandardSchemaValidationPipe valide la charge utile contre ce schema, en parallèle du flux historique class-validator qui reste entièrement supporte.

Analogie

Comme accepter un badge d'accès différent (RFID, QR code) au même portique : plusieurs formats de validation cohabitent sans casser l'existant.

Exemple de code

@Post()
create(@Body({ schema: createUserSchema }) body: CreateUserDto) {
  return this.usersService.create(body);
}

// Activation globale du pipe
app.useGlobalPipes(new StandardSchemaValidationPipe());

Cas d'usage

Valider les requêtes avec des schémas Zod/Valibot déjà utilises cote frontend, sans réécrire des DTO class-validator.

Anti-pattern

Mélanger schema Standard Schema et class-validator sur le même DTO sans convention claire dans l'équipe.

Termes liés

#core#nest12#interview

En entretien

  1. Explique-moi ce qu'apporte la Standard Schema Validation depuis NestJS 12.

    Depuis NestJS 12.0.0, les décorateurs @Body(), @Query(), @Param() et @RawBody() acceptent une option schema compatible avec Zod, Valibot ou ArkType, et le StandardSchemaValidationPipe valide la charge utile contre ce schéma. C'est comme accepter un badge d'accès différent, RFID ou QR code, au même portique.

  2. Est-ce que ça remplace class-validator ?

    Non, le flux historique class-validator reste entièrement supporté en parallèle, les deux cohabitent.

  3. Quel est le piège si une équipe mélange les deux approches ?

    Mélanger Standard Schema et class-validator sur le même DTO sans convention claire dans l'équipe, ce qui rend le code de validation incohérent et difficile à maintenir.

Dans l'actu

  • 27/08 NestJS 12.0.0 est publié : tous les packages core passent en ESM (compatibilité CommonJS conservée via require(esm)), la validation accepte les bibliothèques Standard Schema comme Zod et Valibot, un SDK d'observabilité @nestjs/observe auto-instrumente HTTP/GraphQL/gRPC, et la CLI gagne « nest upgrade ». Bilan août 2026 →

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre