Data validation is your application's first line of defense. Invalid data causes bugs, security vulnerabilities, and corrupted databases. Robust validation catches problems early and provides clear feedback to users and developers.
Validation Principles
Validate at Boundaries
External input → Validation → Internal processing
Boundaries:
- API endpoints
- Form submissions
- File uploads
- Database reads (legacy data)
- Third-party API responses
- Environment variables
Fail Fast
Schema Validation with Zod
Basic Schemas
Complex Schemas
Transformations
Refinements
API Validation
Express Middleware
tRPC Integration
Form Validation
React Hook Form + Zod
Database Validation
Prisma Integration
Database Constraints as Backup
Environment Validation
At Startup
Error Messages
User-Friendly Messages
Error Formatting
Sanitization
Input Sanitization
Testing Validation
Best Practices
1. Single Source of Truth
2. Composition
3. Graceful Degradation
Conclusion
Validation is not optional—it's essential for security, reliability, and user experience. Use schema validation libraries like Zod for type-safe, composable validation that works across your entire stack.
Validate at every boundary, fail fast with clear errors, and test your validation logic thoroughly. The effort invested in robust validation pays dividends in prevented bugs and security issues.