- Shipped
- August 15, 2026 at 3:17 AM UTC
- Author
- kamo
- Commit
- 98910d1
An org with no logo shows its initial, and on /network that initial blinked continuously. Three things stacked up. PlatformRightsProvider wraps the whole app, and its effect listed useUserInfo()'s `isAuthenticated` in its dependency array. That is a plain arrow rebuilt on every render, and normalizePlatformAccess returns a newly built object every time, so the effect fetched -> setAccess re-rendered the provider -> the provider produced a new function -> the dependencies compared unequal -> the effect fetched again. Nothing bounded it but the round trip to **************** and every page under the provider re-rendered along with it. Resolving the predicate to a boolean closes the loop, and fixes the other half of the same mistake: `!isAuthenticated` negated a function, so the unauthenticated branch it guards was unreachable. That left the logo. OrgLogo was declared inside NetworkPage, so it had a new component type on every render and React remounted each logo instead of updating it -- and the initial was built by hand in onError, appended to a container React owns and knows nothing about. Each remount discarded the letter, re-issued the proxy request that was always going to fail, and put the letter back only once it had failed again. Orgs with a logo repainted from cache in the same frame, which is why only the letter appeared to blink. OrgLogo now lives at module scope and remembers which src failed, so the letter is rendered rather than reconstructed and survives a legitimate re-render -- paging, filtering, typing in the search box -- as well. Both halves are covered by guard tests: the provider may only ever call the predicate, and the page may not rebuild the fallback through the DOM.