diff --git a/CHANGELOG.md b/CHANGELOG.md
index 33b6c20601..ed99051db6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@
 	- 任意の設定項目をデバイス間で同期できるように(実験的)
 - Enhance: プラグインの管理が強化されました
   - インストール/アンインストール/設定の変更時にリロード不要になりました
+- Enhance: ログアウト時、ブラウザに保存されたWebクライアントのデータを全て消去するように
 - Enhance: CWの注釈テキストが入力されていない場合, Postボタンを非アクティブに
 - Enhance: CWを無効にした場合, 注釈テキストが最大入力文字数を超えていても投稿できるように
 - Enhance: テーマ設定画面のデザインを改善
diff --git a/packages/frontend/src/accounts.ts b/packages/frontend/src/accounts.ts
index 2382a8ec32..dbeb13eb63 100644
--- a/packages/frontend/src/accounts.ts
+++ b/packages/frontend/src/accounts.ts
@@ -17,8 +17,6 @@ import { store } from '@/store.js';
 import { $i } from '@/i.js';
 import { signout } from '@/signout.js';
 
-// TODO: 他のタブと永続化されたstateを同期
-
 type AccountWithToken = Misskey.entities.MeDetailed & { token: string };
 
 export async function getAccounts(): Promise<{
diff --git a/packages/frontend/src/signout.ts b/packages/frontend/src/signout.ts
index 8e90552546..e7d7cdfd22 100644
--- a/packages/frontend/src/signout.ts
+++ b/packages/frontend/src/signout.ts
@@ -3,26 +3,27 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { defineAsyncComponent, ref } from 'vue';
-import { apiUrl, host } from '@@/js/config.js';
+import { apiUrl } from '@@/js/config.js';
 import { defaultMemoryStorage } from '@/memory-storage';
-import { i18n } from '@/i18n.js';
-import { miLocalStorage } from '@/local-storage.js';
-import { waiting, popup, popupMenu, success, alert } from '@/os.js';
+import { waiting } from '@/os.js';
 import { unisonReload, reloadChannel } from '@/utility/unison-reload.js';
-import { prefer } from '@/preferences.js';
-import { store } from '@/store.js';
 import { $i } from '@/i.js';
 
 export async function signout() {
 	if (!$i) return;
 
-	defaultMemoryStorage.clear();
+	// TODO: preferの自動バックアップがオンの場合、いろいろ消す前に強制バックアップ
 
 	waiting();
-	miLocalStorage.removeItem('account');
 
-	// TODO: preferencesも削除
+	localStorage.clear();
+	defaultMemoryStorage.clear();
+
+	const idbPromises = ['MisskeyClient', 'keyval-store'].map((name, i, arr) => new Promise((res, rej) => {
+		indexedDB.deleteDatabase(name);
+	}));
+
+	await Promise.all(idbPromises);
 
 	//#region Remove service worker registration
 	try {