For many apps with LiveView probably don’t need a “JS-side” as such (the JS module can do some basic stuff).
When LiveView doesn’t cut it and you do need JS, personally I’d recommend rendering frontend JS components here and there (most frameworks allow you to sprinkle components here and there on the page - the whole page doesn’t need to be an SPA).
My go-to would be Svelte - for that you could use LiveSvelte or you could use a library I recently published Komodo