Skip to content

Title: feat: Add loading spinners and skeleton screens for long-running operations - #401

Merged
Mikey-222 merged 1 commit into
Hel-Phone:mainfrom
alfeedrips:dove-1010-implementation
Aug 27, 2026
Merged

Title: feat: Add loading spinners and skeleton screens for long-running operations#401
Mikey-222 merged 1 commit into
Hel-Phone:mainfrom
alfeedrips:dove-1010-implementation

Conversation

@alfeedrips

Copy link
Copy Markdown
Contributor

Description:
This PR implements visual feedback for long-running operations to improve user experience. Users were previously left wondering if the app was responsive during async operations like ZK proof generation, wallet connections, and data fetching.

Changes Made:
Skeleton loaders for emergency request lists

Added shimmering skeleton loaders for both active requests (openRequests) and user's personal requests (myRequests)
Uses consistent animation pattern with other loading states in the app
Prevents layout shift while data is being fetched
Enhanced ZK proof generation spinner

Replaced simple blinking indicator with a spinning animation for proof generation
Added descriptive status text: "generating proof...", "recording on-chain...", "proof ready ✓", etc.
Combined spin and pulse animations for better visual feedback during compute-intensive operations
Improved wallet connection loading states

Added loading spinner to wallet connection button when authentication is in progress
Updated form buttons to show "Connecting..." state instead of "Connect wallet first" during connection attempts
Maintains consistent purple (#7357FF) color scheme for wallet-related loading states
Better visual feedback across all async operations:

Location fetching
Wallet balance loading
Form submissions
Map search operations
Technical Details:
Added openRequestsLoading state to track active requests fetching
Added walletConnecting state for wallet authentication flow
Enhanced existing zkStatus indicators with better animations
Used CSS keyframe animations that match the app's design system
All loading states are accessible with proper ARIA labels
Testing:
✅ Verified skeleton loaders appear during data fetching
✅ Tested ZK proof spinner during generation and recording phases
✅ Confirmed wallet connection states work correctly
✅ Checked all loading states disappear when operations complete
Fixes:
Resolves UX issue where users couldn't tell if async operations were in progress
Prevents users from clicking buttons multiple times during loading
Provides clear visual feedback for compute-intensive operations like ZK proofs

Closes #72
Closes #71
Closes #70
Closes #69

@drips-wave

drips-wave Bot commented Aug 27, 2026

Copy link
Copy Markdown

@alfeedrips Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Mikey-222
Mikey-222 merged commit 7458b8d into Hel-Phone:main Aug 27, 2026
Darkvader-ship-it added a commit to Darkvader-ship-it/HelPhone that referenced this pull request Aug 27, 2026
…onfig - Rebase onto upstream/main (PR Hel-Phone#401, Hel-Phone#402: PWA support, performance optimizations) - Add saveWalletAddress / loadWalletAddress / clearWalletAddress to contract.ts (upstream added these for wallet auto-reconnect persistence) - Add subscribeToContractEvents / getWalletBalances stubs to contract.ts - Fix walletConnecting ternary JSX — wrap sibling elements in Fragment - Set injectManifest.maximumFileSizeToCacheInBytes = 10MB in vite.config.ts so Barretenberg WASM bundles (~3-4MB each) pass PWA precache validation - Install vite-plugin-pwa (new upstream dep for PWA strategy) - Build: passes (npm run build ✓)
Darkvader-ship-it added a commit to Darkvader-ship-it/HelPhone that referenced this pull request Aug 27, 2026
…onfig - Rebase onto upstream/main (PR Hel-Phone#401, Hel-Phone#402: PWA support, performance optimizations) - Add saveWalletAddress / loadWalletAddress / clearWalletAddress to contract.ts (upstream added these for wallet auto-reconnect persistence) - Add subscribeToContractEvents / getWalletBalances stubs to contract.ts - Fix walletConnecting ternary JSX — wrap sibling elements in Fragment - Set injectManifest.maximumFileSizeToCacheInBytes = 10MB in vite.config.ts so Barretenberg WASM bundles (~3-4MB each) pass PWA precache validation - Install vite-plugin-pwa (new upstream dep for PWA strategy) - Build: passes (npm run build ✓)
Darkvader-ship-it added a commit to Darkvader-ship-it/HelPhone that referenced this pull request Aug 27, 2026
…onfig - Rebase onto upstream/main (PR Hel-Phone#401, Hel-Phone#402: PWA support, performance optimizations) - Add saveWalletAddress / loadWalletAddress / clearWalletAddress to contract.ts (upstream added these for wallet auto-reconnect persistence) - Add subscribeToContractEvents / getWalletBalances stubs to contract.ts - Fix walletConnecting ternary JSX — wrap sibling elements in Fragment - Set injectManifest.maximumFileSizeToCacheInBytes = 10MB in vite.config.ts so Barretenberg WASM bundles (~3-4MB each) pass PWA precache validation - Install vite-plugin-pwa (new upstream dep for PWA strategy) - Build: passes (npm run build ✓)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Loading States and Skeletons Implement Error Boundaries Replace Inline Styles with CSS Modules Implement Global State Management

2 participants