diff --git a/.Jules/changelog.md b/.Jules/changelog.md
index d438210..b4d72a0 100644
--- a/.Jules/changelog.md
+++ b/.Jules/changelog.md
@@ -7,6 +7,7 @@
## [Unreleased]
### Added
+- Error boundary system (`ErrorBoundary` component) to catch React render errors, preventing white screens and offering a "Try Again" recovery option.
- Inline form validation in Auth page with real-time feedback and proper ARIA accessibility support (`aria-invalid`, `aria-describedby`, `role="alert"`).
- Dashboard skeleton loading state (`DashboardSkeleton`) to improve perceived performance during data fetch.
- Comprehensive `EmptyState` component for Groups and Friends pages to better guide new users.
diff --git a/.Jules/todo.md b/.Jules/todo.md
index 894e27f..99f7492 100644
--- a/.Jules/todo.md
+++ b/.Jules/todo.md
@@ -34,13 +34,6 @@
- Impact: Guides new users, makes app feel polished
- Size: ~70 lines
-- [ ] **[ux]** Error boundary with retry for API failures
- - Files: Create `web/components/ErrorBoundary.tsx`, wrap app
- - Context: Catch errors gracefully with retry button
- - Impact: App doesn't crash, users can recover
- - Size: ~60 lines
- - Added: 2026-01-01
-
### Mobile
- [ ] **[ux]** Pull-to-refresh with haptic feedback on all list screens
@@ -155,4 +148,9 @@
- Files modified: `web/pages/Auth.tsx`
- Impact: Users know immediately if input is valid via inline error messages and red borders.
+- [x] **[ux]** Error boundary with retry for API failures
+ - Completed: 2026-01-13
+ - Files modified: `web/components/ErrorBoundary.tsx`, `web/App.tsx`
+ - Impact: Prevents app crashes from showing blank screens; allows user recovery via retry button.
+
_No tasks completed yet. Move tasks here after completion._
diff --git a/web/App.tsx b/web/App.tsx
index 1461005..66511c9 100644
--- a/web/App.tsx
+++ b/web/App.tsx
@@ -6,6 +6,7 @@ import { AuthProvider, useAuth } from './contexts/AuthContext';
import { ThemeProvider } from './contexts/ThemeContext';
import { ToastProvider } from './contexts/ToastContext';
import { ToastContainer } from './components/ui/Toast';
+import { ErrorBoundary } from './components/ErrorBoundary';
import { Auth } from './pages/Auth';
import { Dashboard } from './pages/Dashboard';
import { Friends } from './pages/Friends';
@@ -51,8 +52,10 @@ const App = () => {
+ We encountered an unexpected error. Please try again. +
+ + {error && ( +