From e1b6e9d4b6fd261a4d38c4760d8bc5dcd43b35fe Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Dec 2025 08:21:30 +0900 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20visibilityState=E3=81=8Chidden?= =?UTF-8?q?=E3=81=AA=E7=8A=B6=E6=85=8B=E3=81=A7startViewTransition?= =?UTF-8?q?=E3=81=97=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/theme.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/theme.ts b/packages/frontend/src/theme.ts index fc3f5f55f2..e001bed8f3 100644 --- a/packages/frontend/src/theme.ts +++ b/packages/frontend/src/theme.ts @@ -144,7 +144,9 @@ export function applyTheme(theme: Theme, persist = true) { if (theme.id === currentThemeId && miLocalStorage.getItem('themeCachedVersion') === version) return; currentThemeId = theme.id; - if (window.document.startViewTransition != null) { + // visibilityStateがhiddenな状態でstartViewTransitionするとブラウザによってはエラーになる + // 通常hiddenな時に呼ばれることはないが、iOSのPWAだとアプリ切り替え時に(何故か)hiddenな状態で(何故か)一瞬デバイスのダークモード判定が変わりapplyThemeが呼ばれる場合がある + if (window.document.startViewTransition != null && window.document.visibilityState === 'visible') { window.document.documentElement.classList.add('_themeChanging_'); try { window.document.startViewTransition(async () => {