fix: auto-reset transient React error #185 silently

This commit is contained in:
haorwen
2026-06-30 10:12:01 +08:00
parent d7844c91ef
commit 461be4a0a5
+20 -1
View File
@@ -1,4 +1,4 @@
import { ReactNode } from "react";
import { ReactNode, useEffect } from "react";
import { ErrorBoundary } from "react-error-boundary";
import StyledButton from "./styled/Button";
@@ -6,7 +6,26 @@ type FallbackProps = {
error: Error;
resetErrorBoundary: (...args: Array<unknown>) => void;
};
// Transient errors that are safe to auto-recover from silently.
// #185 = Maximum update depth exceeded (loop re-render, resolves on reset).
const AUTO_RESET_PATTERNS = [/Minified React error #185/];
function isAutoResetError(error: Error): boolean {
return AUTO_RESET_PATTERNS.some((p) => p.test(error.message));
}
function ErrorFallback({ error, resetErrorBoundary }: FallbackProps) {
useEffect(() => {
if (isAutoResetError(error)) {
resetErrorBoundary();
}
}, [error, resetErrorBoundary]);
if (isAutoResetError(error)) {
return null;
}
return (
<div role="alert" className="text-lg text-red-600">
<p>Something went wrong:</p>