From erne-universal
Diagnoses and optimizes React Native app performance: slow startup, janky scrolling, stuttering animations, large bundles, high memory.
npx claudepluginhub jubakitiashvili/everything-react-native-expoThis skill uses the workspace's default tool permissions.
You are performing a systematic performance diagnosis on a React Native application. Follow this step-by-step process.
Generates platform-native social content for X, LinkedIn, TikTok, YouTube, newsletters from source material like articles, demos, docs, or notes. Adapts voice and format per platform.
Interactively installs Everything Claude Code skills and rules to user-level (~/.claude) or project-level (.claude) directories, verifies paths, and optimizes files. Activate on 'configure ecc' or setup requests.
Reorganizes X and LinkedIn networks: review-first pruning of low-value follows, priority-based add/follow recommendations, and drafts warm outreach in user's voice.
You are performing a systematic performance diagnosis on a React Native application. Follow this step-by-step process.
Invoke when:
| Symptom | Likely Cause | First Check |
|---|---|---|
| Slow startup | Large bundle, heavy init | Bundle size, eager imports |
| Janky scrolling | List renderer, heavy cells | FlatList vs FlashList, cell complexity |
| Stuttering animations | JS thread blocking | Worklets, useAnimatedStyle |
| High memory | Leaks, large images | Image caching, subscription cleanup |
| Slow navigation | Heavy screens, eager loading | Lazy loading, screen weight |
Bundle Analysis:
npx react-native-bundle-visualizer
# or for Expo:
npx expo export --dump-sourcemap
Target: < 1.5MB JavaScript bundle
FPS Monitoring:
useFrameCallback from ReanimatedTTI (Time to Interactive):
Memory:
Bundle Size:
React.lazy() with SuspenseRendering:
FlatList with FlashList + estimatedItemSizeReact.memouseCallback for event handlers passed to childrenAnimations:
useAnimatedStyle instead of inline animated valueswithSequence/withDelaycancelAnimation for cleanupImages:
expo-image with cachePolicy="memory-disk"Memory:
useEffect returnRe-measure after each optimization:
## Performance Report
| Metric | Before | After | Target | Status |
|--------|--------|-------|--------|--------|
| Bundle size | 2.1MB | 1.4MB | <1.5MB | PASS |
| TTI | 3.2s | 1.8s | <2s | PASS |
| List FPS | 45fps | 60fps | 60fps | PASS |
| Memory (5min) | +80MB | +12MB | <20MB | PASS |