# Headless form builder for React

Last updated: 2026-08-01
Canonical URL: https://fillo.so/headless-form-builder

Fillo lets you build a form inside your app and use your own UI. It handles validation, file uploads, and responses without an iframe.

## What is a headless form builder?

A headless form builder renders the form directly inside your app instead of loading a vendor form in an iframe. You decide how it looks and behaves.

With Fillo:

- Build the fields in the Fillo editor or keep them in code.
- Render the form with React, the DOM package, or your own components.
- Use the same fields and rules in the browser and on Fillo's server.
- Review answers, app context, and uploaded files together.

## Minimal React example

```tsx
"use client";

import { Fillo, createClient } from "@usefillo/react";
import "@usefillo/react/styles.css";

const fillo = createClient({ key: process.env.NEXT_PUBLIC_FILLO_KEY! });

export function FeedbackForm() {
  return (
    <Fillo.Form client={fillo} id="product-feedback" title="Product feedback">
      <Fillo.Rating id="score" label="How is it going?" max={5} />
      <Fillo.LongText id="note" label="What should we fix?" />
    </Fillo.Form>
  );
}
```

## When Fillo works well

- The form belongs inside your product.
- It should use the same components and styling as the rest of your app.
- It needs file uploads, app context, or a shared response inbox.
- You do not want to build and maintain a separate form backend.

Use a hosted form when a standalone link is the right experience. Use a submission endpoint when the form is already built and only needs somewhere to send data. Use a self-hosted library when owning the renderer, backend, database, and file flow is intentional.

## Limits to know

- Fillo is free during early access. Published launch allowances are 200 completed responses per month on Free and 5,000 plus overage on Everything.
- The default renderer keeps a small Powered by Fillo badge on every plan. A fully headless layout has no Fillo layout or badge.
- Durable files require connected Google Drive, Box, or S3-compatible storage such as Amazon S3 or Cloudflare R2.
- Eligible new workspaces may start with temporary transit storage limited to 10 MB per file and 100 MB per workspace; completed files expire after seven days.

## Useful links

- Human overview: https://fillo.so/headless-form-builder
- React quickstart: https://fillo.so/guides/react-form
- Embed methods: https://fillo.so/docs/embed.md
- Custom UI: https://fillo.so/docs/custom-ui.md
- Plans and limits: https://fillo.so/docs/limits
- Compare form tools: https://fillo.so/compare
