# Formisch > The lightweight, schema-first and fully type-safe form library for Angular, Preact, Qwik, React, React Native, Solid, Svelte and Vue. ## Hooks ### useForm Creates a reactive form store from a form configuration. The form store manages form state and provides reactive properties. ```ts const form = useForm(config); ``` #### Generics - `TSchema` `extends FormSchema` #### Parameters - `config` `FormConfig` ##### Explanation `useForm` creates a reactive form store that manages form state using the provided Valibot schema. Validation runs when the form is submitted by default, after which fields revalidate on every input, but this can be customized with the `validate` and `revalidate` options. Since React Native has no native form element or submit event, there is no `
` component. Instead, submission is triggered explicitly with the [`handleSubmit`](/methods/api/handleSubmit.md) method, for example from a button's `onPress` or a text input's `onSubmitEditing` handler. #### Returns - `form` `FormStore` #### Examples The following examples show how `useForm` can be used. ##### Login screen ```tsx import { Field, handleSubmit, useForm } from '@formisch/react-native'; import { Button, Text, TextInput, View } from 'react-native'; import * as v from 'valibot'; const LoginSchema = v.object({ email: v.pipe(v.string(), v.email()), password: v.pipe(v.string(), v.minLength(8)), }); export default function LoginScreen() { const loginForm = useForm({ schema: LoginSchema, }); const submitForm = handleSubmit(loginForm, (output) => console.log(output)); return ( {(field) => ( {field.errors && {field.errors[0]}} )} {(field) => ( {field.errors && {field.errors[0]}} )}