- No partially loaded content. - No relayout while content loads.
Holding those as hard rules leads to delay or rejection. Instead, while I agree it's better to have everything up front, gracefully handling cases when we don't is important, and some degree of responsiveness, even with partially loaded content, often makes for a better experience for the user than a delay.
Just be up front about it and find ways to keep continuity of relationship and smoothness. Diffeomorphic mappings are your friend...
Like the issue with the osx side bar transition is that the order of operations makes no sense.
When expanding, it makes the buttons vanish only to animate their reappearance from nothing once a panel slides over them.
It would make sense in the physical world if the panel occluded the buttons during transition.
During closing, the reverse problem happens. The buttons aren’t occluded but clip through the panel like it became water.
It happens fast but not so fast that you can’t see it, and there is an unnecessary distortion.
In today’s world of AI, good taste is all we human workers have so we should call out cut corners.
Now it’s 30-ish years later and computers have not recovered the latency increase from compositing, double-buffering, and other attempts to make every frame perfect. If you are showing a frame on the screen that has failed to react to input that already occurred, especially more than about 20ms later, that frame is not perfect. It’s extra imperfect if the user cannot easily do what they’re trying to do while waiting for the computer to catch up with them.
But yes, most of the examples in the article are surely both imperfect in the sense the author meant and pointlessly slow, so there is no dichotomy :-/