I had to do my own new multi step form yesterday and tried another approach.
This time I used a single form that has containers for each step that I show/hide as needed. The “next step” buttons are submit buttons. The form action is dynamically set—for all but the final submit, the form action is set to the empty “just success” api. Then on the success of the form I move to the next step, etc. Validation is then also dynamic—required fields are only required if the step is currently visible.
It is another way to get standard form validation on interim steps. This eliminates the need for temporary data store and parsing json.
Just another option.