From c920e825c61f159a3103b30f593e3cfe4d2a9e1b Mon Sep 17 00:00:00 2001 From: Michael Chihlas Date: Wed, 11 Mar 2026 03:17:24 -0400 Subject: [PATCH] fix: auto-reload on chunk load errors in ErrorBoundary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RouteError already handled stale chunk errors, but the Sentry ErrorBoundary didn't — so errors from React lazy() imports hit the generic error UI. Now auto-reloads with loop prevention (10s cooldown via sessionStorage). Co-Authored-By: Claude Opus 4.6 --- .../src/components/common/ErrorBoundary.tsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/frontend/src/components/common/ErrorBoundary.tsx b/frontend/src/components/common/ErrorBoundary.tsx index 7d9b327d..2df02dc5 100644 --- a/frontend/src/components/common/ErrorBoundary.tsx +++ b/frontend/src/components/common/ErrorBoundary.tsx @@ -7,7 +7,29 @@ interface FallbackProps { resetError: () => void } +function isChunkLoadError(error: Error): boolean { + const msg = error.message || '' + return ( + msg.includes('dynamically imported module') || + msg.includes('Loading chunk') || + msg.includes('Failed to fetch') || + error.name === 'ChunkLoadError' + ) +} + function DefaultFallback({ error, resetError }: FallbackProps) { + // Auto-reload on stale chunk errors (happens after deployments) + if (isChunkLoadError(error)) { + const key = 'rf_boundary_chunk_reload' + const lastReload = sessionStorage.getItem(key) + const now = Date.now() + if (!lastReload || now - Number(lastReload) > 10_000) { + sessionStorage.setItem(key, String(now)) + window.location.reload() + return null + } + } + return (