Ahh got you, sorry I misinterpreted your question.
If I set the viewgroup datasource to the project directly then I’d also need to put additional steps in the workflow to show and hide the viewgroup and reset the data when a user finishes with it wouldn’t I?
With the custom state approach all I need to do is set a workflow to clear the custom state and it essentially resets the inputs and hides the viewgroup in one go, because I’ve got the conditional expression that viewgroup is only visible when its custom state is not empty.
So instead of doing a custom state and setting the datasource, the custom state is my source of truth for both.