No, it's a bit of a mix. Retained until some update is processed by the runtime which causes the widget tree to be rebuilt, in which case it gets diff'd and stale widgets get replaced. Some widgets always redraw though, like Canvas, but they expose caching functionality
I'm no authority here but that's the gist of my understanding