Fast & Lightweight
Framework-agnostic core with Vue 3 Composition API bindings. ~56KB gzipped.
Vue 3 forms with sensible defaults and reasonable escape hatches



If you're using Quasar, you get beautiful pre-styled components out of the box:
<script setup lang="ts">
import { ref } from 'vue'
import { DynamicForm } from '@quickflo/quickforms-vue'
import { createQuasarRegistry } from '@quickflo/quickforms-quasar'
import type { JSONSchema } from '@quickflo/quickforms'
const registry = createQuasarRegistry()
const schema: JSONSchema = {
type: 'object',
properties: {
name: {
type: 'string',
title: 'Full Name',
minLength: 2
},
email: {
type: 'string',
format: 'email',
title: 'Email'
},
age: {
type: 'number',
title: 'Age',
minimum: 18
}
},
required: ['name', 'email']
}
const formData = ref({})
// formData updates automatically as user types!
// Use it however you want: display, send to API, etc.
</script>
<template>
<DynamicForm
:schema="schema"
v-model="formData"
:options="{ registry }"
/>
</template>See Quasar Package Docs for all Quasar-specific options.
Use the plain Vue package with your own styling:
<script setup lang="ts">
import { ref } from 'vue'
import { DynamicForm } from '@quickflo/quickforms-vue'
import type { JSONSchema } from '@quickflo/quickforms'
const schema: JSONSchema = { /* same schema as above */ }
const formData = ref({})
</script>
<template>
<DynamicForm
:schema="schema"
v-model="formData"
/>
</template>See Vue Package Docs for plain Vue options.
pnpm add @quickflo/quickforms @quickflo/quickforms-vue @quickflo/quickforms-quasarnpm install @quickflo/quickforms @quickflo/quickforms-vue @quickflo/quickforms-quasaryarn add @quickflo/quickforms @quickflo/quickforms-vue @quickflo/quickforms-quasarJSON Schema form libraries are powerful but often rigid. QuickForms provides escape hatches at common pain points:
x-enum-labelshintRenderer for full controlSensible defaults, clear customization paths. No rebuilding components.