fix(ui): ErrorBoundary bei Navigation resetten — v1.2.70

ErrorBoundary lag in main.tsx außerhalb des Routers und hatte keinen
Zugriff auf useLocation. Einmal gecatchter Fehler blieb erhalten bis
zum nächsten Reload — daher "EdgeGuard konnte nicht laden" bei
Navigation zum Dashboard.

Fix: LocationKeyBoundary-Wrapper innerhalb des BrowserRouter mit
key={pathname} — React remountet die ErrorBoundary bei jedem
Routenwechsel und löscht damit den Error-State automatisch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-06-02 21:03:23 +02:00
parent 3a122ffb0f
commit 66dec8cf61
2 changed files with 11 additions and 1 deletions

View File

@@ -1 +1 @@
1.2.69
1.2.70

View File

@@ -1,5 +1,6 @@
import { Suspense, lazy, useEffect, type ReactNode } from 'react'
import { BrowserRouter, Navigate, Route, Routes, useLocation } from 'react-router-dom'
import ErrorBoundary from './components/ErrorBoundary'
import { ConfigProvider, Spin } from 'antd'
import deDE from 'antd/locale/de_DE'
import enUS from 'antd/locale/en_US'
@@ -110,6 +111,7 @@ export default function App() {
<QueryClientProvider client={queryClient}>
<BrowserRouter>
<SetupGate>
<LocationKeyBoundary>
<Suspense fallback={<div className="loader-center"><Spin size="large" /></div>}>
<Routes>
<Route path="/setup" element={<SetupPage onComplete={(u: SessionUser) => useAuthStore.getState().set(u)} />} />
@@ -148,9 +150,17 @@ export default function App() {
<Route path="*" element={<Navigate to="/dashboard" replace />} />
</Routes>
</Suspense>
</LocationKeyBoundary>
</SetupGate>
</BrowserRouter>
</QueryClientProvider>
</ConfigProvider>
)
}
// Resets the ErrorBoundary on every route change so a render error on
// one page never permanently blocks navigation to another page.
function LocationKeyBoundary({ children }: { children: ReactNode }) {
const { pathname } = useLocation()
return <ErrorBoundary key={pathname}>{children}</ErrorBoundary>
}