Why the heck do so many lovelace cards report incorrect size and mess up proper stacking?

This is an issue I’ve been struggling with on every version of lovelace since the beginning. Some cards such as vertical-stack-in card and state switch card have been completely broken without any workaround for months, and other card configurations like the below have not worked really correctly from the beginning and have required manually setting the size with browser-mod in order to get something resembling correct stacking.

Isn’t there some way we can have core check the size of the card when it renders so that every card programmer doesn’t have to do this correctly for each individual card (which it appears will not happen?)

Examples:
vertical-stack-in card
state switch card
Problem in stack with weather-card-chart
Problem with calendar card
Problem with picture glance cards in 9x16 (portrait) orientation
Problem in stack with button cards and mini media player

Its seems like these are all custom card issues, right?

Not entirely. Picture glance cards in portrait orientation is an example of one where it’s purely out of the box functionality that doesn’t work right.

But custom cards are a major issue, and I wonder if this shouldn’t be solved in core. I would love to see the rendering engine somehow just start rendering the card and measure it’s size and report that back to the stacking algorithm. I know I’m probably living in fantasy land, but asking each card dev to do this perfectly will never quite work right. Dare to dream?

Your picture glance link is not targeting correctly. I am linked to a calendar YAML entry

Whoopsie. I updated the original link, but here it is again for your convenience

The problem is that we don’t know when a custom card is done rendering and when to measure it. What if it is still loading and will become way bigger?

And we can’t redo the layout on every change of height of a card, that would make your layout jump all the time.

(besides that it would drastically slow the loading of your dashboard)