When Ultralight is slow on rendering a browser tick, the whole game Client freezes.
This is not ideal because if the UI freeze for 500ms it is not very bad in itself, the problem is that it will also impact the player's client.
Especially because Ultralight does a very bad job at preloading/caching images from CSS even if specified inside the HTML Dom, aside from having poor performance at loading and rendering images (5 more time than Chrome, considering Chrome does take 100ms on first paint but will take approx 10ms to render on next UI paint when showing/hiding the divs that contains the images).
Considering the limitations of Ultralight discussed in anorther issue, we have no choice than to rely on Background images to get the GUI we desire.
The best solution I could think of is to separate both threads, as the API is already async I think (but I don't know) it should be quite fast to achieve without breaking changes into the API.
There is no real way around it, I downscalled all the images and managed to reduce the rendering time from 500ms to 120ms but this is far from ideal still.
Created by GTNardy