FlashList v2: A Ground-Up Rewrite for React Native’s New Architecture
Article Summary
Shopify just eliminated one of React Native's biggest pain points: guessing item sizes for performant lists.
FlashList v2 is a complete ground-up rewrite that leverages React Native's New Architecture to deliver faster, more precise list rendering. With 2M+ monthly downloads, it now powers thousands of lists in Shopify's production app without requiring size estimates.
Key Takeaways
- No more estimatedItemSize prop: synchronous layout measurements eliminate all estimates
- 50% less blank area while scrolling vs v1
- Pixel-perfect scrollToIndex through progressive refinement and real-time corrections
- Zero native code dependencies means fewer platform-specific bugs
- Horizontal lists now auto-resize and coordinate with parent lists
FlashList v2 removes the cognitive load of list optimization by using synchronous measurements and progressive rendering to deliver smooth 60 FPS performance automatically.
About This Article
FlashList v1 used async bridge calls to measure layouts, which created delays between requests and responses. This made it hard to render clean layouts without fixes applied on the native UI thread for both Android and iOS.
Talha Naqvi's team used React Native's New Architecture to make layout measurements synchronous. This let them apply corrections inside useLayoutEffect before anything painted to the screen, so they didn't need native code anymore.
The rewrite cut blank areas during scrolling by up to 50% compared to v1. It also removed the platform-specific code and reduced the maintenance work that came with native dependencies.