Aller au contenu principal

Pithos vs Lodash, Zod & Neverthrow

Pithos est organisé en cinq modules. Chacun résout un problème spécifique avec un impact minimal sur le bundle.


Comparaison rapide

ModulevsTaille du bundle (moyenne)Performance (moyenne)
ArkheLodash20.9× plus petit8.4× plus rapide
KanonZod4.1× plus petit11.0× plus rapide
ZygosNeverthrow2.7× plus petit1.6× plus rapide

Quand utiliser chaque module

Arkhe - Fonctions utilitaires

Utilisez Arkhe quand :

  • Vous voulez des bundles plus petits que Lodash
  • Vous développez une application moderne
  • Vous voulez une meilleure inférence TypeScript
  • La sécurité de la chaîne d'approvisionnement vous importe

Utilisez plutôt Lodash quand :

  • Vous avez besoin du support IE11
  • Votre codebase l'utilise déjà massivement
Migration

De nombreuses fonctions Lodash ont désormais des équivalents natifs. Consultez Taphos pour savoir quoi remplacer par du JS natif vs Arkhe.

Kanon - Validation de schémas

Utilisez Kanon quand :

  • Vous voulez des bundles plus petits que Zod
  • Vous avez besoin d'une validation type-safe simple sans surcharge
  • Vous voulez des validateurs compilés JIT pour des performances maximales
  • Vous voulez zéro dépendance
  • Vous utilisez déjà Pithos

Utilisez plutôt Zod quand :

  • Vous avez besoin de transformations complexes (.transform())
  • Vous avez besoin de validation asynchrone
  • Vous avez besoin de nombreux validateurs de format intégrés (IP, JWT, CUID, ULID...)
  • Vous l'utilisez déjà

Zygos - Gestion d'erreurs

Utilisez Zygos quand :

  • Vous voulez des bundles plus petits
  • Vous avez aussi besoin des monades Option/Either/Task
  • Vous utilisez déjà Pithos
  • Vous voulez la gestion d'erreurs par générateurs (safeTry)
  • Vous voulez un remplacement direct de Neverthrow

Utilisez plutôt Neverthrow quand :

  • Si Neverthrow est votre seul cas d'usage Pithos, le coût de migration ne se justifie peut-être pas
  • Vous voulez l'implémentation "originale"

Utilisez plutôt fp-ts quand :

  • Vous voulez de la programmation fonctionnelle complète
  • Vous avez besoin des abstractions Functor, Applicative, Monad
  • Vous êtes à l'aise avec le style FP Haskell
  • Vous avez besoin de pipe avec une hiérarchie complète de classes de types

Sphalma - Fabriques d'erreurs typées

Utilisez Sphalma quand :

  • Vous avez besoin d'erreurs structurées et typées avec des codes hexadécimaux
  • Vous voulez une identification cohérente des erreurs dans votre codebase
  • Vous utilisez Zygos et voulez des canaux d'erreurs typés

Sphalma n'a pas de concurrent direct — il comble un vide que la plupart des projets résolvent avec des classes d'erreurs ad-hoc ou de simples chaînes de caractères.

Taphos - Équivalence native

Utilisez Taphos quand :

  • Vous migrez depuis Lodash
  • Vous voulez savoir quelles fonctions Arkhe ont des équivalents natifs
  • Vous voulez des conseils de dépréciation avant de supprimer une dépendance

La philosophie Pithos

💡 Pourquoi les kilo-octets comptent - "c'est juste quelques ko, qui s'en soucie ?"

Chaque dépendance s'accumule. La validation ajoute 20 ko. Les dates ajoutent 15 ko. Les utilitaires ajoutent 25 ko. L'état ajoute 30 ko... Avant de vous en rendre compte : 500+ ko de JavaScript que le navigateur doit télécharger, parser et exécuter.

Cela affecte directement l'expérience utilisateur. Chaque kilo-octet supplémentaire de JavaScript augmente le temps de parsing et d'exécution, ce qui peut impacter les Core Web Vitals, en particulier le LCP (Largest Contentful Paint) et l'INP (Interaction to Next Paint). Sur les appareils mobiles et les connexions lentes, la différence est encore plus notable.

Moins de code signifie aussi une surface d'attaque réduite : moins de lignes à auditer, moins d'endroits où des vulnérabilités peuvent se cacher.

C'est pourquoi chaque module Pithos est conçu pour n'embarquer que ce que vous utilisez réellement.

Nous n'essayons pas de tout remplacer. Nous essayons de :

  1. Couvrir 80% des besoins avec un impact minimal sur le bundle
  2. Rester compatible là où ça compte (API Neverthrow, shim Zod)
  3. Orienter vers le natif quand JavaScript a rattrapé son retard (Taphos)
  4. Rester honnête sur les cas où d'autres libs sont meilleures

Utilisez ce qui fonctionne pour vous. Mélangez si nécessaire.