There was this thing called DHTML. It was no Ajax, but you could hide and show elements, change its contents, respond to events, etc. Cross browser was a nightmare. And the server side handled most of the work.
Today I build all sorts of things with lots of interactive elements on the frontend, but trying to avoid using React if I can.