An open API service indexing awesome lists of open source software.

https://github.com/ealush/vest

Vest ✅ Declarative validations framework
https://github.com/ealush/vest

form form-validation forms hacktoberfest javascript react-validation react-validation-library svelte-validation typescript unit-testing validation validation-library vue-validation

Last synced: about 2 months ago
JSON representation

Vest ✅ Declarative validations framework

Awesome Lists containing this project

README

          

# Vest - Declarative validations framework

![Vest](https://cdn.jsdelivr.net/gh/ealush/vest@assets/logo_250.png 'Vest')

[Vest Documentation](https://vestjs.dev)

[![Join Discord](https://badgen.net/discord/online-members/WmADZpJnSe?icon=discord&label=Discord)](https://discord.gg/WmADZpJnSe) [![Github Stars](https://badgen.net/github/stars/ealush/vest?color=yellow&label=Github%20🌟)](https://github.com/ealush/vest) [![Next Tag](https://badgen.net/npm/v/vest/next)](https://vestjs.dev/vest-5-is-ready) [![Version](https://badgen.net/npm/v/vest?&icon=npm)](https://www.npmjs.com/package/vest) [![Downloads](https://badgen.net/npm/dt/vest?label=Downloads)](https://www.npmjs.com/package/vest) [![bundlephobia](https://badgen.net/bundlephobia/minzip/vest)](https://bundlephobia.com/package/vest) [![Status](https://badgen.net/github/status/ealush/vest)](https://github.com/ealush/vest/actions)

---

Vest is a validation framework that looks and feels like a unit testing framework. It is designed to be easy to learn, highly maintainable, and framework-agnostic.

Write your validations as if they were unit tests, and run them in your app.

```js
import { create, test, enforce } from 'vest';

const suite = create(data => {
test('username', 'Username is required', () => {
enforce(data.username).isNotBlank();
});

test('username', 'Username must be at least 3 chars', () => {
enforce(data.username).longerThanOrEquals(3);
});

test('username', 'Username already taken', async () => {
await doesUserExist(data.username);
});
});

const result = await suite.run(formData);
```

## Why Vest?

Writing form validations can be messy. Vest cleans it up by separating validation logic from feature logic and providing a familiar, powerful syntax.

### 💡 Easy to Learn

Vest adopts the syntax and style of unit testing frameworks (Mocha, Jest). If you've written a test, you already know Vest.

### 🎨 Framework Agnostic

React, Vue, Svelte, Angular, or Vanilla JS - Vest works everywhere. It doesn't depend on your UI library.

### 🛡️ Type Safe

Vest is written in TypeScript and provides first-class type support, including typed suites and results.

### 🔌 Standard Schema Support

Vest implements the [Standard Schema](https://github.com/standard-schema/standard-schema) spec, making it a drop-in replacement for Zod or Yup in libraries like React Hook Form.

### ⚡ SSR & Hydration

Built-in support for server-side validation and state hydration (`runStatic`, `SuiteSerializer`), enabling seamless full-stack validation flows.

### 🧩 Extendable & Composable

Create custom rules, compose existing ones, or use the optional schema validation (`n4s`) to enforce data structure.

## Installation

```shell
npm i vest
```

## Getting Started

Check out the [Vest Documentation](https://vestjs.dev) for guides, API references, and examples.

### Playgrounds

- [React](https://codesandbox.io/s/react-vest-5-gdc698?file=/src/suite.js)
- [Vue](https://codesandbox.io/s/vue-vest-5-d1g236?file=/src/suite.js)
- [Svelte](https://codesandbox.io/s/svelte-vest-5-imnq9z?file=/suite.js)
- [Vanilla](https://codesandbox.io/s/vest-vanilla-js-vest-5-3v4pqk?file=/src/suite.js)

## Contribute

We welcome contributions! See [CONTRIBUTING.md](https://github.com/ealush/vest/blob/latest/CONTRIBUTING.md) for details.