validate-skills
Validates skills in this repo against agentskills.io spec and Claude Code best practices. Use via /validate-skills command.
Provides React Native performance optimization guidelines for FPS, TTI, bundle size, memory leaks, re-renders, and animations. Applies to tasks involving Hermes optimization, JS thread blocking, bridge overhead, FlashList, native modules, or debugging jank and frame drops.
Claude Code
$ npx -y skills add callstackincubator/agent-skills --skill react-native-best-practices --agent claude-code
Codex
$ npx skills add callstackincubator/agent-skills --skill react-native-best-practices -a codex -y
Cursor
$ npx skills add callstackincubator/agent-skills --skill react-native-best-practices -a cursor -y
Gemini CLI
$ npx skills add callstackincubator/agent-skills --skill react-native-best-practices -a gemini-cli -y
GitHub Copilot
$ npx skills add callstackincubator/agent-skills --skill react-native-best-practices -a github-copilot -y
OpenCode
$ npx skills add callstackincubator/agent-skills --skill react-native-best-practices -a opencode -y
Windsurf
$ npx skills add callstackincubator/agent-skills --skill react-native-best-practices -a windsurf -y
name: react-native-best-practices description: Provides React Native performance optimization guidelines for FPS, TTI, bundle size, memory leaks, re-renders, and animations. Applies to tasks involving Hermes optimization, JS thread blocking, bridge overhead, FlashList, native modules, or debugging jank and frame drops. license: MIT
Performance optimization guide for React Native applications, covering JavaScript/React, Native (iOS/Android), and bundling optimizations. Based on Callstack's "Ultimate Guide to React Native Optimization".
Reference these guidelines when:
| Priority | Category | Impact | Prefix | |----------|----------|--------|--------| | 1 | FPS & Re-renders | CRITICAL | `js-*` | | 2 | Bundle Size | CRITICAL | `bundle-*` | | 3 | TTI Optimization | HIGH | `native-*`, `bundle-*` | | 4 | Native Performance | HIGH | `native-*` | | 5 | Memory Management | MEDIUM-HIGH | `js-*`, `native-*` | | 6 | Animations | MEDIUM | `js-*` |
Impact labels are triage hints: CRITICAL first, HIGH next, MEDIUM when evidence points there.
Follow this cycle for any performance issue: **Measure → Optimize → Re-measure → Validate**
1. **Measure**: Capture baseline metrics before changes. For runtime issues, prefer commit timeline, re-render counts, slow components, heaviest-commit breakdown, and startup/TTI when available. Component tree depth or count are optional context, not substitutes. Do not recommend memoization, atomic state, or compiler changes without a measured render or FPS problem. 2. **Optimize**: Apply the targeted fix from the relevant reference 3. **Re-measure**: Run the same measurement to get updated metrics 4. **Validate**: Confirm improvement (e.g., FPS 45→60, TTI 3.2s→1.8s, bundle 2.1MB→1.6MB)
If metrics did not improve, revert and try the next suggested fix.
**Profile first:**
agent-device react-devtools status agent-device react-devtools wait --connected agent-device react-devtools profile start agent-device react-devtools profile stop agent-device react-devtools profile slow --limit 5 agent-device react-devtools profile rerenders --limit 5 agent-device react-devtools profile timeline --limit 20
Drive the target interaction with normal `agent-device` commands between `profile start` and `profile stop`.
Manual fallback when `agent-device` is unavailable: open React Native DevTools from Metro (`j`) or the Dev Menu, use the Profiler tab, and record the same interaction.
For release-build React component profiling, connect [`@callstack/inspector`](https://github.com/callstackincubator/inspector#inspector) first so React DevTools can attach to the release app, then run the `agent-device react-devtools` flow above.
**Common fixes:**
**Analyze bundle:**
npx react-native bundle \ --entry-file index.js \ --bundle-output output.js \ --platform ios \ --sourcemap-output output.js.map \ --dev false --minify true npx source-map-explorer output.js --no-border-checks
**Verify improvement after optimization:**
# Record baseline size before changes ls -lh output.js # e.g., Before: 2.1 MB # After applying fixes, re-bundle and compare npx react-native bundle --entry-file index.js --bundle-output output.js \ --platform ios --dev false --minify true ls -lh output.js # e.g., After: 1.6 MB (24% reduction)
**Common fixes:**
**Measure TTI:**
**Common fixes:**
Callstack Agent Skills give AI coding assistants practical React Native knowledge drawn from our work on production apps.
Validates skills in this repo against agentskills.io spec and Claude Code best practices. Use via /validate-skills command.
Assesses whether and how an existing mobile product should migrate to React Native. Use when auditing one or more product…
Scaffolds React Native libraries with create-react-native-library for standalone libraries or local native modules and views. Use…
GitHub Actions workflow patterns for React Native iOS simulator and Android emulator cloud builds with downloadable artifacts.…
Implements an accepted incremental brownfield migration from native iOS or Android to React Native or Expo using…
Reviews React Native TV apps for focus/D-pad navigation, 10-foot UI layout, TV playback/DRM integration, low-memory TV…
Decompile Android APK, XAPK, JAR, and AAR files using jadx or Fernflower/Vineflower. Reverse engineer Android apps, extract HTTP…