diff --git a/web/src/hooks/use-site-config.tsx b/web/src/hooks/use-site-config.tsx
index 091a98b..4611887 100644
--- a/web/src/hooks/use-site-config.tsx
+++ b/web/src/hooks/use-site-config.tsx
@@ -42,10 +42,15 @@ export function SiteConfigProvider({ children }: { children: ReactNode }) {
attribution_url: data.attribution_url || "https://keygate.app",
loading: false,
})
- // Dynamic favicon from custom logo
+ // Dynamic favicon from custom logo. index.html declares
+ // multiple variants and browsers pick their
+ // favorite (often the sizes="32x32" one), so rewriting only
+ // the first link never visibly changed the tab icon — update
+ // them all.
if (data.logo_url) {
- const link = document.querySelector("link[rel='icon']") as HTMLLinkElement
- if (link) link.href = data.logo_url
+ document.querySelectorAll("link[rel~='icon']").forEach((link) => {
+ link.href = data.logo_url
+ })
}
if (data.brand_color) {
document.documentElement.style.setProperty("--color-primary", data.brand_color)