You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
findable-ui#899 adds defensive validation for filter URL parameters to prevent crashes in ExploreStateProvider's reducer and surfaces meaningful errors to the user via the useValidateFilterParam hook inside the ErrorBoundary.
However, the original data-browser#4783 also moved ExploreStateProvider and DataDictionaryStateProvider inside the ErrorBoundary in pages/_app.tsx. This structural change needs to be reverted — ExploreStateProvider must remain outside the ErrorBoundary to preserve state across page navigations.
What changed in findable-ui
parseFilterParam + isSelectedFilter — shared validation in common/filters/typeGuards.ts. Safely parses filter params; must not throw (called from reducers above ErrorBoundary).
useValidateFilterParam hook — validates filter param inside ErrorBoundary, throws DataExplorerError for invalid filters so the error page renders.
decodeFilterParamValue / initFilterState — delegate to parseFilterParam instead of raw JSON.parse.
useAsync.run() — clear stale error on new request.
Ask
For each findable-ui consumer:
RevertExploreStateProvider / DataDictionaryStateProvider to their original position outside the ErrorBoundary in pages/_app.tsx (if they were moved inside by #4783 or similar).
Summary
findable-ui#899 adds defensive validation for filter URL parameters to prevent crashes in
ExploreStateProvider's reducer and surfaces meaningful errors to the user via theuseValidateFilterParamhook inside the ErrorBoundary.However, the original data-browser#4783 also moved
ExploreStateProviderandDataDictionaryStateProviderinside theErrorBoundaryinpages/_app.tsx. This structural change needs to be reverted —ExploreStateProvidermust remain outside the ErrorBoundary to preserve state across page navigations.What changed in findable-ui
parseFilterParam+isSelectedFilter— shared validation incommon/filters/typeGuards.ts. Safely parses filter params; must not throw (called from reducers above ErrorBoundary).useValidateFilterParamhook — validates filter param inside ErrorBoundary, throwsDataExplorerErrorfor invalid filters so the error page renders.decodeFilterParamValue/initFilterState— delegate toparseFilterParaminstead of rawJSON.parse.ErrorBoundary— fixthis.render→this.resettypo.useAsync.run()— clear stale error on new request.Ask
For each findable-ui consumer:
ExploreStateProvider/DataDictionaryStateProviderto their original position outside the ErrorBoundary inpages/_app.tsx(if they were moved inside by #4783 or similar).?filter=%5B%7B%22categoryKey...(truncated)?filter=[{"facetName":"bogus","terms":["invalid"]}]?filter=[{"categoryKey":"bogus","value":["invalid"]}]Reference