{"id":13496171,"url":"https://github.com/binjospookie/effector-final-form","last_synced_at":"2026-01-23T01:43:17.233Z","repository":{"id":129016390,"uuid":"572189688","full_name":"binjospookie/effector-final-form","owner":"binjospookie","description":"☄️ Effector bindings for Final Form 🏁","archived":false,"fork":false,"pushed_at":"2023-06-05T07:30:42.000Z","size":952,"stargazers_count":13,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-08T14:51:37.056Z","etag":null,"topics":["effector","final-form","form","typescript"],"latest_commit_sha":null,"homepage":"https://binjospookie.github.io/effector-final-form/","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/binjospookie.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-11-29T18:36:43.000Z","updated_at":"2023-11-19T11:30:28.000Z","dependencies_parsed_at":"2024-01-16T09:54:15.110Z","dependency_job_id":"7cced722-ee16-4f45-99d5-8b3294232507","html_url":"https://github.com/binjospookie/effector-final-form","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/binjospookie/effector-final-form","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binjospookie%2Feffector-final-form","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binjospookie%2Feffector-final-form/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binjospookie%2Feffector-final-form/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binjospookie%2Feffector-final-form/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binjospookie","download_url":"https://codeload.github.com/binjospookie/effector-final-form/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binjospookie%2Feffector-final-form/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28677711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T01:00:35.747Z","status":"ssl_error","status_checked_at":"2026-01-23T01:00:19.529Z","response_time":144,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["effector","final-form","form","typescript"],"created_at":"2024-07-31T19:01:43.344Z","updated_at":"2026-01-23T01:43:17.216Z","avatar_url":"https://github.com/binjospookie.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# effector-final-form\n\n☄️ Effector bindings for Final Form 🏁 \n\n[Demo](https://stackblitz.com/edit/react-ts-xjh6yd?file=index.tsx)\n\nForms values and validation rules are part of the business logic. This means that you need to be able to work with them without being bound to the UI-framework.\n\nThe goal of this project is to combine [Final Form](https://final-form.org/) and [Effector](https://effector.dev/) to achieve the above.\n\n## Installation\n\n```bash\nyarn add effector-final-form\n# or\nnpm add effector-final-form\n# or\npnpm add effector-final-form\n```\n\n## Usage\n\nJust import from the root module:\n\n```ts\nimport { createForm } from 'effector-final-form';\n```\n\n## Base example\n\n```ts\nimport { createForm } from 'effector-final-form';\n\nconst form = createForm\u003c{ login: string; password: string }\u003e({\n  onSubmit: console.log,\n  subscribeOn: ['submitSucceeded', 'submitting'],\n});\n\nconst loginField = form.api.registerField({\n  name: 'login',\n  subscribeOn: ['value', 'error', 'validating'],\n  validate: (x) =\u003e (x?.length \u003e= 3 ? undefined : 'Incorrect login'),\n});\n\nloginField.$.watch(console.log);\n// {name: \"login\", value: null, error: null, validating: true}\n// {name: \"login\", error: \"Incorrect login\", value: null, validating: false}\n\nconst passwordField = form.api.registerField({\n  name: 'password',\n  subscribeOn: ['value', 'error', 'validating'],\n  validate: (x) =\u003e (x?.length \u003e= 3 ? undefined : 'Incorrect password'),\n});\n\npasswordField.$.watch(console.log);\n// {name: \"password\", value: null, error: null, validating: true}\n// {name: \"password\", error: \"Incorrect password\", value: null, validating: false}\n\nloginField.api.changeFx('John');\n// {name: \"login\", error: null, value: \"John\", validating: true}\n// {name: \"login\", error: null, value: \"John\", validating: false}\npasswordField.api.changeFx('secret');\n// {name: \"password\", error: null, value: \"secret\", validating: true}\n// {name: \"password\", error: null, value: \"secret\", validating: false}\nform.api.submitFx();\n// {login: \"John\", password: \"secret\"}\n```\n\n[Try it](https://stackblitz.com/edit/typescript-5fydjc?file=index.ts)\n\n## API\n\n[Documentation link](https://binjospookie.github.io/effector-final-form/docs/api)\n\n## Differences from Final Form\n\n[Documentation link](https://binjospookie.github.io/effector-final-form/docs/differences)\n\n## Limitations\n\n[Documentation link](https://binjospookie.github.io/effector-final-form/docs/limitations)\n\n## More examples\n\n[Documentation link](https://binjospookie.github.io/effector-final-form/docs/examples)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinjospookie%2Feffector-final-form","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinjospookie%2Feffector-final-form","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinjospookie%2Feffector-final-form/lists"}