Docs ·
Guides ·
Examples ·
Changelog
The framework-agnostic core of Fillo — forms that render inside your own product, with your UI, no iframe.
This package holds the shared foundation: the form schema, validation, the conditional-logic engine, response prefill/piping, and a JS client for provider-aware browser-direct uploads, with resume support where the storage provider offers it. It has zero framework dependencies.
Most apps don't install this directly — you install a renderer (@usefillo/react or @usefillo/dom), which re-exports everything here you need for embedding. Reach for @usefillo/core when you're building your own renderer or working with forms on the server.
npm i @usefillo/core
import { createClient, defineForm, validateResponse, visibleBlocks } from "@usefillo/core";
const client = createClient({ key: "pk_…" });
const form = defineForm({
id: "cust-feedback",
pages: [{ id: "p1", blocks: [
{ id: "email", kind: "email", label: "Work email", required: true },
{ id: "msg", kind: "long_text", label: "What should we know?" },
] }],
});
Published renderer embeds can fetch by formId without a key. Use a client object for custom API origins, uploads, or submissions from your own renderer; add a publishable key only when syncing defineForm() schemas from code.
The full export surface — client methods, schema types, validation, conditional logic, appearance and localization contracts — is documented in the API reference.
Links
MIT licensed.