posts/rn-performance-checklist.md · 2026-09-20
The React Native Performance Checklist We Run Before Launch
Not financial advice. Verify claims independently.
Engineering notes from the RN/APPS desk. Verify claims independently — not a verified account of any production system.
Before every Stock Picks (and client) launch we run the same checklist. It catches the issues that only appear on a warm mid-tier Android after thirty minutes of scrolling.
Lists
- Prefer FlashList (or LegendList) for any feed over ~50 rows
- Set
estimatedItemSizefrom a real device measurement, not a guess - Avoid anonymous
renderItemclosures that close over changing props every tick - Memoize row components; compare on
symbol+lastonly
Reanimated & UI thread
- Move opacity / transform work into worklets — never
setStatefor frame animations - Use
runOnUIfor gesture-driven charts - Profile with Reanimated's logger in staging builds only
Memory
- Detach listeners in
useEffectcleanup (WebSocket ticks are the usual leak) - Cap image caches; recycle Skia surfaces when leaving a route
- Watch Hermes heap on a 30-minute soak test — leaks show as steady climb, not spikes
Startup
- Defer non-critical native modules until after first paint
- Keep the splash until fonts + critical query settle — not until every store hydrates
- Measure TTI on a throttled Android emulator and a physical SE-class iPhone
Networking
- Batch quote updates (100–250ms) instead of per-tick re-renders
- Prefer WebSocket fan-in with a single store write
- Gate analytics until interaction — PostHog/Sentry should not block first frame
Ship gate
We do not cut a store build until:
- FlashList scroll stays ≥ 55 fps on the watchlist
- Cold start to interactive < 2.5s on mid-tier Android
- 30-minute soak with no Hermes heap climb
- OTA fingerprint matches the binary under test
Want to feel the result? Practice on Stock Picks — the same checklist shipped that UI.
cta/stockspicks.sh
Put it into practice
Rehearse on Stock Picks — the Expo fintech app from the team behind RN/APPS.
$ open stockspicks →