These pack together simple JS object definitions onto the GPU and renders them using a custom vertex shader. This skips all CPU computation and GPU upload operations, resulting in vastly increased performance. For objects that don't need to be updated by input, physics, or other interactive behaviors, we found it to be a great solution.
In testing, we've easily managed to blast millions of sprites around on moderate desktop-grade GPUs. Indeed, we hit the fill rate limitation of the GPU far sooner than we hit any other type of limitation. But as with all hardware-related things, ymmv. Frankly, we'd love to get our hands on a 5090 to see what we could do.
The link includes 4 demos to play with, and the full source is on GitHub and npm under the MIT license.