d8e6f44616
Both page.OnAfterRenderAsync(firstRender=true) and TreeView.OnAfterRenderAsync(firstRender=true) ran concurrently: - Page called RevealNode → added ancestor keys to _expandedKeys - TreeView awaited treeviewStorage.load → replaced _expandedKeys with the persisted set (often empty if user collapsed before navigating) Whichever JS interop completed second won. When TreeView won, the deep-link reveal silently lost. Gate the reveal on firstRender==false so it runs strictly after TreeView's restore is done.