Working on Wasal App at Matious Digital, we inherited a React Native codebase with 200ms interaction delays, thrashing FlatList renders, and an 80 MB JavaScript bundle. The app had real users, real traffic, and real frustration. This is what we fixed.
“The render pipeline is a contract. Break it once with an unnecessary re-render and you'll spend weeks chasing the ghost of lost frames.”
The first lever is always the same: stop re-rendering what hasn't changed. React.memo is not a silver bullet — misapplied, it costs more in comparison overhead than the re-render itself. The real win comes from flattening state architecture so that leaf components subscribe only to the slice of state they care about. We split a single monolithic context into four targeted contexts, and 60% of avoidable renders disappeared.
List performance is its own discipline. FlatList on React Native is powerful but unforgiving. We introduced getItemLayout for fixed-height rows (eliminating layout measurement overhead), tuned windowSize to 5 (down from the default 21) for lower memory pressure, and built a keyExtractor that returned stable, unique identifiers from the server response. The result: scroll frame time dropped from 28ms to 14ms on a mid-range Android.
Image loading deserves attention beyond just caching. We moved from the default Image component to a lazy-loading pattern using Intersection Observer-equivalent scroll thresholds, added explicit width/height to every image to prevent layout shifts, and used lower-quality progressive thumbnails with a blur-up reveal. Data usage fell by 35% and perceived load time halved.
Finally, bundle analysis. We used Metro's bundle visualization and found three third-party libraries responsible for 18 MB of unused code. Two were replaced with lighter alternatives; one was tree-shaken via babel-plugin-transform-imports. Startup time — the first meaningful render — improved by 1.2 seconds. On a cold launch on a Snapdragon 665, that is the difference between an app people open again and one they uninstall.