On one of my sites, I'm using websockets to do uploads. This is because it gives me better control over congestion issues (I can for instance do bandwidth shaping for each of my virtual connections).
However, sadly, I've discovered that in Chrome when a tab does not have focus, upload speeds dramatically go down, probably because of some scheduling policy in the browser.
If you want to programmatically address uploads (i.e., not with a simple PUT request), you have to somehow face this issue. I'm not sure if Uppy has this same problem or not (or if it even allows bandwidth shaping).