From 69b2cc903c7664cceb663f1575b9a8d870e421f8 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 24 Feb 2026 16:00:19 +0000 Subject: [PATCH] Use useDeferredValue for content language toggles Defer the contentLanguages value used for computing possibleLanguages and the Admonition conditional, so that toggle checkbox state updates at high priority while the heavier derived renders are deferred. https://claude.ai/code/session_01WFBuRom117yg7WR66J1ySs --- src/screens/Settings/LanguageSettings.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/screens/Settings/LanguageSettings.tsx b/src/screens/Settings/LanguageSettings.tsx index cd4bbe42a2..0e68bb08d9 100644 --- a/src/screens/Settings/LanguageSettings.tsx +++ b/src/screens/Settings/LanguageSettings.tsx @@ -1,4 +1,4 @@ -import {useCallback, useMemo, useState} from 'react' +import {useCallback, useDeferredValue, useMemo, useState} from 'react' import {View} from 'react-native' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' @@ -60,17 +60,21 @@ export function LanguageSettingsScreen({}: Props) { langPrefs.contentLanguages, ) + const deferredContentLanguages = useDeferredValue( + langPrefs.contentLanguages, + ) + const possibleLanguages = useMemo(() => { return [ ...new Set([ ...recentLanguages, - ...langPrefs.contentLanguages, + ...deferredContentLanguages, ...langPrefs.primaryLanguage, ]), ] .map(lang => LANGUAGES.find(l => l.code2 === lang)) .filter(x => !!x) - }, [recentLanguages, langPrefs.contentLanguages, langPrefs.primaryLanguage]) + }, [recentLanguages, deferredContentLanguages, langPrefs.primaryLanguage]) return ( @@ -165,7 +169,7 @@ export function LanguageSettingsScreen({}: Props) { - {langPrefs.contentLanguages.length === 0 && ( + {deferredContentLanguages.length === 0 && ( All languages will be shown in your feeds.