JM
Have you tried Uppy? I found it to be a very flexible JS library for handling file uploads, because I can choose the degree of input I want (file input, drag & drop or full-blown dashboard) and it's packed with features, especially for direct S3 uploads. I feel like it takes a lot of work to handle various edge cases and browser support in file uploads, so I'm happy when I can avoid implementing it. I used it only with Shrine so far, but I've seen tutorials for setting it up with Active Storage.