Getting Started
Getting started
Build dynamic React forms powered by JSON schemas, modifiers, and subforms. Create complex, adaptive form systems without boilerplate β designed for scale, simplicity, and composability.
Installation
Step-by-step guides to setting up ReactFast Forms in your project.
Quick Start
Get up and running with your first ReactFast Form in minutes.
Field Types
Explore 20+ builtβin field types from text to file uploads.
Custom Fields
Extend ReactFast Forms with your own field components.
ReactFast Forms makes building complex forms simple. Define your fields as JSON, add conditional logic with rules and triggers, and let ReactFast Forms handle the rest. Perfect for surveys, applications, data collection, and any formβheavy application.
Quick start
Get ReactFast Forms running in your project in under 5 minutes.
Installing dependencies
Install ReactFast Forms and its peer dependencies:
npm install @reactfast/forms react react-dom
ReactFast Forms requires React 18+ and React DOM 18+ as peer dependencies.
React Version Requirement
Make sure you're using React 18 or higher. ReactFast Forms uses modern React features that aren't available in older versions.
Your first form
Create a simple form with just a few lines of code:
import { useState } from "react";
import { FastForm, createFormHandler } from "@reactfast/forms";
const fields = [
{ name: "firstName", title: "First Name", type: "string", width: 50 },
{ name: "lastName", title: "Last Name", type: "string", width: 50 },
{ name: "email", title: "Email", type: "email", width: 100 },
{ name: "subscribe", title: "Subscribe?", type: "boolean", width: 100 },
];
export default function App() {
const [formData, setFormData] = useState({});
const handleChange = createFormHandler({
fields,
setState: setFormData,
});
return (
<FastForm
fields={fields}
onChange={handleChange}
formData={formData}
/>
);
}
That's it! You now have a fully functional form with validation, responsive layout, and state management.
Pro Tip
The createFormHandler function automatically handles form state updates and applies any rules or modifiers you define. It's the heart of ReactFast Forms' power.
Key features
ReactFast Forms comes packed with features that make form building effortless:
β‘ Controlled forms
Simple value/onChange pattern like React inputs, but with automatic state management.
π§© Composable architecture
Each field is a reusable React component that you can customize or extend.
π Advanced conditional logic
Dynamic show/hide, disable, and field dependencies with a powerful rules system.
π± Responsive layout
Automatic width handling with Tailwind classes β no CSS required.
π§± Subforms & arrays
Nested or repeated field groups are first-class citizens.
π¨ Theming-ready
Customize UI with Tailwind or your own design system.
π Extensible
Register your own field components via registerField().
Built-in field types
ReactFast Forms includes 20+ field types ready to use:
| Type | Description | Example |
|---|---|---|
string | Text input | { type: "string", title: "Name" } |
email | Email input with validation | { type: "email", title: "Email" } |
boolean | Checkbox | { type: "boolean", title: "Subscribe" } |
select | Single select dropdown | { type: "select", options: [...] } |
array | Dynamic subform/array | { type: "array", fields: [...] } |
file | File upload | { type: "file", title: "Upload" } |
signature | Signature pad | { type: "signature", title: "Signature" } |
And many more! See the Field Types documentation for the complete list.
Getting help
Need help getting started or have questions about ReactFast Forms?
Submit an issue
Found a bug or have a feature request? We'd love to hear from you:
- π Report a bug
- π‘ Request a feature
- π View documentation
Join the community
Connect with other ReactFast Forms users and contributors:
ReactFast Forms is maintained by Jonathon McClendon and the open source community. We welcome contributions and feedback!

