This is really great stuff!
For the bugs - I will look into making the scrubber/slider more performative, as well as the desync issue between value tooltips and map coloring. Similar to animation, it's a tradeoff between making the user wait for a bit for a proper warm cache to load vs allowing quick scrubbing right when they start. I'll try to lean it more towards the former. I'll also file a bug report on GitHub for the sliding too early and freezing one. I ran into that earlier but thought I had it mostly ironed out. Definitely worth another look.
For the performance insights - I use a mixture of a custom-built admin dashboard which provides various performance metrics as well as some third party tools. Most of the metrics look pretty good but as is always the case, it's hard for them to tell the whole story and find edge cases.
For the recommended features - Completely agree on having it land on the same forecast hour when switching models/products. I ran into issues since some models don't support variables that others do but there is probably a happy medium I can find. Side-by-side comparison as well as deltas are on the roadmap, as are meteograms and possibly Skew-T diagrams. I like the mention of those other charts too and they might fit well on a new page. Good recs!
Finally, for the screenshot - I actually started with client-side capture and it was nearly instant with legend and branding included. The issue I ran into was viewport consistency. To try and mitigate differences between mobile/desktop I tried forcing a fixed output resolution but that caused the generated screenshot to differ from what was actually on the screen at the time of sharing, which felt like a trust issue for showing what the user wants to share. Server-side was the more reliable path for now but if I could find a way to make client-side work with differing viewports I definitely will revisit it.
Also I might be wrong, but the screenshot seems to be generated on the server side, hence the couple seconds of wait. But I think it can be achieved much more efficiently using client-side APIs to take a direct screenshot of the `<canvas>` used to render the map. I tried it via inspect element, and it instantly generated the screenshot from the browser itself.. though this would not include the key/branding which needs to be appended programmatically.