{"id":15380248,"url":"https://github.com/jovidecroock/hooked-form","last_synced_at":"2025-03-17T15:13:31.959Z","repository":{"id":33491533,"uuid":"157902592","full_name":"JoviDeCroock/Hooked-Form","owner":"JoviDeCroock","description":"Performant 2KB React library to manage your forms","archived":false,"fork":false,"pushed_at":"2023-07-18T20:14:44.000Z","size":12406,"stargazers_count":113,"open_issues_count":10,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-04T23:05:10.170Z","etag":null,"topics":["forms","hooks","modern","react","react-native","reactjs"],"latest_commit_sha":null,"homepage":"https://jovidecroock.github.io/Hooked-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/JoviDeCroock.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["jovidecroock"]}},"created_at":"2018-11-16T17:51:58.000Z","updated_at":"2024-11-29T14:53:30.000Z","dependencies_parsed_at":"2024-06-20T21:48:53.863Z","dependency_job_id":"547f04af-818a-4959-9401-71f111df44a1","html_url":"https://github.com/JoviDeCroock/Hooked-Form","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoviDeCroock%2FHooked-Form","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoviDeCroock%2FHooked-Form/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoviDeCroock%2FHooked-Form/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoviDeCroock%2FHooked-Form/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoviDeCroock","download_url":"https://codeload.github.com/JoviDeCroock/Hooked-Form/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244056424,"owners_count":20390719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["forms","hooks","modern","react","react-native","reactjs"],"created_at":"2024-10-01T14:22:07.287Z","updated_at":"2025-03-17T15:13:31.939Z","avatar_url":"https://github.com/JoviDeCroock.png","language":"TypeScript","funding_links":["https://github.com/sponsors/jovidecroock"],"categories":[],"sub_categories":[],"readme":"# Hooked-Form\n\n[![npm version](https://badgen.net/npm/v/hooked-form)](https://www.npmjs.com/package/hooked-form)\n[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors)\n[![Build Status](https://travis-ci.com/JoviDeCroock/hooked-form.svg?branch=main)](https://travis-ci.com/JoviDeCroock/hooked-form)\n[![Bundle size](https://badgen.net/bundlephobia/minzip/hooked-form)](https://badgen.net/bundlephobia/minzip/hooked-form)\n[![codecov](https://codecov.io/gh/JoviDeCroock/Hooked-Form/branch/main/graph/badge.svg)](https://codecov.io/gh/JoviDeCroock/Hooked-Form)\n\n[Documentation](https://jovidecroock.github.io/Hooked-Form/)\n\n[Example](https://codesandbox.io/s/sweet-poincare-3km8r4k16)\n\n## 🌍 Installation\n\n**yarn**\n\n```bash\n  yarn add hooked-form\n```\n\n**npm**\n\n```bash\n  npm i --save hooked-form\n```\n\n**UMD**\n\n_dev_:\n\n```html\n\u003cscript src=\"https://unpkg.com/hooked-form@latest/dist/hooked-form.umd.js\"\u003e\u003c/script\u003e\n```\n\n## 🎨 Example\n\n```jsx\nimport React from 'react';\nimport { HookedForm, useField } from 'hooked-form';\n\nconst StringField = ({ fieldId, label }) =\u003e {\n  const [{ onChange }, { touched, error, value }] = useField(fieldId);\n  const onInput = React.useCallback(e =\u003e onChange(e.currentTarget.value), [\n    onChange,\n  ]);\n  return (\n    \u003clabel\u003e\n      {label + ' '}\n      \u003cinput value={value} onChange={onInput} /\u003e\n      {touched \u0026\u0026 error \u0026\u0026 \u003cdiv\u003e{error}\u003c/div\u003e}\n    \u003c/label\u003e\n  );\n};\n\nconst App = () =\u003e {\n  return (\n    \u003cHookedForm\n      onSubmit={console.log}\n      validateOnBlur\n      initialValues={React.useMemo(() =\u003e ({ name: '' }), [])}\n      validate={values =\u003e (values.name ? {} : { name: 'Required' })}\n    \u003e\n      \u003ch3\u003eHooked Form\u003c/h3\u003e\n      \u003cStringField label=\"Name:\" fieldId=\"name\" /\u003e\n      \u003cinput type=\"submit\" value=\"Submit\" /\u003e\n    \u003c/HookedForm\u003e\n  );\n};\n\nrender(\u003cApp /\u003e, document.body);\n```\n\n## 💿 Modern build\n\nThis library offers a modern build (ES2015 output), this is smaller and parses faster in the browser.\nSo if you don't plan to target older browsers feel free to use this.\n\n### Webpack\n\n```json\n  \"resolve\": {\n    \"alias\": {\n      \"hooked-form\": \"hooked-form/dist/hooked-form.modern.js\"\n    }\n  }\n```\n\n### Parcel\n\n```json\n  \"alias\": {\n    \"hooked-form\": \"hooked-form/dist/hooked-form.modern.js\"\n  }\n```\n\n## 📢 Credits\n\n- [Microbundle](https://github.com/developit/microbundle)\n- [Performance-comparison](https://codesandbox.io/s/react-form-library-stress-test-81swz)\n\n## 😍Contributors\n\nThanks goes to these wonderful people ([emoji key](https://github.com/all-contributors/all-contributors#emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.faktion.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/6225486?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLaurens Lavaert\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/commits?author=Pruxis\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.jovidecroock.com/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/17125876?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJovi De Croock\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-JoviDeCroock\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/commits?author=JoviDeCroock\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/pulls?q=is%3Apr+reviewed-by%3AJoviDeCroock\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/commits?author=JoviDeCroock\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/commits?author=JoviDeCroock\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.faktion.com/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/17174776?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJonathan Callewaert\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/issues?q=author%3AJonathanCa97\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/arempe93\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/4637120?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAndrew Rempe\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/commits?author=arempe93\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/tatchi\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/5595092?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCorentin Leruth\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/commits?author=tatchi\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://lishine.github.io\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6741645?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePavel Ravits\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/issues?q=author%3Alishine\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://tegan.lol\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/13814048?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTegan Churchill\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoviDeCroock/Hooked-Form/issues?q=author%3Arawrmonstar\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjovidecroock%2Fhooked-form","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjovidecroock%2Fhooked-form","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjovidecroock%2Fhooked-form/lists"}