🧬
Rule Inheritance
Create specialized rules from base rules. Override options, messages, or both without rewriting logic.
📊
Structured Errors
Get rich error objects with rule name, actual vs expected values, and full context for debugging.
🎨
Custom Messages
Use static strings or dynamic functions that receive error details for context-aware messages.
🔌
Framework Adapters
Same validation logic everywhere. Core for vanilla JS, adapters for Angular, React, and more.
⚡
Async Support
Built-in support for async validators. Perfect for server-side checks like username availability.
🪶
Lightweight
Zero runtime dependencies. Tree-shakeable ESM builds. Import only what you use.