From ae8bb69cae1d008c3d4287c55c2ff27a1b29791c Mon Sep 17 00:00:00 2001 From: Bhavyam Sharma Date: Fri, 12 Jun 2026 02:55:15 +0530 Subject: [PATCH 1/2] feat(frontend): add ErrorBoundary component to prevent full-app crashes Signed-off-by: Bhavyam Sharma --- .github/assets/error-boundary-before.png | Bin 0 -> 4254 bytes .github/assets/error-boundary-screenshot.png | Bin 0 -> 16846 bytes src/presentation/App.jsx | 79 +++++++++--------- .../components/common/ErrorBoundary.jsx | 46 ++++++++++ 4 files changed, 87 insertions(+), 38 deletions(-) create mode 100644 .github/assets/error-boundary-before.png create mode 100644 .github/assets/error-boundary-screenshot.png create mode 100644 src/presentation/components/common/ErrorBoundary.jsx diff --git a/.github/assets/error-boundary-before.png b/.github/assets/error-boundary-before.png new file mode 100644 index 0000000000000000000000000000000000000000..3ddab50b98da0d74381bd9f7089dc0c99ac14baf GIT binary patch literal 4254 zcmeAS@N?(olHy`uVBq!ia0y~yU#KiDjWttl9P!CsJDrMnSo)#sPJf*j3$WD+%Q@c zj24fhb;D@IINB;0Z4!+(6S23Efi38O(f0CadwI0IJlb9!bnWG?%4I8oO;~r(SOCQZ p_y?d#|NkF7qH+kxU;`P+%<#gUW5K!N4KhFx22WQ%mvv4FO#o+H0uulL literal 0 HcmV?d00001 diff --git a/.github/assets/error-boundary-screenshot.png b/.github/assets/error-boundary-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..7b1b77ae10881c3beea68acd696011c79d3a7b2e GIT binary patch literal 16846 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 { function App() { return ( - - - - - } - /> - - - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - - - - } - /> - + + + + + + } + /> + + + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + + } + /> + + ); } diff --git a/src/presentation/components/common/ErrorBoundary.jsx b/src/presentation/components/common/ErrorBoundary.jsx new file mode 100644 index 00000000..cbeb0255 --- /dev/null +++ b/src/presentation/components/common/ErrorBoundary.jsx @@ -0,0 +1,46 @@ +import { Component } from 'react'; +import { Box, Text, VStack, Icon, Button } from '@chakra-ui/react'; +import { FiAlertCircle, FiRefreshCw } from 'react-icons/fi'; + +export class ErrorBoundary extends Component { + constructor(props) { + super(props); + this.state = { hasError: false }; + } + + static getDerivedStateFromError() { + return { hasError: true }; + } + + componentDidCatch(error, errorInfo) { + console.error('Unhandled render error:', error, errorInfo); + } + + render() { + if (this.state.hasError) { + return ( + + + + + Something went wrong + + + An unexpected error occurred while rendering this page. Reloading the page usually resolves it. + + + + + ); + } + + return this.props.children; + } +} From 66573ca4e0bcbe0441c1eae8a7b43a598e0b5355 Mon Sep 17 00:00:00 2001 From: Bhavyam Sharma Date: Fri, 12 Jun 2026 23:15:22 +0530 Subject: [PATCH 2/2] chore: remove error boundary screenshots from source code Screenshots do not belong in the repository assets; they were requested to be shared in the PR discussion only. Signed-off-by: Bhavyam Sharma --- .github/assets/error-boundary-before.png | Bin 4254 -> 0 bytes .github/assets/error-boundary-screenshot.png | Bin 16846 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .github/assets/error-boundary-before.png delete mode 100644 .github/assets/error-boundary-screenshot.png diff --git a/.github/assets/error-boundary-before.png b/.github/assets/error-boundary-before.png deleted file mode 100644 index 3ddab50b98da0d74381bd9f7089dc0c99ac14baf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4254 zcmeAS@N?(olHy`uVBq!ia0y~yU#KiDjWttl9P!CsJDrMnSo)#sPJf*j3$WD+%Q@c zj24fhb;D@IINB;0Z4!+(6S23Efi38O(f0CadwI0IJlb9!bnWG?%4I8oO;~r(SOCQZ p_y?d#|NkF7qH+kxU;`P+%<#gUW5K!N4KhFx22WQ%mvv4FO#o+H0uulL diff --git a/.github/assets/error-boundary-screenshot.png b/.github/assets/error-boundary-screenshot.png deleted file mode 100644 index 7b1b77ae10881c3beea68acd696011c79d3a7b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16846 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