{"repo":"alibaba/formily","free":true,"listed":false,"github":"https://github.com/alibaba/formily","clone":"git clone https://github.com/alibaba/formily.git","description":"📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3","language":"TypeScript","stars":12562,"topics":["ant-design","designable","form","form-builder","fusion","json-schema","json-schema-form","low-code","no-code","observable","react","react-form","react-native","reactive","schema-form","validator","vue","vue-form","vue3"],"license":"MIT","category":"lowcode_engine","readme_excerpt":"English | [简体中文](./README.zh-cn.md)\n\n<p align=\"center\">\n<img src=\"https://img.alicdn.com/tfs/TB1fHhZu4D1gK0jSZFyXXciOVXa-2500-1200.png\">\n<img src=\"https://img.shields.io/npm/dt/@formily/core\"/>\n<img src=\"https://img.shields.io/npm/dm/@formily/core\"/>\n<a href=\"https://www.npmjs.com/package/@formily/core\"><img src=\"https://img.shields.io/npm/v/@formily/core.svg\"></a>\n<a href=\"https://codecov.io/gh/alibaba/formily\">\n  <img src=\"https://codecov.io/gh/alibaba/formily/branch/formily_next/graph/badge.svg?token=3V9RU8Wh9d\"/>\n</a>\n<img alt=\"PRs Welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\"/>\n<a href=\"https://github.com/actions-cool/issues-helper\">\n  <img src=\"https://img.shields.io/badge/using-issues--helper-blueviolet\"/>\n</a>\n<a href=\"https://app.netlify.com/sites/formily/deploys\"><img src=\"https://api.netlify.com/api/v1/badges/7145918b-9cb5-47f8-8a42-111969e232ef/deploy-status\"/></a>\n</p>\n\n---\n\n## Background\n\nIn React, the whole tree rendering performance problem of the form is very obvious in the controlled mode. Especially for the scene of data linkage, it is easy to cause the page to be stuck. To solve this problem, we have distributed the management of the state of each form field, which significantly improves the performance of the form operations. At the same time, we deeply integrate the JSON Schema protocol to help you solve the problem of back-end driven form rendering quickly.\n\n## Features\n\n- 🖼 Designable, You can quickly develop forms at low cost through [Form Builder](https://designable-antd.formilyjs.org/).\n- 🚀 High performance, fields managed independently, rather rerender the whole tree.\n- 💡 Integrated Alibaba Fusion and Ant Design components are guaranteed to work out of the box.\n- 🎨 JSON Schema applied for BackEnd. JSchema applied for FrontEnd. Two paradigms can be converted to each other.\n- 🏅 Side effects are managed independently, making form data linkages easier than ever before.\n- 🌯 Override most complicated form layout use cases.\n\n## Form Builder\n\n![https://designable-antd.formilyjs.org/](https://img.alicdn.com/imgextra/i3/O1CN01xAJj1y1wcGzXYc1Uq_!!6000000006328-2-tps-2980-1740.png)\n\n## WebSite\n\n2.0\n\nhttps://formilyjs.org\n\n1.0\n\nhttps://v1.formilyjs.org\n\n## Community\n\n- [formilyjs](https://github.com/formilyjs)\n- [designable](https://github.com/alibaba/designable)\n- [icejs](https://github.com/alibaba/ice)\n\n## How to contribute?\n\n- [Contribute document](https://formilyjs.org/zh-CN/guide/contribution)\n\n## Contributors\n\nThis project exists thanks to all the people who contribute.\n<a href=\"https://github.com/alibaba/formily/graphs/contributors\"><img src=\"https://contrib.rocks/image?repo=alibaba/formily\" /></a>\n\n## LICENSE\n\nFormily is open source software licensed as\n[MIT](https://github.com/alibaba/formily/blob/master/LICENSE.md).\n","default_branch":"formily_next","files":1332,"tree":[".all-contributorsrc",".codecov.yml",".editorconfig",".eslintignore",".eslintrc",".github/CONTRIBUTING.md",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/config.yml",".github/PULL_REQUEST_TEMPLATE.md",".github/workflows/check-pr-title.yml",".github/workflows/ci.yml",".github/workflows/commitlint.yml",".github/workflows/issue-open-check.yml",".github/workflows/package-size.yml",".github/workflows/pr-welcome.yml",".gitignore",".prettierrc.js",".umirc.js",".vscode/cspell.json",".yarnrc","CHANGELOG.md","LICENSE.md","README.md","README.zh-cn.md","commitlint.config.js","devtools/.eslintrc","devtools/chrome-extension/.npmignore","devtools/chrome-extension/LICENSE.md","devtools/chrome-extension/assets/img/loading.svg","devtools/chrome-extension/assets/img/logo/128x128.png","devtools/chrome-extension/assets/img/logo/16x16.png","devtools/chrome-extension/assets/img/logo/38x38.png","devtools/chrome-extension/assets/img/logo/48x48.png","devtools/chrome-extension/assets/img/logo/error.png","devtools/chrome-extension/assets/img/logo/gray.png","devtools/chrome-extension/assets/img/logo/scalable.png","devtools/chrome-extension/config/webpack.base.ts","devtools/chrome-extension/config/webpack.dev.ts","devtools/chrome-extension/config/webpack.prod.ts","devtools/chrome-extension/package.json","devtools/chrome-extension/src/app/components/FieldTree.tsx","devtools/chrome-extension/src/app/components/LeftPanel.tsx","devtools/chrome-extension/src/app/components/RightPanel.tsx","devtools/chrome-extension/src/app/components/SearchBox.tsx","devtools/chrome-extension/src/app/components/Tabs.tsx","devtools/chrome-extension/src/app/components/filter.ts","devtools/chrome-extension/src/app/demo.tsx","devtools/chrome-extension/src/app/index.tsx","devtools/chrome-extension/src/extension/backend.ts","devtools/chrome-extension/src/extension/background.ts","devtools/chrome-extension/src/extension/content.ts","devtools/chrome-extension/src/extension/devpanel.tsx","devtools/chrome-extension/src/extension/devtools.tsx","devtools/chrome-extension/src/extension/inject.ts","devtools/chrome-extension/src/extension/manifest.json","devtools/chrome-extension/src/extension/popup.tsx","devtools/chrome-extension/src/extension/views/devpanel.ejs","devtools/chrome-extension/src/extension/views/devtools.ejs","devtools/chrome-extension/src/extension/views/popup.ejs","devtools/chrome-extension/tsconfig.build.json","devtools/chrome-extension/tsconfig.json","docs/functions/contributors.ts","docs/functions/npm-search.ts","docs/guide/advanced/async.md","docs/guide/advanced/async.zh-CN.md","docs/guide/advanced/build.md","docs/guide/advanced/build.zh-CN.md","docs/guide/advanced/business-logic.md","docs/guide/advanced/business-logic.zh-CN.md","docs/guide/advanced/calculator.md","docs/guide/advanced/calculator.zh-CN.md","docs/guide/advanced/controlled.md","docs/guide/advanced/controlled.zh-CN.md","docs/guide/advanced/custom.md","docs/guide/advanced/custom.zh-CN.md","docs/guide/advanced/destructor.md","docs/guide/advanced/destructor.zh-CN.md","docs/guide/advanced/input.less","docs/guide/advanced/layout.md","docs/guide/advanced/layout.zh-CN.md","docs/guide/advanced/linkages.md","docs/guide/advanced/linkages.zh-CN.md","docs/guide/advanced/validate.md","docs/guide/advanced/validate.zh-CN.md","docs/guide/contribution.md","docs/guide/contribution.zh-CN.md","docs/guide/form-builder.md","docs/guide/form-builder.zh-CN.md","docs/guide/index.md","docs/guide/index.zh-CN.md","docs/guide/issue-helper.md","docs/guide/issue-helper.zh-CN.md","docs/guide/learn-formily.md","docs/guide/learn-formily.zh-CN.md","docs/guide/quick-start.md","docs/guide/quick-start.zh-CN.md","docs/guide/scenes/VerifyCode.tsx","docs/guide/scenes/dialog-drawer.md","docs/guide/scenes/dialog-drawer.zh-CN.md","docs/guide/scenes/edit-detail.md","docs/guide/scenes/edit-detail.zh-CN.md","docs/guide/scenes/index.less","docs/guide/scenes/login-register.md","docs/guide/scenes/login-register.zh-CN.md","docs/guide/scenes/more.md","docs/guide/scenes/more.zh-CN.md","docs/guide/scenes/query-list.md","docs/guide/scenes/query-list.zh-CN.md","docs/guide/scenes/step-form.md","docs/guide/scenes/step-form.zh-CN.md","docs/guide/scenes/tab-form.md","docs/guide/scenes/tab-form.zh-CN.md","docs/guide/upgrade.md","docs/guide/upgrade.zh-CN.md","docs/index.md","docs/index.zh-CN.md","docs/site/Contributors.less","docs/site/Contributors.tsx","docs/site/QrCode.less","docs/site/QrCode.tsx","docs/site/Section.less","docs/site/Section.tsx","docs/site/styles.less","global.config.ts","jest.config.js","lerna.json","package.json","packages/.eslintrc","packages/antd/.npmignore","packages/antd/.umirc.js","packages/antd/LICENSE.md","packages/antd/README.md","packages/antd/__tests__/moment.spec.ts","packages/antd/__tests__/sideEffects.spec.ts","packages/antd/build-style.ts","packages/antd/create-style.ts","packages/antd/docs/components/ArrayCards.md","packages/antd/docs/components/ArrayCards.zh-CN.md","packages/antd/docs/components/ArrayCollapse.md","packages/antd/docs/components/ArrayCollapse.zh-CN.md","packages/antd/docs/components/ArrayItems.md","packages/antd/docs/components/ArrayItems.zh-CN.md","packages/antd/docs/components/ArrayTable.md","packages/antd/docs/components/ArrayTable.zh-CN.md","packages/antd/docs/components/ArrayTabs.md","packages/antd/docs/components/ArrayTabs.zh-CN.md","packages/antd/docs/components/Cascader.md","packages/antd/docs/components/Cascader.zh-CN.md","packages/antd/docs/components/Checkbox.md","packages/antd/docs/components/Checkbox.zh-CN.md","packages/antd/docs/components/DatePicker.md","packages/antd/docs/components/DatePicker.zh-CN.md","packages/antd/docs/components/Editable.md","packages/antd/docs/components/Editable.zh-CN.md","packages/antd/docs/components/Form.md","packages/antd/docs/components/Form.zh-CN.md","packages/antd/docs/components/FormButtonGroup.md","packages/antd/docs/components/FormButtonGroup.zh-CN.md","packages/antd/docs/components/FormCollapse.md","packages/antd/docs/components/FormCollapse.zh-CN.md","packages/antd/docs/components/FormDialog.md","packages/antd/docs/components/FormDialog.zh-CN.md","packages/antd/docs/components/FormDrawer.md","packages/antd/docs/components/FormDrawer.zh-CN.md","packages/antd/docs/components/FormGrid.md","packages/antd/docs/components/FormGrid.zh-CN.md","packages/antd/docs/components/FormItem.md","packages/antd/docs/components/FormItem.zh-CN.md","packages/antd/docs/components/FormLayout.md","packages/antd/docs/components/FormLayout.zh-CN.md","packages/antd/docs/components/FormStep.md","packages/antd/docs/components/FormStep.zh-CN.md","packages/antd/docs/components/FormTab.md","packages/antd/docs/components/FormTab.zh-CN.md","packages/antd/docs/components/Input.md","packages/antd/docs/components/Input.zh-CN.md","packages/antd/docs/components/NumberPicker.md","packages/antd/docs/components/NumberPicker.zh-CN.md","packages/antd/docs/components/Password.md","packages/antd/docs/components/Password.zh-CN.md","packages/antd/docs/components/PreviewText.md","packages/antd/docs/components/PreviewText.zh-CN.md","packages/antd/docs/components/Radio.md","packages/antd/docs/components/Radio.zh-CN.md","packages/antd/docs/components/Reset.md","packages/antd/docs/components/Reset.zh-CN.md","packages/antd/docs/components/Select.md","packages/antd/docs/components/Select.zh-CN.md","packages/antd/docs/components/SelectTable.md","packages/antd/docs/components/SelectTable.zh-CN.md","packages/antd/docs/components/Space.md","packages/antd/docs/components/Space.zh-CN.md","packages/antd/docs/components/Submit.md","packages/antd/docs/components/Submit.zh-CN.md","packages/antd/docs/components/Switch.md","packages/antd/docs/components/Switch.zh-CN.md","packages/antd/docs/components/TimePicker.md","packages/antd/docs/components/TimePicker.zh-CN.md","packages/antd/docs/components/Transfer.md","packages/antd/docs/components/Transfer.zh-CN.md","packages/antd/docs/components/TreeSelect.md","packages/antd/docs/components/TreeSelect.zh-CN.md","packages/antd/docs/components/Upload.md","packages/antd/docs/components/Upload.zh-CN.md","packages/antd/docs/components/index.md","packages/antd/docs/components/index.zh-CN.md","packages/antd/docs/index.md","packages/antd/docs/index.zh-CN.md","packages/antd/package.json","packages/antd/rollup.config.js","packages/antd/src/__builtins__/hooks/index.ts","packages/antd/src/__builtins__/hooks/useClickAway.ts","packages/antd/src/__builtins__/hooks/usePrefixCls.ts","packages/antd/src/__builtins__/index.ts","packages/antd/src/__builtins__/loading.ts","packages/antd/src/__builtins__/moment.ts","packages/antd/src/__builtins__/pickDataProps.ts","packages/antd/src/__builtins__/portal.tsx","packages/antd/src/__builtins__/render.ts","packages/antd/src/__builtins__/sort.tsx","packages/antd/src/array-base/index.tsx","packages/antd/src/array-base/style.less","packages/antd/src/array-base/style.ts","packages/antd/src/array-cards/index.tsx","packages/antd/src/array-cards/style.less","packages/antd/src/array-cards/style.ts","packages/antd/src/array-collapse/index.tsx","packages/antd/src/array-collapse/style.less","packages/antd/src/array-collapse/style.ts","packages/antd/src/array-items/index.tsx","packages/antd/src/array-items/style.less","packages/antd/src/array-items/style.ts","packages/antd/src/array-table/index.tsx","packages/antd/src/array-table/style.less","packages/antd/src/array-table/style.ts","packages/antd/src/array-tabs/index.tsx","packages/antd/src/array-tabs/style.ts","packages/antd/src/cascader/index.tsx","packages/antd/src/cascader/style.ts","packages/antd/src/checkbox/index.tsx","packages/antd/src/checkbox/style.ts","packages/antd/src/date-picker/index.tsx","packages/antd/src/date-picker/style.ts","packages/antd/src/editable/index.tsx","packages/antd/src/editable/style.less","packages/antd/src/editable/style.ts","packages/antd/src/form-button-group/index.tsx","packages/antd/src/form-button-group/style.less","packages/antd/src/form-button-group/style.ts","packages/antd/src/form-collapse/index.tsx","packages/antd/src/form-collapse/style.ts","packages/antd/src/form-dialog/index.tsx","packages/antd/src/form-dialog/style.ts","packages/antd/src/form-drawer/index.tsx","packages/antd/src/form-drawer/style.ts","packages/antd/src/form-grid/index.tsx","packages/antd/src/form-grid/style.less","packages/antd/src/form-grid/style.ts","packages/antd/src/form-item/animation.less","packages/antd/src/form-item/grid.less","packages/antd/src/form-item/index.tsx","packages/antd/src/form-item/style.less","packages/antd/src/form-item/style.ts","packages/antd/src/form-layout/index.tsx","packages/antd/src/form-layout/style.less","packages/antd/src/form-layout/style.ts","packages/antd/src/form-layout/useResponsiveFormLayout.ts","packages/antd/src/form-step/index.tsx","packages/antd/src/form-step/style.ts","packages/antd/src/form-tab/index.tsx","packages/antd/src/form-tab/style.ts","packages/antd/src/form/index.tsx","packages/antd/src/form/style.less","packages/antd/src/form/style.ts","packages/antd/src/index.ts","packages/antd/src/input/index.tsx","packages/antd/src/input/style.ts","packages/antd/src/number-picker/index.tsx","packages/antd/src/number-picker/style.ts","packages/antd/src/password/PasswordStrength.tsx","packages/antd/src/password/index.tsx","packages/antd/src/password/style.ts","packages/antd/src/preview-text/index.tsx","packages/antd/src/preview-text/style.less","packages/antd/src/preview-text/style.ts","packages/antd/src/radio/index.tsx","packages/antd/src/radio/style.less","packages/antd/src/radio/style.ts","packages/antd/src/reset/index.tsx","packages/antd/src/reset/style.ts","packages/antd/src/select-table/index.tsx","packages/antd/src/select-table/style.less","packages/antd/src/select-table/style.ts","packages/antd/src/select-table/useCheckSlackly.tsx","packages/antd/src/select-table/useFilterOptions.tsx","packages/antd/src/select-table/useFlatOptions.tsx","packages/antd/src/select-table/useSize.tsx","packages/antd/src/select-table/useTitleAddon.tsx","packages/antd/src/select-table/utils.ts","packages/antd/src/select/index.tsx","packages/antd/src/select/style.ts","packages/antd/src/space/index.tsx","packages/antd/src/space/style.ts","packages/antd/src/style.less","packages/antd/src/style.ts","packages/antd/src/submit/index.tsx","packages/antd/src/submit/style.ts","packages/antd/src/switch/index.tsx","packages/antd/src/switch/style.ts","packages/antd/src/time-picker/index.tsx","packages/antd/src/time-picker/style.ts","packages/antd/src/transfer/index.tsx","packages/antd/src/transfer/style.ts","packages/antd/src/tree-select/index.tsx","packages/antd/src/tree-select/style.ts","packages/antd/src/upload/index.tsx","packages/antd/src/upload/placeholder.ts","packages/antd/src/upload/style.ts","packages/antd/tsconfig.build.json","packages/antd/tsconfig.json","packages/benchmark/.npmignore","packages/benchmark/.umirc.js","packages/benchmark/LICENSE.md","packages/benchmark/README.md","packages/benchmark/package.json","packages/benchmark/src/index.tsx","packages/benchmark/template.ejs","packages/benchmark/tsconfig.build.json","packages/benchmark/tsconfig.json","packages/benchmark/webpack.base.ts","packages/benchmark/webpack.dev.ts","packages/benchmark/webpack.prod.ts","packages/core/.npmignore","packages/core/.umirc.js","packages/core/LICENSE.md","packages/core/README.md","packages/core/docs/api/entry/ActionResponse.less","packages/core/docs/api/entry/ActionResponse.tsx","packages/core/docs/api/entry/FieldEffectHooks.md","packages/core/docs/api/entry/FieldEffectHooks.zh-CN.md","packages/core/docs/api/entry/FormChecker.md","packages/core/docs/api/entry/FormChecker.zh-CN.md","packages/core/docs/api/entry/FormEffectHooks.md","packages/core/docs/api/entry/FormEffectHooks.zh-CN.md","packages/core/docs/api/entry/FormHooksAPI.md","packages/core/docs/api/entry/FormHooksAPI.zh-CN.md","packages/core/docs/api/entry/FormPath.md","packages/core/docs/api/entry/FormPath.zh-CN.md","packages/core/docs/api/entry/FormValidatorRegistry.md","packages/core/docs/api/entry/FormValidatorRegistry.zh-CN.md","packages/core/docs/api/entry/createForm.md","packages/core/docs/api/entry/createForm.zh-CN.md","packages/core/docs/api/models/ArrayField.md","packages/core/docs/api/models/ArrayField.zh-CN.md","packages/core/docs/api/models/Field.md","packages/core/docs/api/models/Field.zh-CN.md","packages/core/docs/api/models/Form.md","packages/core/docs/api/models/Form.zh-CN.md","packages/core/docs/api/models/ObjectField.md","packages/core/docs/api/models/ObjectField.zh-CN.md","packages/core/docs/api/models/Query.md","packages/core/docs/api/models/Query.zh-CN.md","packages/core/docs/api/models/VoidField.md","packages/core/docs/api/models/VoidField.zh-CN.md","packages/core/docs/guide/architecture.md","packages/core/docs/guide/architecture.zh-CN.md","packages/core/docs/guide/field.md","packages/core/docs/guide/field.zh-CN.md","packages/core/docs/guide/form.md","packages/core/docs/guide/form.zh-CN.md","packages/core/docs/guide/index.md","packages/core/docs/guide/index.zh-CN.md","packages/core/docs/guide/mvvm.md","packages/core/docs/guide/mvvm.zh-CN.md","packages/core/docs/guide/values.md","packages/core/docs/guide/values.zh-CN.md","packages/core/docs/index.md","packages/core/docs/index.zh-CN.md","packages/core/package.json","packages/core/rollup.config.js","packages/core/src/__tests__/array.spec.ts","packages/core/src/__tests__/effects.spec.ts","packages/core/src/__tests__/externals.spec.ts","packages/core/src/__tests__/field.spec.ts","packages/core/src/__tests__/form.spec.ts","packages/core/src/__tests__/graph.spec.ts","packages/core/src/__tests__/heart.spec.ts","packages/core/src/__tests__/internals.spec.ts","packages/core/src/__tests__/lifecycle.spec.ts","packages/core/src/__tests__/object.spec.ts","packages/core/src/__tests__/shared.ts","packages/core/src/__tests__/void.spec.ts","packages/core/src/effects/index.ts","packages/core/src/effects/onFieldEffects.ts","packages/core/src/effects/onFormEffects.ts","packages/core/src/global.d.ts","packages/core/src/index.ts","packages/core/src/models/ArrayField.ts","packages/core/src/models/BaseField.ts","packages/core/src/models/Field.ts"],"storefront":"/r/alibaba","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/alibaba/formily/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}