From 1170cfd4a73331d4edbf45f6e00c327641cd4da7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 7 Feb 2026 13:47:25 +0200 Subject: [PATCH] fix(website): stargrazers count still not updating due to hydration --- apps/website/src/index.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/website/src/index.tsx b/apps/website/src/index.tsx index abb60f56a6..27d33bcd5d 100644 --- a/apps/website/src/index.tsx +++ b/apps/website/src/index.tsx @@ -7,7 +7,7 @@ import { hydrate, LocationProvider, prerender as ssr, Route, Router, useLocation import Footer from './components/Footer.js'; import { Header } from './components/Header.jsx'; -import { FALLBACK_STARGAZERS_COUNT, getRepoStargazersCount } from './github-utils.js'; +import { getRepoStargazersCount } from './github-utils'; import { extractLocaleFromUrl, initTranslations, LOCALES, mapLocale } from './i18n'; import { NotFound } from './pages/_404.jsx'; import GetStarted from './pages/GetStarted/get-started.js'; @@ -17,11 +17,11 @@ import SupportUs from './pages/SupportUs/SupportUs.js'; export const LocaleContext = createContext('en'); -export function App(props: {repoStargazersCount: number}) { +export function App({ repoStargazersCount }) { return ( -
+
@@ -70,7 +70,9 @@ export function LocaleProvider({ children }) { } if (typeof window !== 'undefined') { - hydrate(, document.getElementById('app')!); + const el = document.getElementById("prerender-data"); + const data = JSON.parse(el?.innerText ?? "{}"); + hydrate(, document.getElementById('app')!); } function getLocaleId(path: string) { @@ -84,12 +86,12 @@ export async function prerender(data) { // Fetch the stargazer count of the Trilium's GitHub repo on prerender to pass // it to the App component for SSR. // This ensures the GitHub API is not called on every page load in the client. - const stargazersCount = await getRepoStargazersCount(); - - const { html, links } = await ssr(); + data.repoStargazersCount = await getRepoStargazersCount(); + const { html, links } = await ssr(); return { html, links, + data, head: { lang: extractLocaleFromUrl(data.url) ?? "en" }