Skip to content

Configuration

QForm Builder does not require a dedicated configuration file. Most settings live on the public components, which keeps the Nuxt integration easy to read.

Minimal convention

vue
<FormBuilder
  builder-id="contact"
  locale="en"
  height="calc(100vh - 32px)"
  autosave
/>
PropRecommended use
builder-idStable identifier for the form or editing screen.
localefr by default, en included.
heightBuilder shell height in the page.
autosaveLocal safety save while editing.
storage-keyExplicit key when several builders share the same page.

Language

vue
<FormBuilder builder-id="support" locale="en" />
<FormViewer :schema="schema" :values="values" locale="fr" />

You can override part of the labels without copying the full dictionary:

ts
import type { QFormBuilderLocaleRegistry } from '@vevedh/qform-builder-layer/types'

const locales: QFormBuilderLocaleRegistry = {
  en: {
    toolbar: {
      save: 'Publish',
    },
  },
}
vue
<FormBuilder builder-id="support" locale="en" :locales="locales" />

Persistence

The builder does not impose a backend. Listen to @save, validate the payload in your application, then store the document in your service.

ts
type SavedForm = {
  id: string
  schema: unknown[]
  values: Record<string, unknown>
  settings: Record<string, unknown>
  updatedAt: string
}

async function saveForm(payload: SavedForm) {
  await $fetch('/api/forms/' + encodeURIComponent(payload.id), {
    method: 'PUT',
    body: payload,
  })
}

Keep server-side validation mandatory: a schema received from an admin UI is still user input.

Drawer width

The default behavior is auto-fit. The builder uses its own available width, not only window.innerWidth.

vue
<FormBuilder
  builder-id="embedded-builder"
  drawer-behavior="default"
  height="720px"
/>

Available values:

ValueEffect
defaultAuto-fit according to available space.
desktopPersistent drawers.
mobileOverlay drawers.

Style safety

The Styles panel uses a closed list of presets, Quasar tones and prefixed UnoCSS utilities. Do not pass free-form classes from an end user into the schema.

vue
<FormViewer
  :schema="schema"
  :values="values"
  locale="en"
/>

The runtime removes builder metadata before FormKit rendering.

Project checklist

  • keep builder-id stable;
  • choose an explicit storage key for complex screens;
  • validate schemas server-side before persistence;
  • keep binary files outside the form JSON;
  • render the form with FormViewer in a separate page before publishing it.

QForm Builder — Nuxt 4, Quasar and FormKit layer for dynamic forms.