{"id":13495673,"url":"https://github.com/rescriptbr/reform","last_synced_at":"2025-10-08T10:50:46.301Z","repository":{"id":42172077,"uuid":"108288343","full_name":"rescriptbr/reform","owner":"rescriptbr","description":"📋 Reasonably making forms sound good","archived":false,"fork":false,"pushed_at":"2024-01-22T12:20:03.000Z","size":5180,"stargazers_count":355,"open_issues_count":8,"forks_count":40,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-09-26T16:55:14.377Z","etag":null,"topics":["forms","react","react-form","reasonml","reform","rescript","rescript-forms","rescript-react","rescript-react-form","typed-form"],"latest_commit_sha":null,"homepage":"https://rescript-reform.netlify.app/","language":"ReScript","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/rescriptbr.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-25T15:21:42.000Z","updated_at":"2025-05-09T10:39:25.000Z","dependencies_parsed_at":"2024-05-10T23:47:13.720Z","dependency_job_id":null,"html_url":"https://github.com/rescriptbr/reform","commit_stats":{"total_commits":542,"total_committers":41,"mean_commits":13.21951219512195,"dds":0.514760147601476,"last_synced_commit":"870c3e128508c0f5ac32b85a8915bfd74001b087"},"previous_names":["reasonbr/reform","astrocoders/reform"],"tags_count":113,"template":false,"template_full_name":null,"purl":"pkg:github/rescriptbr/reform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescriptbr%2Freform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescriptbr%2Freform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescriptbr%2Freform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescriptbr%2Freform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rescriptbr","download_url":"https://codeload.github.com/rescriptbr/reform/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescriptbr%2Freform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278038516,"owners_count":25919560,"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","status":"online","status_checked_at":"2025-10-02T02:00:08.890Z","response_time":67,"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":["forms","react","react-form","reasonml","reform","rescript","rescript-forms","rescript-react","rescript-react-form","typed-form"],"created_at":"2024-07-31T19:01:36.993Z","updated_at":"2025-10-08T10:50:46.271Z","avatar_url":"https://github.com/rescriptbr.png","language":"ReScript","funding_links":[],"categories":["ReScript"],"sub_categories":[],"readme":"[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors)\n[![npm version](https://badge.fury.io/js/@rescriptbr%2Freform.svg)](https://badge.fury.io/js/@rescriptbr%2Freform)\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/logo.svg\" /\u003e \n  \u003cbr /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://reform.rescriptbrasil.org\"\u003eDocumentation\u003c/a\u003e • \n  \u003ca target=\"_blank\" href=\"https://reform.rescriptbrasil.org/docs/installation\"\u003eInstallation\u003c/a\u003e • \n  \u003ca target=\"_blank\" href=\"https://reform.rescriptbrasil.org/docs/getting-started\"\u003eGetting started\u003c/a\u003e •  \n  \u003ca target=\"_blank\" href=\"https://reform-demo.rescriptbrasil.org\"\u003eLive demo\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n## Installation 📦\n\n\n```\nyarn add @rescriptbr/reform @rescriptbr/reschema\n```\n\nThen add it to bsconfig.json\n\n```\n\"bs-dependencies\": [\n \"@rescriptbr/reform\",\n \"@rescriptbr/reschema\"\n]\n```\n\nThen add lenses-ppx\n\n```\nyarn add lenses-ppx -D\n```\n\nAnd update your bsconfig.json with `ppx-flags`\n\n```\n\"ppx-flags\": [\n \"lenses-ppx/ppx\"\n]\n```\n\n\u003c/details\u003e\n\n## Why? 💡\n\nAs you might know, you can use any existing React / JavaScript libraries with ReScript, including form libraries like Formik, react-hook-form, Final Form, since you install or create bindings for these libraries. ReForm is not a set of bindings for an existing form library, it was created from scratch to use with ReScript and React.\n\nCode that deals with strongly typed forms can quickly become walls of repeated text. We created ReForm to be both deadly simple and to make forms sound good leveraging ReScript's powerful typesytem. Even the schemas we use are nothing more than constructors built-in in the language itself with a small size footprint.\n\n## Features ⚡\n\n- Hook API\n- Schema API\n- Type safe, `handleChange` properly infers the value of the field it is handling\n- Context Provider\n- Field component\n- Validation strategy, OnDemand and OnChange\n\n## Alternatives 🔥\n\n- [Formality](https://github.com/alexfedoseev/re-formality)\n\n## Support 🚀\n\n🌍 We usually hang out at https://forum.rescript-lang.org/ so feel free to ask anything there.\n\n🇧🇷 🇵🇹  Se você é Brasileiro, Português ou fala português, você pode entrar contato através do discord do [ReScriptBR](http://discord.com/invite/SSDMNYQ).\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/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=\"http://www.thomasdeconinck.fr\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1548421?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eThomas Deconinck\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=DCKT\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/rescriptbr/reform/commits?author=DCKT\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://twitter.com/fakenickels\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1283200?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGabriel Rubens\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=fakenickels\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/rescriptbr/reform/issues?q=author%3Afakenickels\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-fakenickels\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#content-fakenickels\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"https://github.com/rescriptbr/reform/commits?author=fakenickels\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://twitter.com/lucasbesen\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/13984388?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLucas Besen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#maintenance-lucasbesen\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/JeffersonCarvalh0\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/11946020?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJefferson Carvalho\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=JeffersonCarvalh0\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://gtluizmoratelli.itch.io\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/24661951?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLuiz Augusto Moratelli\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=LuizMoratelli\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/amythos\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/959296?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eamythos\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=amythos\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.lallinuorteva.fi\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/7643715?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLalli Nuorteva\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/issues?q=author%3Alalnuo\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://playqup.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/3103241?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#maintenance-hew\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/kyldvs\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1830497?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKyle Davis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/pulls?q=is%3Apr+reviewed-by%3Akyldvs\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ulugbekna\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/16353531?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eUlugbek Abdullaev\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/issues?q=author%3Aulugbekna\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://khoanguyen.me\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/3049054?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKhoa Nguyen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=thangngoc89\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://medson.me\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/17956325?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMedson Oliveira\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=medson10\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-medson10\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://anabastos.me\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/10088900?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAna Luiza Portello Bastos\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=anabastos\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://freddy03h.github.io\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1412159?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFreddy Harris\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/issues?q=author%3AFreddy03h\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/arthurbarroso\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/48794198?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003earthur\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=arthurbarroso\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/rescriptbr/reform/commits?author=arthurbarroso\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://vmarcosp.dribbble.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/20327229?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarcos Oliveira\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=vmarcosp\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#design-vmarcosp\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://cel.so\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/12688694?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCelso Bonutti\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=celsobonutti\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/JasoonS\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6032276?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJason Smythe\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/rescriptbr/reform/commits?author=JasoonS\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/rescriptbr/reform/commits?author=JasoonS\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\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%2Frescriptbr%2Freform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frescriptbr%2Freform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frescriptbr%2Freform/lists"}