Skip to main content

Comparison table

FeatureuniformsFormikredux-formReact Final Formreact-hook-formreact-jsonschema-form
Synchronous validation
Asynchronous validation1
Field level validation
Manual form layout
Automatic form layout
Manual state management mode
Automatic state management mode
Manually trigger change
Manually trigger reset
Manually trigger validation
Built in focus state management
Ant Design theme
Bootstrap 3 theme
Bootstrap 4 theme
Bootstrap 5 theme
Chakra UI theme
Fluent UI theme
Semantic UI theme
Material theme
MUI theme
Your custom theme
JSON Schema support
GraphQL schema support
SimpleSchema support
Zod schema support
Your custom schema support

Feature descriptions

Synchronous validation

This type of validation checks user input immediately as it is entered in a form field.

Asynchronous validation

This type of validation checks user input after it has been submitted.

Field-level validation

Refers to the process of validating individual form fields against predefined rules or requirements.

Manual form layout

Allows the structure of form elements to be defined manually.

Automatic form layout

Allows autogenerating the structure of form elements depending on a provided schema.

Manual state management mode

The ability to manually control and update the state or values of form elements (such as input fields, checkboxes, or radio buttons).

Automatic state management mode

Automatically manage the state or values of form elements (such as input fields, checkboxes, or radio buttons) without requiring explicit manual updates by developers.

Manually trigger change

Allows to initiate changes of form values manually.

Manually trigger reset

Allows to reset form values manually.

Manually trigger validation

Allows to validate form values manually.

Built in focus state management

Automatically manage the visual state of form elements when they are focused or blurred (i.e., when the user clicks on or navigates away from an element).

Footnotes

  1. There's no built-in flow for that, but you can handle it yourself and pass it to the display.