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
| Module | vs | Taille du bundle (moyenne) | Performance (moyenne) |
|---|---|---|---|
| Arkhe | Lodash | 20.9× plus petit | 8.4× plus rapide |
| Kanon | Zod | 4.1× plus petit | 11.0× plus rapide |
| Zygos | Neverthrow | 2.7× plus petit | 1.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
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
pipeavec 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 :
- Couvrir 80% des besoins avec un impact minimal sur le bundle
- Rester compatible là où ça compte (API Neverthrow, shim Zod)
- Orienter vers le natif quand JavaScript a rattrapé son retard (Taphos)
- Rester honnête sur les cas où d'autres libs sont meilleures
Utilisez ce qui fonctionne pour vous. Mélangez si nécessaire.