Evyatar Alush

Form Validation. The Tested Way

What if your form validation logic was as clear and testable as your unit tests? Discover a declarative, framework-agnostic library that makes it possible.

Form Validation. The Tested Way
#1about 5 minutes

Why user experience with forms is often broken

A personal story about a frustrating tax form highlights common UX failures like unclear requirements and delayed feedback.

#2about 6 minutes

Analyzing common form validation patterns and their pitfalls

Existing validation solutions often lack structure, are hard to test, and create tight coupling with UI frameworks.

#3about 2 minutes

Adopting a unit testing syntax for declarative validations

Vest is inspired by unit testing libraries like Mocha and Jest to create declarative, readable, and separate validation suites.

#4about 5 minutes

Live coding: Setting up a basic validation suite in React

Learn how to create a validation suite with Vest, connect it to a React form, and display error messages for individual fields.

#5about 5 minutes

Refining validation UX with field isolation and warnings

Use Vest's `only` function to validate a single field on interaction and implement non-blocking warnings for optional suggestions.

#6about 7 minutes

Implementing complex asynchronous and memoized validations

Manage asynchronous server-side checks, skip them conditionally with `skipWhen`, and prevent redundant calls using memoization.

#7about 2 minutes

A summary of Vest's features and future roadmap

Vest is a tiny, stateful library that offers declarative, framework-agnostic validations, with a full TypeScript rewrite in version 4.

#8about 5 minutes

Q&A: Handling dynamic forms and global validation rules

Learn how to handle debounced async calls, define global rules by extending `enforce`, and manage dynamic forms with `test.each` or manual cleanup.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.