4.0 KiB
4.0 KiB
Frontend Quality Checklist
React/Next.js Component Quality
Component Structure
- Single Responsibility - Each component has one clear purpose
- Proper TypeScript Types - Props interface defined with no
any - Component Size - Under 300 lines (extract smaller components if larger)
- Named Exports - Prefer named exports for better refactoring
- File Organization - Component, styles, tests, and types co-located
React Best Practices
- Hooks Usage - Hooks used correctly (no conditional hooks)
- useEffect Dependencies - All dependencies included in dependency array
- Memoization - useMemo/useCallback used for expensive operations
- Key Props - Proper unique keys on list items
- Ref Usage - useRef used appropriately for DOM access
- Error Boundaries - Error boundaries wrap components that may fail
State Management
- Local State - useState for component-local state
- Server State - React Query/SWR for API data
- Global State - Zustand/Redux only when necessary
- Derived State - Computed values use useMemo
- State Location - State lifted to appropriate level
Performance
- Code Splitting - Large components lazy loaded
- Bundle Size - No unnecessary dependencies
- Re-renders - React DevTools shows minimal re-renders
- Images Optimized - next/image or optimized images
- Virtualization - Long lists use react-virtual or similar
Styling
- Consistent Approach - One styling method used consistently
- Responsive Design - Mobile, tablet, desktop breakpoints
- Dark Mode - Dark mode support if required
- Design System - Follows established design tokens
- No Inline Styles - Styles in CSS/Tailwind, not inline (unless dynamic)
Accessibility
- Semantic HTML - article, nav, main, section used appropriately
- ARIA Labels - Proper ARIA labels on interactive elements
- Keyboard Navigation - All interactions work with keyboard
- Focus Management - Visible focus indicators
- Color Contrast - Meets WCAG AA standards (4.5:1)
- Screen Reader - Tested with screen reader
- Form Labels - All inputs have associated labels
- Alt Text - All images have descriptive alt text
User Experience
- Loading States - Skeletons or spinners during data fetching
- Error States - User-friendly error messages
- Empty States - Helpful messages when no data
- Success Feedback - Confirmation of successful actions
- Optimistic Updates - UI updates before server confirms (when appropriate)
- Transitions - Smooth transitions between states
Testing
- Component Tests - React Testing Library tests written
- User Interactions - Click, type, submit events tested
- Conditional Rendering - All branches tested
- Error Cases - Error states tested
- Accessibility Tests - axe-core or similar used
- Coverage - >80% test coverage
TypeScript Quality
- Props Typed - Complete interface for props
- Event Handlers - Proper event types used
- Children Typing - ReactNode for children prop
- Generics - Generic components properly typed
- No Any - No
anytypes (useunknownif necessary)
Build & Performance
- Lighthouse Score - >90 on all metrics
- Core Web Vitals - LCP < 2.5s, FID < 100ms, CLS < 0.1
- Bundle Analysis - No duplicate dependencies
- Tree Shaking - Unused code eliminated
- Critical CSS - Above-fold CSS inlined
Security
- XSS Prevention - User input sanitized
- CSP Headers - Content Security Policy configured
- Secure Cookies - httpOnly, secure flags set
- No Secrets - No API keys or secrets in frontend code
- HTTPS Only - All requests over HTTPS
Quality Rating: ⭐⭐⭐⭐⭐
Ready for Production: [ ] Yes [ ] No