Material UI implementation of react-jsonschema-form

Usage no npm install needed!

<script type="module">
  import reactJsonschemaFormAdvanced from '';


React Json Schema Form (Mui)

BrowserStack Status GitHub package.json version npm GitHub issues GitHub pull requests

A Material UI port of jsonschema-form.

A live playground and Detailed Docs

Install instructions via npm

npm install --save react-jsonschema-form-material-ui

Example Usage

More detailed example can be seen here

// Library
import React from 'react';
import MaterialJsonSchemaForm from 'react-jsonschema-form-material-ui';

// Internals
const schema = require('./path-to your-schema.json');
const uiSchema = require('./path-to your-ui-schema.json');
const formData = require('./path-to your-ui-formData.json');

const Example () => {
    const onSubmit = (value, callback) => {
        console.log('onSubmit: %s', JSON.stringify(value)); // eslint-disable-line no-console
        setTimeout(() => callback && callback(), 2000); // just an example in real world can be your XHR call
    const onCancel = () => {
        console.log('on reset being called');
    const onFormChanged = ({ formData }) => {
        console.log('onFormChanged: ',formData); // eslint-disable-line no-console
    const onUpload = (value) => {
        console.log('onUpload: ', value); // eslint-disable-line no-console
    return (
            /* Optional Param for custom functions to be executed for transforming data */
                translateRatings: (givenData, uiData) => ({ givenData, uiData }),
            /* Optional Param for custom components */
          customComponent: ({ onChange, }) => (
                <CustomComponent onChange={onChange} formData={givenFormData} uiData={givenUIData} {} />
          customRating: ({ onChange, }) => (
                <CustomRating onChange={onChange} formData={givenFormData} uiData={givenUIData} {} />
            /* Optional Param for custom validation */
                confirmPassword: ({ schema, validations, formData, value }) => value !== formData.pass1 && ({
                message: validations.confirmPassword.message,
                inline: true,
            /* Optional Param to auto submit form on press of enter */

export default Example;

Latest Version npm version [JSONSchema-Draft-7 Support]

  • Build system now upgraded to webpack 5
  • React select values are no longer stringify results but array values.
  • New Tabs UI to divide sub sections to tabs
  • Additional Properties and Additional Items feature enabled
  • "ui:options" and "ui:style" enabled for prop passing and styling every field
  • On the fly module creation
  • Reference Schema's via http and inline references
  • Support alternatives - oneOf, anyOf, allOf
  • Support for dependencies - array of conditionals
  • new Prop onError to get errors available in form on every change
  • new Prop uiData to control ui only data to add separation of concern with form data
  • Demo updated with monaco editor and live validation changes
  • New interceptors to transform form and uiData using uiSchema - ui:interceptor

For me info you can follow our changelog


We welcome all contributions, enhancements, and bug-fixes. Open an issue on GitHub and submit a pull request.


To build/test the project locally on your computer:

Fork this repo and then clone

git clone

Install dependencies and module generator

npm install

Run the demo to test your changes

npm run start:demo

Run the tests once you are done with your changes

npm test

You can send a PR through and a release will be made following Semantic Versioning once your PR gets merged.