From 3ebbc8acb5c56ad27595076722f7a7ec96c1e7f3 Mon Sep 17 00:00:00 2001 From: Fran McDade <18710366+frano-m@users.noreply.github.com> Date: Thu, 23 Apr 2026 14:44:33 +1000 Subject: [PATCH 1/2] fix: move providers inside ErrorBoundary to prevent crash loop (#4776) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move ExploreStateProvider, DataDictionaryStateProvider, and FileManifestStateProvider inside the ErrorBoundary in _app.tsx. Previously these providers sat above the ErrorBoundary. When a provider crashed (e.g. ExploreStateProvider's reducer throwing on a malformed filter URL param), the error bypassed the ErrorBoundary entirely and bubbled up to Next.js's built-in error handling, which attempted to recover by re-rendering the page — triggering the same crash in an infinite loop. With the providers inside the ErrorBoundary, any error from their reducers, hooks, or child components is caught and rendered as the Error fallback page. The header and footer remain visible (they are intentionally outside the boundary) so the user can still navigate away. Co-Authored-By: Claude Opus 4.6 (1M context) --- package-lock.json | 2 +- package.json | 2 +- pages/_app.tsx | 46 +++++++++++++++++++++++----------------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3626997c6..db3682be3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "explorer", "version": "2.34.0", "dependencies": { - "@databiosphere/findable-ui": "^51.0.0", + "@databiosphere/findable-ui": "^51.0.1", "@emotion/react": "^11", "@emotion/styled": "^11", "@mdx-js/loader": "^3", diff --git a/package.json b/package.json index d1852f9e9..ffd20d382 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "check-system-status:anvil-cmg": "esrun e2e/anvil/anvil-check-system-status.ts" }, "dependencies": { - "@databiosphere/findable-ui": "^51.0.0", + "@databiosphere/findable-ui": "^51.0.1", "@emotion/react": "^11", "@emotion/styled": "^11", "@mdx-js/loader": "^3", diff --git a/pages/_app.tsx b/pages/_app.tsx index 665b42ce4..2cba0bd6b 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -95,33 +95,33 @@ function MyApp({ Component, pageProps }: AppPropsWithComponent): JSX.Element { >
- - -
- void; - }): JSX.Element => ( - - )} - > +
+ void; + }): JSX.Element => ( + + )} + > + + - -
- - + + +
+