ShapeForm has several nice features that make it perfect for our use case, and may yours:
JSON Schema validation - Easily share the same form validation frontend and backend
️ Fast - Pure components for fast rendering even with large forms
Redux / Standalone state management - Choose your own adventure
Custom widgets - Widgets are simply React components
Form reducers - Useful for async validation, data normalization, the sky's the limit.
If you find ShapeForm useful or want to make it more useful I'd love for you to contribute to the project!
Any reason for not building around react-final-form as a basis? So far, I've found that one to be my favorite. Zero dependencies and tiny (especially compared with the alternatives).
I couldn't easily find a demo of your stuff, but one thing they've really gotten right is the renders for field updates...
Author talks about it here https://www.youtube.com/watch?v=Ovg9CYwWFBM&t=6s
I noticed that while I create custom rails apps for clients, they often want to create additional forms and still leverage the authentication, permissions, and existing data in the app. This rules out most 3rd party form builders like typeform, jotform etc. which are mostly for surveys anyway. Sometimes the dev time to create them(UI, DB migrations, testing, validations) is too costly for an idea they just want to test.
So, I use the builder to create a JSON Schema, then embed the form into the rails app. What's cool is that I can utilize permissions from the core app to disable certain fields, and I can pass in enum values so drop downs have up-to-date options pulled right from the DB.
We use react-jsonschema-form, but the jsonschema we produce could be used in any of the tools mentioned in this thread.
I'm close to opening this up to other devs soon, and would love your feedback. There's a signup form on the website if you're interested.
We are currently working on our own visual app builder, starting out with Vue/Vuetify. Demo:
So I think I will definitely switch to ShapeForm in the future, and I was actually planning to build something like this myself. I'm definitely looking forward to the TypeScript support.
On a previous project I needed something like this and used react-json-schema as a form renderer and created my own rule engine that evaluated a lot of rules defined in a custom format I needed.
The result was a generated schema that was rendered by react-json-schema.
Should just base this project around https://final-form.org/react
Down the line (maybe in 2020) you might want to consider looking at using Tree Notation instead of JSONSchema. Could simplify things quite a bit.
Here's what that might look like, using your example on your Readme: