bpmn-io / form-js

View and visually edit JSON-based forms.
https://bpmn.io/toolkit/form-js/
Other
413 stars 106 forks source link

`form-js-viewer` refactor, splitting view and state management #1166

Open Skaiir opened 6 months ago

Skaiir commented 6 months ago

What should we do?

We need to split the form-js-viewer state management logic from its rendering in two different projects.

grafik

Why should we do it?

There are many motivations for this change:

How we are going to do it?

Internal discussions ongoing, see comments for the brainstorms.

Skaiir commented 6 months ago

We are currently considering to build two sub-packages to handle the separation. These would be independent from each-other which means that you could either use the core package with a custom renderer, or the renderer package with any type of schema corresponding to the visual contract we want to build up between the two packages.

I briefly sketched out how we see the core architecture's direction (early ideas anyways). But we could opt for a near-stateless transformation pipeline that would look something like this:

Sketching render pipeline

The advantage of a pipeline like this would be that it would simply eliminate side-effects, and make the forms truly deterministic relative to the only thing that can actually change within it (the managed form state).