# Vest 6 > Vest is a framework-agnostic form validation library for JavaScript that derives its syntax from modern unit testing frameworks like Mocha or Jest. It supports React, Vue, Svelte, and vanilla JS. - [Full Documentation (All-in-one)](/llms-full.txt) - [LLM Coding Instructions](/LLM_INSTRUCTIONS.md) ## Key Concepts - **Stateful Validation**: Vest manages validation state (pending, failed, valid) across renders. - **Focused Updates**: Validate only specific fields (e.g., on blur) using `only()` or `skip()` while retaining the state of others. - **Conditional Inclusion**: Use `skipWhen`, `omitWhen`, and `include` to dynamically control which tests run. - **Optional Fields**: Mark fields as optional to allow them to be empty or valid. ## Advanced Features - **Async Tests**: Native Promise support for server-side checks. - **Server-Side Validation**: Stateless runs using `runStatic` and state serialization/hydration. - **Schema Validation**: Structural validation using `enforce` schemas. - **Type Safety**: TypeScript support for suites and enforce rules. ## Core Documentation - [Getting Started with Vest](/docs/get_started) - [Vest's core concepts](/docs/concepts) - [Comparing Vest to Other Form Validation Libraries](/docs/vest_vs_the_rest) - [Api reference](/docs/api_reference) - [Server-Side Rendering (SSR)](/docs/suite_serialization) - [Understanding Vest's State](/docs/understanding_state) - [Server-Side & SSR](/docs/server_side_validations) - [Typescript Support](/docs/typescript_support) - [Upgrade guides](/docs/upgrade_guide) ## Writing Your Suite - [Including and Excluding Fields in Vest](/docs/writing_your_suite/including_and_excluding/skip_and_only) - [The Suite Object](/docs/writing_your_suite/vests_suite) - [Accessing Vest's Result](/docs/writing_your_suite/accessing_the_result) - [skipWhen for conditionally skipping tests](/docs/writing_your_suite/including_and_excluding/skipWhen) - [Schema Validation](/docs/writing_your_suite/schema_validation) - [Focused Updates](/docs/writing_your_suite/focused_updates) - [Handling Suite Completion](/docs/writing_your_suite/handling_completion) - [conditionally omit tests from the suite](/docs/writing_your_suite/including_and_excluding/omitWhen) - [Optional fields](/docs/writing_your_suite/optional_fields) - [Execution Modes](/docs/writing_your_suite/execution_modes) - [Linking fields together](/docs/writing_your_suite/including_and_excluding/include) - [Handling User Interaction](/docs/writing_your_suite/dirty_checking) ## Writing Tests - [Memoizing Tests](/docs/writing_tests/advanced_test_features/memo) - [The Test Function](/docs/writing_tests/the_test_function) - [Dynamic Tests & Arrays](/docs/writing_tests/advanced_test_features/dynamic_tests) - [Async Validations](/docs/writing_tests/async_tests) - [Test Groups](/docs/writing_tests/advanced_test_features/grouping_tests) - [Failing with a custom message](/docs/writing_tests/failing_with_a_custom_message) - [Debouncing Tests](/docs/writing_tests/advanced_test_features/debounce) - [Warn only tests](/docs/writing_tests/warn_only_tests) ## Enforce (Assertions) - [Builtin enforce plugins](/docs/enforce/builtin-enforce-plugins/plugins) - [enforce](/docs/enforce/enforce) - [isEmail enforce Rule](/docs/enforce/builtin-enforce-plugins/email) - [All Enforce Rules](/docs/enforce/enforce_rules) - [Date Enforce Rules](/docs/enforce/builtin-enforce-plugins/date) - [Compound Rules](/docs/enforce/builtin-enforce-plugins/compound_rules) - [isURL enforce Rule](/docs/enforce/builtin-enforce-plugins/isUrl) - [Creating custom enforce rules](/docs/enforce/creating_custom_rules) - [Schema Validation with Enforce](/docs/enforce/builtin-enforce-plugins/schema_rules) - [Consuming third party rules](/docs/enforce/consuming_external_rules) - [Data Parsers](/docs/enforce/builtin-enforce-plugins/data_parsers) - [Enforce Rules Composition](/docs/enforce/composing_enforce_rules) - [Failing with a message](/docs/enforce/failing_with_a_message) ## Framework Integration - [React](/docs/usage_with_frameworks/react) - [Vue](/docs/usage_with_frameworks/vue) ## Utilities - [Utility - Classnames](/docs/utilities/classnames) ## Recipes - [Recipe- "any" test - at least one must pass](/docs/recipes/any_test) - [Recipe - focus({ skip / skipGroup / onlyGroup }) patterns](/docs/recipes/focus_skipgroup_recipes) - [Recipe- validating typescript enums](/docs/recipes/typescript_enums) ## Community Resources - [integrations](/docs/community_resources/integrations) - [tutorials](/docs/community_resources/tutorials) - [showcase](/docs/community_resources/showcase) - [Standard Schema](/docs/community_resources/standard_schema)