# lets-form **Repository Path**: hcg2003/lets-form ## Basic Information - **Project Name**: lets-form - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-15 - **Last Updated**: 2025-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
Create React forms with simple JSON form schemas, supports Material UI / Bootstrap / AntDesign / RSuite / Mantine
Documentation | Try LetsForm Designer | Slack discussions | Roadmap | Blog
# About LetsForm **LetsForm** is an open source tool to generate React forms with simple JSON schemas using native UI components: Material UI, AntD, RSuite, ReactBootstrap, Mantine or just React * **forget tedious boilerplate** copy and paste everytime you need to add a field. No more copy and paste from old code * build the form **visually** with [LetsForm designer](https://designer.letsform.dev) * based on the performant **React Hook Form**, no more unwanted re-renders even with complex forms * keep **visual consistency** of the form, with a JSON form schema all forms are rendered in the same way across all pages, with the same margins, colors, customizations and components. * [validation](https://letsform.dev/advanced/validation) out of the box with **i18n** and scripting support * [multi-language](https://letsform.dev/lets-form-designer/automatic-translations) **(i18n) support** and [automatic translations of i18n tokens](https://letsform.dev/lets-form-designer/i18n-support#autocomplete-translations) * [implement dynamic forms](https://letsform.dev/advanced/form-scripts) with the language you love - JavaScript - and a simple set of instructions * use **form features you will certainly need** in every project like splitting the form in [tabs](https://letsform.dev/components/tabs#tabs), [steps](https://letsform.dev/components/steps), [collapsible groups](https://letsform.dev/components/group) or [columns](https://letsform.dev/components/two-columns) * easily switch **form modes**: [editable, disabled, read only and plaintext](https://letsform.dev/advanced/form-modes) (you will never have to write form confirmation views) * [support for arrays](https://letsform.dev/components/array), just define the fields of the array and you'll get the **UI to add, remove and validate** the items in the array * over **30** [components](https://letsform.dev/components-matrix) with consistent behaviour and properties * full set of [helpers](https://letsform.dev/advanced/helpers) to **programmatically interact** with JSON form schemas * **toolchain** to organize your forms in [projects](https://letsform.dev/lets-form-designer/projects) with [versioning](https://letsform.dev/lets-form-designer/versioning) and integration with [GitHub](https://letsform.dev/lets-form-designer/export-to-github), [NPM](https://letsform.dev/lets-form-designer/export-to-npm) or your [repository](https://letsform.dev/lets-form-designer/export-to-file) * **leverage** [ready-to-use and useful form templates](https://letsform.dev//lets-form-designer/templates) (like cascading drop downs of all countries and provinces in all languages or credit card with validation) * JSON forms can be **created programmatically**, for example in those use cases where a form is defined after introspection of a data scheme (database table, GraphQL schema, etc.) # Getting started Install LetsForm ``` npm i lets-form -D ``` then try a simple JSON form schema with just one text field (or use the [LetsForm Designer](https://designer.letsform.dev) to create one), for example using **RSuite** components ```js import React from 'react'; import LetsForm from 'lets-form/react-rsuite5'; // or /react-antd or /react-bootstrap or /react-material-ui or /react-mantine or /react // see https://letsform.dev/docs for more info about specific frameworks import 'rsuite/dist/rsuite.min.css'; // copied and pasted from LetsForm Designer const MY_FORM = { "$schema": "https://cdn.jsdelivr.net/npm/lets-form/schemas/react-rsuite5/form.json", "version": 1, "layout": "vertical", "validationMode": "onSubmit", "fluid": true, "fields": [ { "component": "input-text", "label": "My Field", "name": "my_field" } ], "name": "Simplest example" }; const MyView = () => { return (