Background
Course and quiz lists currently render all items in memory, causing severe frame drops with 100+ items. React Native's FlatList with virtualization renders only visible items, reducing memory usage by 80%+ and maintaining 60fps scrolling even with thousands of items.
Description
The course list and quiz screens currently render all items in the DOM, causing performance degradation when displaying large lists (100+ items). Implement React Native's FlatList with proper getItemLayout and maxToRenderPerBatch settings.
Current Behavior
All list items rendered. Frame drops to 15-20fps with 100+ items. Memory spike during scroll.
Expected Behavior
Only visible items + buffer rendered. Smooth 60fps scrolling with 1000+ items. Memory stable during scroll.
Impact
🎬 Maintain 60fps during scroll even with 1000+ items
💾 Memory usage reduced by 70-80%
📱 Better performance on low-end devices
Acceptance Criteria
Implementation Hints
Convert ScrollView-based lists to FlatList. Key props: keyExtractor, getItemLayout, maxToRenderPerBatch, updateCellsBatchingPeriod. Use React Profiler to verify.
Performance Metrics
Before:
- fps: 15-20
- memory: 300 MB
- itemsRendered: 100+ (all)
After (Target):
- fps: 60
- memory: 80 MB (-73%)
- itemsRendered: 15-20 (visible + buffer)
Related Issues
Background
Course and quiz lists currently render all items in memory, causing severe frame drops with 100+ items. React Native's FlatList with virtualization renders only visible items, reducing memory usage by 80%+ and maintaining 60fps scrolling even with thousands of items.
Description
The course list and quiz screens currently render all items in the DOM, causing performance degradation when displaying large lists (100+ items). Implement React Native's FlatList with proper getItemLayout and maxToRenderPerBatch settings.
Current Behavior
All list items rendered. Frame drops to 15-20fps with 100+ items. Memory spike during scroll.
Expected Behavior
Only visible items + buffer rendered. Smooth 60fps scrolling with 1000+ items. Memory stable during scroll.
Impact
🎬 Maintain 60fps during scroll even with 1000+ items
💾 Memory usage reduced by 70-80%
📱 Better performance on low-end devices
Acceptance Criteria
Implementation Hints
Convert ScrollView-based lists to FlatList. Key props: keyExtractor, getItemLayout, maxToRenderPerBatch, updateCellsBatchingPeriod. Use React Profiler to verify.
Performance Metrics
Before:
After (Target):
Related Issues