Of course there's no way that rendering 40k DOM nodes (even with all these optimizations) will be as performant as a real virtual list, but… I'm interested to see how far I can take this with just some simple browser APIs.
With emoji-picker-element I really wanted to strike the balance between perf and simplicity, keeping bundle size low and not going overboard with complex optimizations.
@nolan I wonder if removing `loading=lazy` after landing https://github.com/nolanlawson/emoji-picker-element/pull/449 might yield a bit more performance: loading images eagerly could save the browser from doing the bookkeeping and querying to know if it should load now or later.
If it does, you might want to replace `contentvisibilityautostatechange` with a real `IntersectionObserver` to avoid regressing on browsers without that event.