Devs hated Flash for all of the reasons cited above, but browsers didn't support anything better for many use cases.
Indeed. As an example for a long time you had to have Flash to play a video on your page. The HTML5 video support eventually ended the need for Flash to do this, but it came much later and very slowly became supported cross-browser.