---
title: "FAQ"
description: "Short answers to common questions about NotForm's scope, validators, SSR, multiple forms, and styling."
canonical_url: "https://notformdocs.vercel.app/docs/reference/faq"
---

> Index of every page on this site: [llms.txt](https://notformdocs.vercel.app/llms.txt)

## Does NotForm include UI components?

No. NotForm is headless. It renders a native `<form>` and passes state to your own markup or your component library. See [Integrations](https://notformdocs.vercel.app/docs/integrations/custom-components).

## Which validators work?

Any library that implements [Standard Schema](https://standardschema.dev) and produces an **object** schema. Zod, Valibot, and ArkType are common choices. NotForm has no validation rules of its own.

## Do I need a schema?

Yes. `schema` is required. It is how NotForm types your values and how validation runs.

## Can I use more than one form on a page?

Yes. Each `useForm` call creates an independent form with its own values, errors, and state.

## Does it work with SSR and Nuxt?

Yes. NotForm creates its state during setup without needing browser APIs. Use [`@notform/nuxt`](https://notformdocs.vercel.app/docs/getting-started/nuxt-module) for auto-imports.

## Which Vue version is required?

Vue 3.5 or later.

## Can the schema change at runtime?

Yes. Pass a ref or a getter as `schema`. See [Validation](https://notformdocs.vercel.app/docs/guides/validation#reactive-schemas).

## Why is the form value a string when my schema outputs a number?

`form.values` holds the schema **input**, which is what the control edits. Your submit handler receives the **output**. See [Schema input and output](https://notformdocs.vercel.app/docs/guides/schema-input-output).

## How do I validate on every keystroke?

Set `validateOn: { input: true }` on the field. See [Validation](https://notformdocs.vercel.app/docs/guides/validation#presets).

## How do I validate only on submit?

Disable blur and change validation and use lazy mode. See the "Validate on submit only" preset in [Validation](https://notformdocs.vercel.app/docs/guides/validation#presets).

## How do I show errors returned by my API?

Call `form.setError({ message, path })`. See [Server errors](https://notformdocs.vercel.app/docs/recipes/server-errors).

## How do I load saved data into a form?

Pass it as `initialValues`, or call `form.reset(values)` when it arrives. See [Editing existing data](https://notformdocs.vercel.app/docs/recipes/editing-existing-data).

## How do I pass a form to a child component?

Type the prop as `UseFormInstance<typeof schema>`. See [TypeScript](https://notformdocs.vercel.app/docs/guides/typescript#pass-a-form-to-a-child-component).

## Can I use it with my component library?

Yes. Map the control's value to `field.model` and its events to `field.events`. See [Custom components](https://notformdocs.vercel.app/docs/integrations/custom-components), [Nuxt UI](https://notformdocs.vercel.app/docs/integrations/nuxt-ui) and [ShadcnVue](https://notformdocs.vercel.app/docs/integrations/shadcn-vue).

## Can I use NotForm with an AI coding assistant?

Yes. See [Working with AI](https://notformdocs.vercel.app/docs/ai/working-with-ai).

## Sitemap

See the full [sitemap](https://notformdocs.vercel.app/sitemap.md) for all pages.
