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

https://github.com/kom50/formik-validation-adaptors

A lightweight utility to integrate Zod and Joi validation with Formik.
https://github.com/kom50/formik-validation-adaptors

adaptors formik joi package validation zod

Last synced: 29 days ago
JSON representation

A lightweight utility to integrate Zod and Joi validation with Formik.

Awesome Lists containing this project

README

          

# Formik Validation Adaptors

A lightweight utility package that provides validation adaptors for Formik using popular validation libraries like **Zod** and **Joi**. Easily integrate robust validation into your Formik forms with minimal setup.

## Installation

```bash
npm i formik-validation-adaptors
```

## Live Demo

[![Live Demo](https://img.shields.io/badge/demo-live-green)](https://stackblitz.com/edit/vitejs-vite-vvbccumy?file=src%2FFormikValidationWithZod.tsx)

## Features

- Zod Adaptor: Validate Formik forms using Zod, a TypeScript-first schema validation library.
- Joi Adaptor: Validate Formik forms using Joi, a powerful schema description language and validator.
- Lightweight: Only includes the validation logic you need.
- TypeScript Support: Fully typed for better developer experience.

## Usage

#### Zod Adaptor

Validate Formik forms using Zod schemas.

```js
import { formikZodValidator } from "formik-validation-adaptors";
import { z } from "zod";
import { Formik, Form, Field } from "formik";

const schema = z.object({
name: z.string().min(1, "Name is required"),
email: z.string().email("Invalid email"),
});

const initialValues = {
name: "",
email: "",
};

const FormikValidationWithZod = () => (
console.log(values)}
>
{({ errors }) => (


{errors.name &&

{errors.name}
}

{errors.email &&
{errors.email}
}


Submit

)}

);

export default FormikValidationWithZod;
```

#### Joi Adaptor

Validate Formik forms using Joi schemas.

```js
import { formikJoiValidator } from "formik-validation-adaptors";
import Joi from "joi";
import { Formik, Form, Field } from "formik";

const schema = Joi.object({
name: Joi.string().required().messages({
"string.empty": "Name is required",
}),
email: Joi.string()
.email({ tlds: { allow: false } })
.required()
.messages({
"string.email": "Invalid email",
"string.empty": "Email is required",
}),
});

const initialValues = {
name: "",
email: "",
};

const FormikValidationWithJoi = () => (
console.log(values)}
>
{({ errors }) => (


{errors.name &&

{errors.name}
}

{errors.email &&
{errors.email}
}
Submit

)}

);

export default FormikValidationWithJoi;
```

#### Vest Adaptor

Validate Formik forms using Vest, a unit-testing-style validation framework.

```js
import { formikVestValidator } from "formik-validation-adaptors";
import { create, test, enforce } from "vest";
import { Formik, Form, Field } from "formik";

// Define a Vest validation suite
const suite = create((data) => {
test("name", "Name is required", () => {
enforce(data.name).isNotEmpty();
});

test("email", "Invalid email format", () => {
enforce(data.email).matches(/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/);
});

test("password", "Password must be at least 6 characters", () => {
enforce(data.password).longerThanOrEquals(6);
});
});

const initialValues = {
name: "",
email: "",
password: "",
};

const FormikValidationWithVest = () => (
console.log(values)}
>
{({ errors }) => (


{errors.name &&

{errors.name}
}


{errors.email &&

{errors.email}
}


{errors.password &&

{errors.password}
}

Submit

)}

);

export default FormikValidationWithVest;
```

## Why Use This Package?

- **Seamless Integration**: Easily integrate Zod or Joi validation with Formik.
- **Type Safety**: Built with TypeScript for better type inference and error handling.
- **Flexibility**: Supports both Zod and Joi validation libraries.
- **Customizable**: Use your preferred validation library without additional boilerplate.
- **Lightweight**: Only includes the validation logic you need, keeping your bundle size small.

## Author

Maintained by [@kom50](https://github.com/kom50).