Bug introduced in 11 or earlier and persisting through 12.0.0
CASE:4076464
Example 1
TabView[
{
"off",
Dynamic[Print@RandomReal[]; "on", UpdateInterval -> .5, SynchronousUpdating -> False]
},
ImageSize -> Automatic
]
Once you switch to pane 2 it will not stop priniting even if you go back to 1. It does not happen when SynchronousUpdating is True.
Example 2
Column[{
PopupMenu[Dynamic[n], {1, 2}],
TabView[
{1 -> Dynamic[Echo[{1, Now}]; n, SynchronousUpdating -> False ],
2 -> Dynamic[Echo[{2, Now}]; 2 n , SynchronousUpdating -> False]
},
ImageSize -> Automatic
]
}
]
I expect each Dynamic to evaluate only when is visible, that is why ImageSize->Automatic is there.
The very first time it works well. But then, when n is changed with PopupMenu, which should refresh currently visible tab, all previously visited tabs are refreshed...
If SynchronousUpdating -> False is True everything is as expected:
While I don't insist on any behavior, they should at least be consistent.
Have I missed anything?
Related topics
Together with other 'issues' it makes controlling TabView/PaneSelector/MenuView and friends really painful:
Why is PaneSelector caching nested Dynamics and how to switch it off?


Dynamicto delay refreshing etc, now you know. – Kuba Jun 07 '18 at 12:58Printinstead ofEcho. I think this is the difference betweenEchoreturning the expression andPrintnot doing so. However, notice that all tabs that are selected between aPopupMenuselection are marked for update. You can see this clearer by adding a third tab, updatingPopupMenuselect, another tab, select the original tab, then updatePopupMenu. – Edmund Jun 07 '18 at 15:13Printinstead ofEchothen only the visible tab prints. I am on 11.3. What version are you on? – Edmund Jun 07 '18 at 15:27