From 50088578806691004c2ce90c8320294beb24c4d1 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Wed, 20 May 2026 23:53:44 +0200 Subject: [PATCH] fix: respect server-resolved locale on first visit #309 --- components/providers/intl-provider.tsx | 6 ++++-- stores/locale-store.ts | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/components/providers/intl-provider.tsx b/components/providers/intl-provider.tsx index 60193c61..d378803c 100644 --- a/components/providers/intl-provider.tsx +++ b/components/providers/intl-provider.tsx @@ -51,7 +51,7 @@ interface IntlProviderProps { export function IntlProvider({ locale: initialLocale, children }: IntlProviderProps) { const currentLocale = useLocaleStore((state) => state.locale); const setLocale = useLocaleStore((state) => state.setLocale); - const [activeLocale, setActiveLocale] = useState(currentLocale || initialLocale); + const [activeLocale, setActiveLocale] = useState(initialLocale); const [timeZone, setTimeZone] = useState('UTC'); // Detect user's timezone on mount @@ -66,10 +66,12 @@ export function IntlProvider({ locale: initialLocale, children }: IntlProviderPr } }, []); - // Sync initial locale with store on first mount only + // First mount: seed the store from the server-resolved locale if nothing is persisted. useEffect(() => { if (!currentLocale) { setLocale(initialLocale); + } else { + setActiveLocale(currentLocale); } // eslint-disable-next-line react-hooks/exhaustive-deps }, []); diff --git a/stores/locale-store.ts b/stores/locale-store.ts index 7cc5e96b..3dab55a0 100644 --- a/stores/locale-store.ts +++ b/stores/locale-store.ts @@ -9,7 +9,7 @@ interface LocaleStore { export const useLocaleStore = create()( persist( (set) => ({ - locale: 'en', + locale: '', setLocale: (locale) => set({ locale }), }), {