# vee-validate

> Painless forms for Vue.js

Latest version **4.15.1** (published 2025-06-07) · MIT license · 836.4K weekly downloads

## Install

```sh
npm install vee-validate
pnpm add vee-validate
yarn add vee-validate
bun add vee-validate
```

## Health

**Score 70/100 (B)** — status: stable.

Positive: moderate downloads; has types; esm support; no vulnerabilities; has provenance; popular repo.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 4.15.1 |
| Published | 2025-06-07 |
| First published | 2016-08-15 |
| Weekly downloads | 836.4K |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 499.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 11264 |
| Author | Abdelrahman Awad |
| Maintainers | logaretm |
| Keywords | VueJS, Vue, validation, validator, inputs, form |

## Links

- npm: https://www.npmjs.com/package/vee-validate
- Repository: https://github.com/logaretm/vee-validate
- Homepage: https://vee-validate.logaretm.com/
- Issues: https://github.com/logaretm/vee-validate/issues
- npm.io page: https://npm.io/package/vee-validate

## Dependencies (2)

- [type-fest](https://npm.io/package/type-fest.md) ^4.8.3
- [@vue/devtools-api](https://npm.io/package/@vue/devtools-api.md) ^7.5.2

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [formstream](https://npm.io/package/formstream.md) — 513.4K weekly downloads

## Recent versions

- 4.15.1 (latest) — 2025-06-07
- 5.0.0-beta.0 (beta) — 2025-08-02
- 4.12.0-alpha.1 (alpha) — 2023-11-05
- 4.5.8 (next) — 2022-01-23
- 4.5.0-alpha.6 (edge) — 2021-08-31
- 4.5.0-alpha.2 (next-edge) — 2021-07-08
- 1.0.0-beta.10 (prev) — 2016-11-27
- 5.0.0-beta.1 — 2026-03-04
- 4.15.0 — 2024-12-22
- 4.14.7 — 2024-11-08
- 4.14.6 — 2024-10-26
- 4.14.5 — 2024-10-26
- 4.14.4 — 2024-10-23
- 4.14.3 — 2024-10-18
- 4.14.2 — 2024-10-18
- … 332 more at https://npm.io/package/vee-validate/versions

## README

<p align="center">
  <a href="https://vee-validate.logaretm.com" target="_blank">
    <img src="https://raw.githubusercontent.com/logaretm/vee-validate/main/logo.png" width="200" title="Go to website">
  </a>
</p>

<p align="center">
Painless Vue forms
</p>

<p align="center">

<a target="_blank" href="https://www.npmjs.com/package/vee-validate">
  <img src="https://img.shields.io/npm/v/vee-validate.svg?label=&color=05bda8">
</a>

<a target="_blank" href="https://npm-stat.com/charts.html?package=vee-validate">
  <img src="https://img.shields.io/npm/dm/vee-validate.svg?color=05bd6d&label=">
</a>

<a href="https://vee-validate.logaretm.com/v4/" target="_blank">
  <img src="https://img.shields.io/badge/-docs%20and%20demos-009f53">
</a>

<a href="https://github.com/sponsors/logaretm">
  <img src="https://img.shields.io/badge/-%E2%99%A5%20Sponsors-ec5cc6">

</a>

</p>

<br>

<p align="center">
  <a href="https://github.com/sponsors/logaretm">
    <img src='https://sponsors.logaretm.com/sponsors.svg'>
  </a>
</p>

<br>

## Features

- **🍞 Easy:** Declarative validation that is familiar and easy to setup
- **🧘‍♀️ Flexible:** Synchronous, Asynchronous, field-level or form-level validation
- **⚡️ Fast:** Build faster forms faster with intuitive API and small footprint
- **🏏 Minimal:** Only handles the complicated form concerns, gives you full control over everything else
- **😎 UI Agnostic:** Works with native HTML elements or your favorite UI library components
- **🦾 Progressive:** Works whether you use Vue.js as a progressive enhancement or in a complex setup
- **✅ Built-in Rules:** Companion lib with 25+ Rules that covers most needs in most web applications
- **🌐 i18n:** 45+ locales for built-in rules contributed by developers from all over the world

## Getting Started

### Installation

```sh
# Install with yarn
yarn add vee-validate

# Install with npm
npm install vee-validate --save
```

### Vue version support

The main v4 version supports Vue 3.x only, for previous versions of Vue, check the following the table

| vue Version | vee-validate version | Documentation Link                                                                       |
| ----------- | -------------------- | ---------------------------------------------------------------------------------------- |
| `2.x`       | `2.x` or `3.x`       | [v2](https://vee-validate.logaretm.com/v2) or [v3](https://vee-validate.logaretm.com/v3) |
| `3.x`       | `4.x`                | [v4](https://vee-validate.logaretm.com/v4)                                               |

### Usage

vee-validate offers two styles to integrate form validation into your Vue.js apps.

#### Composition API

The fastest way to create a form and manage its validation, behavior, and values is with the composition API.

Create your form with `useForm` and then use `defineField` to create your field model and props/attributes and `handleSubmit` to use the values and send them to an API.

```vue
<script setup>
import { useForm } from 'vee-validate';

// Validation, or use `yup` or `zod`
function required(value) {
  return value ? true : 'This field is required';
}

// Create the form
const { defineField, handleSubmit, errors } = useForm({
  validationSchema: {
    field: required,
  },
});

// Define fields
const [field, fieldProps] = defineField('field');

// Submit handler
const onSubmit = handleSubmit(values => {
  // Submit to API
  console.log(values);
});
</script>

<template>
  <form @submit="onSubmit">
    <input v-model="field" v-bind="fieldProps" />
    <span>{{ errors.field }}</span>

    <button>Submit</button>
  </form>
</template>
```

You can do so much more than this, for more info [check the composition API documentation](https://vee-validate.logaretm.com/v4/guide/composition-api/getting-started/).

#### Declarative Components

Higher-order components can also be used to build forms. Register the `Field` and `Form` components and create a simple `required` validator:

```vue
<script setup>
import { Field, Form } from 'vee-validate';

// Validation, or use `yup` or `zod`
function required(value) {
  return value ? true : 'This field is required';
}

// Submit handler
function onSubmit(values) {
  // Submit to API
  console.log(values);
}
</script>

<template>
  <Form v-slot="{ errors }" @submit="onSubmit">
    <Field name="field" :rules="required" />

    <span>{{ errors.field }}</span>

    <button>Submit</button>
  </Form>
</template>
```

The `Field` component renders an `input` of type `text` by default but you can [control that](https://vee-validate.logaretm.com/v4/api/field#rendering-fields)

## 📚 Documentation

Read the [documentation and demos](https://vee-validate.logaretm.com/v4).

## Contributing

You are welcome to contribute to this project, but before you do, please make sure you read the [contribution guide](/CONTRIBUTING.md).

## Credits

- Inspired by Laravel's [validation syntax](https://laravel.com/docs/5.4/validation)
- v4 API Inspired by [Formik's](https://github.com/formium/formik)
- Nested path types by [react-hook-form](https://github.com/react-hook-form/react-hook-form)
- Logo by [Baianat](https://github.com/baianat)

## Emeriti

Here we honor past contributors and sponsors who have been a major part on this project.

- [Baianat](https://github.com/baianat).

## ⚖️ License

Released under [MIT](/LICENSE) by [@logaretm](https://github.com/logaretm).

---
_Source: https://npm.io/package/vee-validate · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
