One thing is to have JS for client-side interactivity, and another thing is to generate the entire HTML using javascript by sending both the data and javascript bundles to the client.
That to me seems like the sweet spot for highly interactive applications that are very stateful, however like I said previously, your mileage may vary.