Linear ArchiveArchived issues viewer
← Back to list
INS-749

実機特有バグ? 現在実機でLoading画面から抜け出せない問題対策

StatusDone
TeamInstansys
Assigneeyasuhisa.hiraga@instansys.co.jp
PriorityHigh
Created2026/05/06 08:08
Completed2026/05/12 23:37
Archived2026/05/20 04:03
Bug

Description

代表より

現在実機でLoading画面から抜け出せない問題が発生しています。

バトル開始で発生するのでご確認お願いします

ーーー 以下 にて対応しました。レビュー マージをお願いします。

instansys/ultemist#594

Comments (9)

asuki.uehata@instansys.co.jp2026/05/09 09:31

実機で出ていなかったログを mac と iPhone Safari WebInspector を使ってなんとか出せるようにした。

実機Loadingバグ260509.webp

Origin capacitor://app is not allowed by Access-Control-Allow-Origin. Status code: 200
Failed to load resource: capacitor://not_allowed.png  (CORS エラー)
Fetch API cannot load capacitor://not_allowed.png due to access control checks.
Unhandled Promise Rejection: Error: [Loader.load] Failed to load capacitor://not_allowed.png.
  TypeError: Load failed
  index-X-Q29Rzs.js:4029:39034
  1. どこかのコードが capacitor://not_allowed.png という URL の画像を fetch しようとしている
  2. iOS の WKWebView が CORS で拒否
  3. Loader.load() が reject、その Promise を catch していない
  4. その await が永久に未解決のまま残り、Loading 状態が解除されない ← これが INS-749 の正体っぽい

asuki.uehata@instansys.co.jp2026/05/09 09:32
  • ファイル public/not_allowed.png存在するapps/client/public/not_allowed.png, 6221 bytes)
  • preload 設定は src: "/not_allowed.png"preload.ts:249)— 先頭スラッシュ
  • ブラウザでは /not_allowed.pnghttp://localhost:.../not_allowed.png に解決されて成功
  • iOS Capacitor では、エラーログ上の URL が capacitor://not_allowed.png に化けている(本来 capacitor://app/not_allowed.png であるべき。host (app) が欠落)
asuki.uehata@instansys.co.jp2026/05/09 09:32

PixiJS / Capacitor の URL 解決ロジックが capacitor:// scheme + 先頭スラッシュ URL の組合せで host を落としていて、結果存在しない URL を fetch → CORS で弾かれ → unhandled promise rejection → preload が永久に終わらない → Loading 状態解除されない?

asuki.uehata@instansys.co.jp2026/05/09 09:32

Battle.tsx:1082 (staticAssets: BATTLE_STATIC_ASSETS)

→ preloadAssets()

→ Assets.loadBundle() ← preload.ts:165

→ not_allowed.png のロード失敗で reject

→ caller (usePagePreloader) が握り潰し or isLoading 解除されず

→ Battle scene の isLoading=true が永久に続く

INS-749

asuki.uehata@instansys.co.jp2026/05/09 09:33

BATTLE_STATIC_ASSETSsrc: "/not_allowed.png"(先頭スラッシュ)が、iOS Capacitor の capacitor:// scheme と組み合わさったときに URL host が落ちて capacitor://not_allowed.png になり、CORS で弾かれる。Pixi の Assets.loadBundle がそれで reject、Battle の preload 全体が止まる

asuki.uehata@instansys.co.jp2026/05/09 09:33

ブラウザでは http://...:5173/ への絶対パス解決で正しく動くため見つかっていなかったバグ

asuki.uehata@instansys.co.jp2026/05/11 04:30

URL 変換スキーム については、論理を精査した結果こちらの方が根本解決となるので、そちらに委ねる

https://github.com/instansys/ultemist/pull/585

永遠ローディングとなってしまう論理は、こちらでの修正とする。

asuki.uehata@instansys.co.jp2026/05/11 06:48
asuki.uehata@instansys.co.jp2026/05/11 08:07

レビュー マージ依頼をさせていただきました。