zereight-react-native-optimizer

React Native performance review checklist for code reviews. Use when reviewing RN code to detect rendering, animation, and native performance regressions. Complements zereight-review — run both together on RN PRs.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "zereight-react-native-optimizer" with this command: npx skills add zereight/skill/zereight-skill-zereight-react-native-optimizer

zereight-react-native-optimizer

Focused on performance correctness during code review. The goal is not to teach optimization — it is to catch regressions before they ship.

When to use

Use alongside zereight-review when:

  • Reviewing React Native or Expo PRs
  • Auditing list, animation, or native module changes
  • Checking screen transitions or gesture interactions

Not a replacement for react-native-best-practices or vercel-react-native-skills — those explain how to optimize. This skill detects what went wrong in a diff.

Prerequisites

The following skills provide the full optimization context this skill references:

  • react-native-best-practices (callstackincubator)
  • vercel-react-native-skills (vercel-labs)
  • react-native-animations (pluginagentmarketplace)
  • react-native-best-practices (callstackincubator)
  • agent-device (callstackincubator)

Priority order

  1. Animation on JS thread (causes visible jank — always 🟠 Major or higher)
  2. List rendering with FlatList instead of FlashList for large datasets
  3. Unnecessary re-renders in hot paths (list items, animated components)
  4. Memory leaks (listeners, subscriptions not cleaned up)
  5. Bridge overuse (synchronous calls, large payloads)
  6. Bundle size regressions
  7. Image loading / caching issues

Rendering checks

Run on every component change. See references/rendering.md for detail.

PatternSeverity
FlatList used for list with 50+ items🛠️ 🟠 Major
keyExtractor returns index⚠️ 🟡 Minor
Inline function/object passed as prop to memoized child🛠️ 🟡 Minor
React.memo wrapping component that receives new object ref each render⚠️ 🟡 Minor
Context provider too high — causes full subtree re-render⚠️ 🟠 Major
useSelector selecting large slice of store🛠️ 🔵 Trivial
Missing useCallback on event handler passed to child🛠️ 🔵 Trivial
StyleSheet defined inside component body🛠️ 🟡 Minor

Animation checks

Run when animation, gesture, or transition code is changed. See references/animation.md for detail.

PatternSeverity
Animated.Value (legacy API) used instead of Reanimated shared value🛠️ 🟠 Major
Animation drives style via setState (runs on JS thread)⚠️ 🟠 Major
Worklet function accesses JS-side state directly (no runOnJS)⚠️ 🟠 Major
useAnimatedStyle depends on non-shared-value reactive data⚠️ 🟡 Minor
Touch handled with TouchableOpacity instead of GestureDetector in animated context🛠️ 🟡 Minor
LayoutAnimation used instead of Reanimated layout animations🛠️ 🔵 Trivial
Animation not cancelled on unmount⚠️ 🟡 Minor

Native / bridge checks

Run when native modules, images, or bundle changes are involved. See references/native.md for detail.

PatternSeverity
Event listener / subscription not removed in cleanup⚠️ 🟠 Major
NativeModules called synchronously in render path⚠️ 🟠 Major
Large object passed over bridge (>10KB)⚠️ 🟡 Minor
Image loaded without resizeMode or explicit width/height🛠️ 🟡 Minor
Image source is remote URL without caching strategy🛠️ 🟡 Minor
New dependency added without checking bundle size impact⚪ Info
console.log left in production code path🧹 🔵 Trivial

Findings format

Use the same format as zereight-review:

### [type] [severity] Title

**Condition:** <what triggers this>
**Impact:** <FPS drop / memory leak / jank / crash>
**Evidence:** `file:line` — short snippet
**Minimal fix:** <smallest safe change>

Output template

When running as standalone review:

  1. Performance Summary (2-3 lines: what changed, overall signal)
  2. ⚠️ Performance Findings (ordered 🟠→🟡→🔵)
  3. 🎯 Verdict (No regressions | Minor regressions | Block — performance regression)

When integrated with zereight-review, append findings to the existing ⚠️ Findings section under a --- Performance --- subheader.

Quick heuristics

  • If it touches a list → check FlashList, keyExtractor, and item memoization
  • If it touches animation → verify UI thread execution (Reanimated, not setState)
  • If it mounts/unmounts → verify all listeners/subscriptions have cleanup
  • If it adds a native module call → verify async, not in render, not in hot loop
  • If it adds a new package → note bundle size concern as ⚪ Info

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

zereight-review

No summary provided by upstream source.

Repository SourceNeeds Review
General

zereight-react-native

No summary provided by upstream source.

Repository SourceNeeds Review
General

zereight-react-native-testing

No summary provided by upstream source.

Repository SourceNeeds Review