{"id":34243985,"url":"https://github.com/open-circle/formisch","last_synced_at":"2026-05-25T04:04:55.854Z","repository":{"id":304764784,"uuid":"960779003","full_name":"open-circle/formisch","owner":"open-circle","description":"The modular and type-safe form library for any framework","archived":false,"fork":false,"pushed_at":"2026-02-19T14:07:34.000Z","size":2756,"stargazers_count":614,"open_issues_count":15,"forks_count":15,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-19T17:36:00.732Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://formisch.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-circle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["fabian-hiller"],"open_collective":"valibot"}},"created_at":"2025-04-05T03:46:25.000Z","updated_at":"2026-02-19T14:07:38.000Z","dependencies_parsed_at":"2025-07-15T07:32:59.907Z","dependency_job_id":"e667a3fb-d50d-457a-8351-226498cb1b79","html_url":"https://github.com/open-circle/formisch","commit_stats":null,"previous_names":["fabian-hiller/formisch","open-circle/formisch"],"tags_count":100,"template":false,"template_full_name":null,"purl":"pkg:github/open-circle/formisch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-circle%2Fformisch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-circle%2Fformisch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-circle%2Fformisch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-circle%2Fformisch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-circle","download_url":"https://codeload.github.com/open-circle/formisch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-circle%2Fformisch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"online","status_checked_at":"2026-03-07T02:00:06.765Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-16T05:18:12.306Z","updated_at":"2026-05-25T04:04:55.847Z","avatar_url":"https://github.com/open-circle.png","language":"TypeScript","funding_links":["https://github.com/sponsors/fabian-hiller","https://opencollective.com/valibot"],"categories":["TypeScript"],"sub_categories":[],"readme":"# Formisch\n\nFormisch is a schema-based, headless form library for JS frameworks. It manages form state and validation. It is type-safe, fast by default and its bundle size is small due to its modular design. Try it out in our [playground](https://stackblitz.com/edit/formisch-playground-solid)!\n\nSupported frameworks: [Preact][formisch-preact], [Qwik][formisch-qwik], [React][formisch-react], [SolidJS][formisch-solid], [Svelte][formisch-svelte] and [Vue][formisch-vue].\n\n## Highlights\n\n- Small bundle size starting at 2.5 kB\n- Schema-based validation with Valibot\n- Type safety with autocompletion in editor\n- It's fast – DOM updates are fine-grained\n- Minimal, readable and well thought out API\n- Supports all native HTML form fields\n\n## Example\n\nIn SolidJS a form starts with the `createForm` primitive. It initializes your form's store based on the provided Valibot schema and infers its types. Next, wrap your form in the `\u003cForm /\u003e` component. It's a thin layer around the native `\u003cform /\u003e` element that handles form validation and submission. Then, you can access the state of a field with the `useField` primitive or the `\u003cField /\u003e` component to connect your inputs.\n\n```tsx\nimport { createForm, Field, Form } from '@formisch/solid';\nimport * as v from 'valibot';\n\nconst LoginSchema = v.object({\n  email: v.pipe(v.string(), v.email()),\n  password: v.pipe(v.string(), v.minLength(8)),\n});\n\nexport default function LoginPage() {\n  const loginForm = createForm({\n    schema: LoginSchema,\n  });\n\n  return (\n    \u003cForm of={loginForm} onSubmit={(output) =\u003e console.log(output)}\u003e\n      \u003cField of={loginForm} path={['email']}\u003e\n        {(field) =\u003e (\n          \u003cdiv\u003e\n            \u003cinput {...field.props} value={field.input} type=\"email\" /\u003e\n            {field.errors \u0026\u0026 \u003cdiv\u003e{field.errors[0]}\u003c/div\u003e}\n          \u003c/div\u003e\n        )}\n      \u003c/Field\u003e\n      \u003cField of={loginForm} path={['password']}\u003e\n        {(field) =\u003e (\n          \u003cdiv\u003e\n            \u003cinput {...field.props} value={field.input} type=\"password\" /\u003e\n            {field.errors \u0026\u0026 \u003cdiv\u003e{field.errors[0]}\u003c/div\u003e}\n          \u003c/div\u003e\n        )}\n      \u003c/Field\u003e\n      \u003cbutton type=\"submit\"\u003eLogin\u003c/button\u003e\n    \u003c/Form\u003e\n  );\n}\n```\n\nIn addition, Formisch offers several functions (we call them \"methods\") that can be used to read and manipulate the form state. These include `focus`, `getErrors`, `getAllErrors`, `getInput`, `insert`, `move`, `remove`, `replace`, `reset`, `setErrors`, `setInput`, `submit`, `swap` and `validate`. These methods allow you to control the form programmatically.\n\n## Comparison\n\nWhat makes Formisch unique is its framework-agnostic core, which is fully native to the framework you are using. It works by inserting framework-specific reactivity blocks when the core package is built, giving you native performance for any UI update. A modular methods API keeps bundles starting at just ~2.5 kB by only including the methods you import, and end-to-end type safety covers deeply nested paths and field arrays with TypeScript inference that stays fast even as forms grow.\n\n## Vision\n\nMy vision for Formisch is to create a framework-agnostic platform similar to [Vite](https://vite.dev/), but for forms — a shared core that lets the same mental model and codebase work natively across every modern UI framework.\n\n## Partners\n\nThanks to our partners who support the development! [Join them](https://github.com/sponsors/fabian-hiller) and contribute to the sustainability of open source software!\n\n![Partners of Formisch](https://github.com/open-circle/formisch/blob/main/partners.webp?raw=true)\n\n## Feedback\n\nFind a bug or have an idea how to improve the library? Please fill out an [issue](https://github.com/open-circle/formisch/issues/new). Together we can make forms even better!\n\n## License\n\nThis project is available free of charge and licensed under the [MIT license](https://github.com/open-circle/formisch/blob/main/LICENSE.md).\n\n[formisch-preact]: https://github.com/open-circle/formisch/tree/main/frameworks/preact\n[formisch-qwik]: https://github.com/open-circle/formisch/tree/main/frameworks/qwik\n[formisch-react]: https://github.com/open-circle/formisch/tree/main/frameworks/react\n[formisch-solid]: https://github.com/open-circle/formisch/tree/main/frameworks/solid\n[formisch-svelte]: https://github.com/open-circle/formisch/tree/main/frameworks/svelte\n[formisch-vue]: https://github.com/open-circle/formisch/tree/main/frameworks/vue\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-circle%2Fformisch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-circle%2Fformisch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-circle%2Fformisch/lists"}