
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
@usefillo/react
Advanced tools
Headless React components for embedding Fillo forms natively in your product.
Docs · Guides · Examples · Changelog
React components and hooks for embedding Fillo forms natively inside your product — rendered in your own DOM, with your styles, on your route. No iframe.
npm i @usefillo/react
react and react-dom (18 or 19) are peer dependencies.
"use client";
import { Fillo, when, createClient } from "@usefillo/react";
import "@usefillo/react/styles.css"; // optional default theme — or bring your own
const client = createClient({ key: process.env.NEXT_PUBLIC_FILLO_KEY });
export function ContactForm() {
return (
<Fillo.Form id="contact" title="Talk to us" client={client}>
<Fillo.Text id="name" label="Your name" required />
<Fillo.Email id="email" label="Work email" required />
<Fillo.Select id="topic" label="Topic" required>
<Fillo.Option id="sales" label="Sales" />
<Fillo.Option id="support" label="Support" />
</Fillo.Select>
<Fillo.LongText id="message" label="How can we help?"
visibleIf={when("topic").eq("support")} />
</Fillo.Form>
);
}
The first time this runs, the form appears in your Fillo workspace as a draft —
publish it there and responses, exports, webhooks, and integrations all work.
Prefer config over JSX? defineForm({ id, pages }) is first-class — JSX
compiles to it exactly. Authoring guide:
fillo.so/docs/authoring.
import { FilloForm } from "@usefillo/react";
<FilloForm formId="cust-feedback" onSubmitted={(r) => confetti()} />
<Fillo.Form
id="contact"
client={client}
appearance={{
theme: { primary: "#4f46e5", radius: "12px" }, // also themes your hosted page
classNames: {
control: "rounded-xl border-zinc-200 data-[invalid]:border-red-400",
option: "rounded-lg border p-3 data-[selected]:border-indigo-600",
button: (s) => (s.variant === "primary" ? "bg-indigo-600 text-white" : ""),
},
fields: { nps: { control: "grid grid-cols-11 gap-1" } },
}}
>
Every rendered part carries a named slot and state attributes
(data-invalid, data-selected, …), and the default stylesheet is
cascade-layered so your utilities always win. Styling contract:
fillo.so/docs/styling.
Every part is replaceable — and every embed method is free:
components / customComponents — swap any field kind for your own<FilloProvider> + <FormField> / useField() — your layout, Fillo's engineuseFilloController() — the bare engine for total controlHeadless guide: fillo.so/docs/custom-ui.
MIT licensed.
FAQs
Headless React components for embedding Fillo forms natively in your product.
The npm package @usefillo/react receives a total of 92 weekly downloads. As such, @usefillo/react popularity was classified as not popular.
We found that @usefillo/react demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.