feat(client): add error boundary around root App component.

This commit is contained in:
K
2026-05-03 22:42:19 +05:30
parent c54c893eac
commit fd73b8bde5
2 changed files with 38 additions and 1 deletions
@@ -0,0 +1,34 @@
import { Component } from "react";
export default class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = { hasError: false, message: "" };
}
static getDerivedStateFromError(err) {
return { hasError: true, message: err?.message || "Unknown error" };
}
componentDidCatch(err, info) {
console.error("[ErrorBoundary]", err, info);
}
render() {
if (this.state.hasError) {
return (
<div style={{ padding: "2rem", textAlign: "center" }}>
<h2>Something went wrong.</h2>
<p style={{ color: "#666", marginTop: "0.5rem" }}>{this.state.message}</p>
<button
style={{ marginTop: "1rem", padding: "0.5rem 1.5rem", cursor: "pointer" }}
onClick={() => this.setState({ hasError: false, message: "" })}
>
Try again
</button>
</div>
);
}
return this.props.children;
}
}
+4 -1
View File
@@ -4,11 +4,14 @@ import { BrowserRouter } from "react-router-dom";
import "./i18n.js";
import "./index.css";
import App from "./App.jsx";
import ErrorBoundary from "./components/ErrorBoundary.jsx";
createRoot(document.getElementById("root")).render(
<StrictMode>
<BrowserRouter>
<App />
<ErrorBoundary>
<App />
</ErrorBoundary>
</BrowserRouter>
</StrictMode>
);