Description:
Implement global error boundary and loading states for async operations (wallet connection, proof generation). Show user-friendly error messages without exposing stack traces. Add skeleton loaders or spinners where needed.
Acceptance Criteria:
React Error Boundary wraps the app (or critical sections).
Async functions (connect wallet, generate proof) show a loading spinner during execution.
Errors are caught and displayed as a non-blocking toast or inline alert.
Console errors are avoided; all errors are handled gracefully.
Loading state for wallet connection (button shows "Connecting...").
If network request fails (e.g., mock proof submission), user sees "Failed to generate proof. Please try again."
Description:
Implement global error boundary and loading states for async operations (wallet connection, proof generation). Show user-friendly error messages without exposing stack traces. Add skeleton loaders or spinners where needed.
Acceptance Criteria:
React Error Boundary wraps the app (or critical sections).
Async functions (connect wallet, generate proof) show a loading spinner during execution.
Errors are caught and displayed as a non-blocking toast or inline alert.
Console errors are avoided; all errors are handled gracefully.
Loading state for wallet connection (button shows "Connecting...").
If network request fails (e.g., mock proof submission), user sees "Failed to generate proof. Please try again."