Reconciliation makes too much moves / drop element
by @mindplay-dk
As demonstrated, it makes too many moves - but in fact also had a bug, where an element would get dropped while diffing. My own conclusion from this exploration was snabbdom is the only library that gets this totally correct, uses a minimum amount of operations, it's comparable in size to what we have now, and performance is almost identical.
My recommendation would be switch to that. I would try to help, but I don't fully understand the get argument that the existing function has, why it's necessary, or whether snabbdom could be (or needs to be) modified to work the same. The map function in my own toy Sinuous clone doesn't need it - I check what was added/removed prior to diffing. I don't know if there's any advantage to doing it in one operation? It just seems to require a lot of callbacks, one for every element. I'm not sure why that would be faster - or even whether that's the motivation for doing it that way in the first place. 🙂