diff --git a/packages/frontend/src/preferences.ts b/packages/frontend/src/preferences.ts
index f9e6ab2a75..7681333910 100644
--- a/packages/frontend/src/preferences.ts
+++ b/packages/frontend/src/preferences.ts
@@ -3,7 +3,6 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { v4 as uuid } from 'uuid';
 import type { PreferencesProfile, StorageProvider } from '@/preferences/manager.js';
 import { cloudBackup } from '@/preferences/utility.js';
 import { miLocalStorage } from '@/local-storage.js';
@@ -11,8 +10,7 @@ import { isSameScope, PreferencesManager } from '@/preferences/manager.js';
 import { store } from '@/store.js';
 import { $i } from '@/i.js';
 import { misskeyApi } from '@/utility/misskey-api.js';
-
-const TAB_ID = uuid();
+import { TAB_ID } from '@/tab-id.js';
 
 function createPrefManager(storageProvider: StorageProvider) {
 	let profile: PreferencesProfile;
diff --git a/packages/frontend/src/tab-id.ts b/packages/frontend/src/tab-id.ts
new file mode 100644
index 0000000000..e2e4f69eea
--- /dev/null
+++ b/packages/frontend/src/tab-id.ts
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { v4 as uuid } from 'uuid';
+
+// HMR有効時にバグか知らんけど複数回実行されるのでその対策
+export const TAB_ID = window.sessionStorage.getItem('TAB_ID') ?? uuid();
+window.sessionStorage.setItem('TAB_ID', TAB_ID);
+console.log('TAB_ID', TAB_ID);