特定の条件でPWAでインストールされたMisskeyが空白のページでスタックしてしまう。
💡 Summary
PWAでインストールされたMisskeyが、特定の手順を踏むと空白のページでスタックしてしまいます。
多分、sw.tsのハンドリングをいい感じにしてあげれば治りそうです。(PrisMisskeyでは直った)
原因は不明ですが WiFi , モバイルデータ通信 をオフした状態で、
- タスクキルをした後
- バックグラウンドから復帰した際 などの状態で起こしやすいです。 ですが、ここで問題なのは、上記の様な動作をせずとも、意図せずに発生してしまうことがあることです。 例えば、バックグラウンド制限が厳しいHyperOSが入った端末だと、何もせずとも再現しやすかったりします。
恐らく、service workerが何かしらでロックされてしまい、オフライン画面の表示すらもままならないという状態になっているのではないかなと思います。
状況としては下の様になります。
0key
mattyaski
PrisMisskey
🥰 Expected Behavior
本来であればオフラインである旨の画面が出る
🤬 Actual Behavior
空白のページが出る。
📝 Steps to Reproduce
- スマホでBetaのChromeを入れる
- PWAとしてインストールする
- WiFi , モバイルデータの通信を切る
- 何度もタスクキル , PWAを開く という工程下の状態になるまで
- 空白のページが表示され、スタックする(リロードもできない)
↑で再現できないこともあるが、大体これで再現できるはず
💻 Frontend Environment
* Model and OS of the device(s): Motorola Edge 40 neo - Android 15
* Browser: Chrome Mobile 144.0.7559.3 (Beta Channel), 143.x 系統
* Server URL: https://misskey.io , https://prismisskey.space , https://mattyaski.co
* Misskey:
🛰 Backend Environment (for server admin)
* Installation Method or Hosting Service:
* Misskey:
* Node:
* PostgreSQL:
* Redis:
* OS and Architecture:
Do you want to address this bug yourself?
- [x] Yes, I will patch the bug myself and send a pull request
PR出してますが、完全に改善とまではいかないが、大分改善されたとのフィードバッグを頂いたので有用なPRではありそうなのでOpenにしておきます
Related?: #16562 #16558 #12356 #10438 #9398
今回の問題は、Chrome v143 以降でしか再現できないように見えたのでChromiumのバグかな?とも思い、調べてみたら下のようなIssueが上がってたので共有しておきます https://issues.chromium.org/issues/466515409
追記 https://issues.chromium.org/issues/381224161 これも同じような問題っぽく見えますね
一旦Chromiumにissueを投げてみる https://issues.chromium.org/issues/466790291
PWAではないが再現しました 参考まで…
Motorola moto g53y 5G Chrome 143.0.7499.52 Android 14
PWAにおいて再現性が高いため情報提供させていただきます。
使用ブラウザ : Chrome Beta 144.0.7559.3 左側端末 Xiaomi 13 Ultra : Hyper OS 2(Android 15) 右側端末 Redmi Note 12 Turbo : Evolution X 11.4(Android 16)
Chrome側を強制終了→再試行を繰り返すと正常に動作するため、既出の通りChrome側の問題に感じます。
確かに起動がハングしがちになってきたわね
弊鯖でも確認できました(v2025.12.0ベース / Chrome143.0.7499.52 / PWA / Android15)。 頻発しております…うおお
https://github.com/misskey-dev/misskey/issues/16951#issuecomment-3623423808 を見守る必要がありそうなのでreopen 出していただいてるprは取り込んだので軽減はされているはず…
やや若干オフトピ気味ではあるのですが、AndroidでのVivaldiはこれを書いている今現在では(まだ)Chrome142ベースで、ChromeのPWAと並列でMisskeyをPWAでインストールができるので(時間稼ぎにしかならないものの)改善できるかもしれないです… 頻発してかなり困っている場合は軽減のPRが取り込まれたバージョンが出るまで使える可能性がある
https://issues.chromium.org/issues/466790291 上のissueに試してないですが、
This seems related to the
ServiceWorkerAutoPreloadEnabled feature.
After testing with several devices on Chrome 143 and 142, we were able to conclude that the ServiceWorkerAutoPreloadEnabled feature is causing the issue. We applied the opt out event listener to our service worker from the feature related
GitHub repo. After doing so, the PWA started working as expected (no blank screen).
We also tried disabling the feature through
chrome://flags, which seems to fix it as well.
It seems to me that the default value for ServiceWorkerAutoPreloadEnabled has changed from Disabled to Enabled with Chrome 143.
というコメントが来ていたので、
https://github.com/misskey-dev/misskey/blob/2cffd9f0fbceac21817918abf50dbb2b17df0f63/packages/sw/src/sw.ts#L78
ここあたりをコメントアウトすると直るかもしれないですね
https://github.com/Type4ny-Project/Type4ny/commit/39c7e929667bb832c3810e45b5dfec50ab155c45
一旦TypeAnyにコメントアウトの修正を入れてみた
正しい修正方法らしきものでPRを作ってみました