We've built SPAs as a part of the larger project using exactly this. Plain JS with a couple of libs that address specific needs (graphics for example). All work fine, simple to maintain and does not require that insane amount of infrastructure.
Can you share some insight about your project? React and redux didn’t happened for no reason. However I think they are too heavy and there are ways to solve same problems with basic tools. Your case may shed some light on to how this can be achieved without react/redox overhead.
Not sure what particular insights. Well here is some example: state management. It is basically split into 2 parts. One part is the actual business object that matters and is a slice of full data on backend. It is a class with methods that take parameters and modify state when executed and broadcasting fact of said modifications so that the UI is aware. Executions of said methods also causing data exchange with the backend using JSON based RPC. Simple example would be Customer with get/set Name/Alias/DOB etc.
Then there are web components and those keep their own state that is limited strictly to presentation issue. For example Currently active form of the application.
It is a big area in general with lots of details and requires way more than a simple post to describe. Unfortunately we do not contribute to open source so can't really share any code.
So structurally the app is fairly simple. Some JavaScript files that are being merged when posting to production and backend server written in C++ accessible through JSON based RPC that can serve thousands of requests per second on single computer with few real cores without breaking much sweat.