- Used
Math.random()for rate simulation instead of real forex API - History stored in memory only (resets on page refresh)
- Basic input validation (could be more comprehensive)
- Simple debouncing with setTimeout instead of proper debounce utility
- Fix EUR symbol overlapping with number input arrows
- No PropTypes or TypeScript for type safety, since this is a js project, we could benefit from using prop types
- Rate fluctuation range (-0.05 to +0.05) hardcoded
- Magic numbers scattered throughout code (should use constants and would use it if had time)
- No unit tests for hooks and components
- No E2E tests (Cypress/Playwright recommended)
- Edge cases not fully tested (negative numbers, very large values, rapid switching)
- Not fully optimized for mobile devices (< 640px)
- Table layout may break on small screens
- Touch targets could be larger for mobile
- No testing on tablets or large desktop screens (> 1920px)
- Could use React.memo for performance optimization, only used in useConverter, could be used elsewhere
- Missing error boundary for graceful error handling
- Console warnings should be addressed
- Could extract magic numbers to constants file
- Missing ARIA labels on some interactive elements
- Keyboard navigation could be improved, it is a must because not all users can use mouse and keyboard
- No focus management for modals/overlays
- Screen reader support not tested
- Add loading state when app first mounts
- Toast notifications for lock/unlock actions
- Confirmation before clearing history
- Better visual feedback when override auto-unlocks
- Copy-to-clipboard button for converted values