I am planning on doing this in vanilla JS and TypeScript but, I keep looking at utilizing a framework such as React or React with Redux. I have experimented with this on a small scale using the esri-loader and I am pleased with the workflow but have run into a few stumbling blocks that took a good bit of time to work though. Contemplating the best approach for continued development into the future.
I'm developing a web application with ArcGIS 4.x JS in React. You'll most likely end up with some React anti-patterns in your application because changes to your map will be outside of React's view, but I've found it to be pretty manageable. I'm using react-arcgis. It's not necessary but provides a React-like way to access your map or scene properties.