Web Components
Pure custom elements (Stencil). No framework dependency.
bun add @streamline-pulse/formkrafter-wcA drag & drop form builder and renderer that works in plain HTML, React, Vue or React Native — with validation, dynamic rules, nested forms and i18n built in.
$ bun add @streamline-pulse/formkrafter-react
Every form is a JSON tree of bricks — fields, panels, validations, rules. Exportable, diffable, storable anywhere.
{ id: 'email', validations: [required] }The same spec compiles to an Ajv schema — client-side in real time, server-side with the exact same verdict.
validateFormData(spec, data, 'fr')One spec, four renderers: plain Web Components, React, Vue or React Native — pick per app, keep one source of truth.
<FkFormRender spec={spec} />Pure custom elements (Stencil). No framework dependency.
bun add @streamline-pulse/formkrafter-wcThin wrappers generated from the web components — typed props and events.
bun add @streamline-pulse/formkrafter-reactSame surface, native Vue components.
bun add @streamline-pulse/formkrafter-vueA native-primitive renderer for React Native and Expo. Same specs, same rules, same validation.
bun add @streamline-pulse/formkrafter-react-nativeWeb Components at the core; React and Vue wrappers generated from the same source.
~130 KB gzipped for a page running the full builder. Lazy-loaded code editor, zero CSS framework.
JSON Logic or JS sandboxed by an AST interpreter: CSP-safe, execution budget.
Forms as portable JSON. RFC 6902 patches both ways, built-in undo/redo.
convertFormioForm migrates fields, wizards, validations and uploads — reports the rest.
Content and builder chrome localized; English and French shipped, extendable.
import { useState } from 'react'
import { FkFormBuilder, FkFormRender } from '@streamline-pulse/formkrafter-react'
import '@streamline-pulse/formkrafter-wc/styles.css'
export function FormStudio() {
const [spec, setSpec] = useState()
return (
<>
<FkFormBuilder onSpecChange={(e) => setSpec(e.detail.spec)} />
{spec && (
<FkFormRender
spec={spec}
onFormSubmit={(e) => console.log(e.detail.data)}
/>
)}
</>
)
}Cut your gzipped form-stack weight by ~3.5×, drop Bootstrap, and watch stored definitions shrink 3–5.5× on real production exports.
Case management, approvals, admin consoles — the forms your ops team touches every day.
Multi-language public forms, official documents, conditional eligibility rules.
KYC flows, product onboarding, feedback — wizards with per-step validation.
Give your own customers a form builder — white-label the palette, keep your data model.
Add FormKrafter to the app you already have.
$ bun add @streamline-pulse/formkrafter-react