From 8a3480e5aba857c97fb8b9d624e80e860fd603ad Mon Sep 17 00:00:00 2001 From: Dorian Date: Sun, 8 Mar 2026 11:15:34 +0000 Subject: [PATCH] fix: handle stale chunk 404s + add page loading states - Router catches failed dynamic imports and forces reload (stale deploy cache) - LeaderboardPage: sprite-based loading animation while fetching - ArenaPage: sprite-based loading animation while fetching Co-Authored-By: Claude Opus 4.6 --- frontend/src/pages/ArenaPage.vue | 8 +++++++- frontend/src/pages/LeaderboardPage.vue | 8 +++++++- frontend/src/router.ts | 8 ++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/ArenaPage.vue b/frontend/src/pages/ArenaPage.vue index 8b72529..f91bb38 100644 --- a/frontend/src/pages/ArenaPage.vue +++ b/frontend/src/pages/ArenaPage.vue @@ -45,8 +45,14 @@ const tierClass = (t: number) => `tier-${t}`
+ +
+ +

LOADING FIGHTS...

+
+ -
+
`${b.wins}W - ${b.losses}L`
+ +
+ +

LOADING FIGHTERS...

+
+ -
+
diff --git a/frontend/src/router.ts b/frontend/src/router.ts index 9d3e762..895c585 100644 --- a/frontend/src/router.ts +++ b/frontend/src/router.ts @@ -67,3 +67,11 @@ export const router = createRouter({ history: createWebHistory(), routes, }) + +// Handle stale chunk 404s after deploy — force reload to get new assets +router.onError((err, to) => { + if (err.message.includes('Failed to fetch dynamically imported module') || + err.message.includes('Importing a module script failed')) { + window.location.assign(to.fullPath) + } +})