From 26c8914a26d08aa33bc75177f8db36594defb921 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 6 Nov 2025 18:07:03 +0900 Subject: [PATCH] fix(frontend): improve startViewTransition handling --- packages/frontend/src/theme.ts | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/theme.ts b/packages/frontend/src/theme.ts index 4da8c02d33..2fca4e79ae 100644 --- a/packages/frontend/src/theme.ts +++ b/packages/frontend/src/theme.ts @@ -146,17 +146,26 @@ export function applyTheme(theme: Theme, persist = true) { if (window.document.startViewTransition != null) { window.document.documentElement.classList.add('_themeChanging_'); - window.document.startViewTransition(async () => { - applyThemeInternal(theme, persist); - await nextTick(); - }).finished.then(() => { + try { + window.document.startViewTransition(async () => { + applyThemeInternal(theme, persist); + await nextTick(); + }).finished.then(() => { + window.document.documentElement.classList.remove('_themeChanging_'); + globalEvents.emit('themeChanged'); + }); + } catch (err) { + // 様々な理由により startViewTransition は失敗することがある + // ref. https://github.com/misskey-dev/misskey/issues/16562 + + console.error(err); + window.document.documentElement.classList.remove('_themeChanging_'); - // 色計算など再度行えるようにクライアント全体に通知 + applyThemeInternal(theme, persist); globalEvents.emit('themeChanged'); - }); + } } else { applyThemeInternal(theme, persist); - // 色計算など再度行えるようにクライアント全体に通知 globalEvents.emit('themeChanged'); } }