VaForm component in pair with useForm composable provides a simple way to validate multiple form fields. It gives you isValid, errorMessages computed refs and validate method to validate all form fields at once. You can also reset validation with resetValidation method or reset whole form and its values with reset method.
If you don't like when form jumps you can name each form field and access its error messages with errorMessagesNamed with useForm composable and hide errors under form fields using hide-error-messages props, so you can display them in a custom way.
You can access formData to get access to value of named fields. Notice, that formData is not the same as native implementation of FormData, instead it is a reactive object which can contain string, number or Date values of form fields.
By default if you return Promise in validation rule it will be treated as async, set field in loading state and show error after promise resolved. If there is error in synchronous rule it will be shown immediately and async validation will not be triggered to prevent extra backend calls. You can use hide-loadingVaForm prop to hide loading state of form fields. You also can use asyncValidate method to validate form fields asynchronously.