React is one option. I've used it but I'm not terribly excited about using it.
What do you mean by system for building machine learning training sets?
To create a training set you might have to ask people 1000 to 20,000 questions like "Is this a dog or a cat?", "Did the patient survive the operation?" Usually you're asking the same question about different prompts, for instance, photographs or clinical case report. Answering a form is called "making a judgement".
If you're adding a new task (say "click on the person's nose") you need to add a new form. In an old-school web app you can add a new form when people are making judgements, there is nothing to it. In the case of an SPA you might need to make a new React component, compile the app, force people to reload it, etc. It really slows the process down.
MobX + React + Websockets looks good for some things. (Controller apps for my home IoT system)
For other things where agility really matters (say a system for building machine learning training sets where you might want to add new tasks) I'd ditch the SPA because I wouldn't want to have to modify the front end just to add a new task.
I'm also dreaming about making systems that are WebGL based and not quite sure how I'll do it.