rn-performance
Optimize React Native Performance
React Native apps can suffer from slow lists, extra renders, and JS thread stalls. This skill provides focused patterns for faster FlatList screens, memoized components, optimized selectors, cached images, and profiling.
Install with my Agent
Copy this request to your Agent. It includes the canonical Skill page and manifest.
Review the Skillstore skill "rn-performance" from https://skillstore.io/skills/cjharmath-rn-performance.md and its manifest at https://skillstore.io/api/skills/cjharmath-rn-performance/manifest. Verify the artifact. You may proceed after verification, subject to the environment's own policy.Your Agent should still show its plan and request any confirmation required by the security policy.
Agent-readable resources
Use these links when an AI agent, crawler, or script needs clean context instead of reading the full page.
Test it
Using "rn-performance". A player directory screen stutters while scrolling through hundreds of rows.
Expected outcome:
- Use stable item keys based on player IDs.
- Move row rendering into a memoized item component.
- Add getItemLayout if row height is fixed.
- Consider FlashList if profiling still shows list bottlenecks.
Using "rn-performance". A dashboard re-renders every card when one Zustand value changes.
Expected outcome:
- Avoid selecting the whole store in the dashboard.
- Use specific selectors for each card value.
- Use shallow comparison when a component needs several related values.
- Profile again to confirm only changed cards render.
Using "rn-performance". A screen freezes briefly after navigation when it calculates rankings.
Expected outcome:
- Profile the JS thread during navigation.
- Defer heavy work until after interactions complete.
- Memoize ranking inputs when they are reused.
- Move long-running computation away from the initial render path.
Security Audit
SafeAll static findings were adjudicated as false positives. The detections come from Markdown fences, inline backticks, TypeScript examples, and a React.memo prop comparison in a documentation-only skill. No prompt injection, external command execution, network access, filesystem access, or data exfiltration intent was found in SKILL.md.
Risk Factors
⚙️ External commands (40)
Share & cite this report
Share the versioned assessment report, neutral badge, embed card, and citations. Skillstore reports evidence without deciding whether this Skill is safe.
Copy report link
https://skillstore.io/skills/cjharmath-rn-performance/audits/7?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_reportMarkdown badge
[](https://skillstore.io/skills/cjharmath-rn-performance?utm_source=security_passport_badge)HTML badge
<a href="https://skillstore.io/skills/cjharmath-rn-performance?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/cjharmath-rn-performance/security.svg" alt="Skillstore security assessment" loading="lazy"></a>Embed card
<iframe src="https://skillstore.io/embed/skills/cjharmath-rn-performance.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>Academic citations (APA · BibTeX · CFF)
APA citation
CJHarmath. (2026). rn-performance security audit report (audit version 7) [Author version unspecified]. Skillstore. https://skillstore.io/skills/cjharmath-rn-performance/audits/7BibTeX citation
@techreport{cjharmath-cjharmath-rn-performance-2026,
author = {CJHarmath},
title = {rn-performance security audit report (audit version 7)},
institution = {Skillstore},
year = {2026},
number = {7},
url = {https://skillstore.io/skills/cjharmath-rn-performance/audits/7},
note = {Author version unspecified}
}CITATION.cff
cff-version: 1.2.0
message: "If you use this Skill, cite its author and this versioned security audit report."
title: "rn-performance security audit report (audit version 7)"
version: "unspecified"
type: report
authors:
- name: "CJHarmath"
date-released: "2026-07-06"
url: "https://skillstore.io/skills/cjharmath-rn-performance/audits/7"
identifiers:
- type: other
value: "skillstore:cjharmath-rn-performance:audit:7"
description: "Skillstore immutable audit report identifier"
Skillstore Score
Why this score Evidence Confidence: HighWhat You Can Build
Fix Janky List Screens
Diagnose slow FlatList screens and apply stable keys, item layout, memoized rows, and render window settings.
Review Release Performance
Check list-heavy screens for avoidable renders, expensive selectors, image cache issues, and JS thread blocking before release.
Teach Render Hygiene
Use the examples to explain when memoization helps, when it adds overhead, and how to profile render behavior.
Try These Prompts
Review this React Native list screen for obvious performance issues. Focus on stable keys, renderItem, getItemLayout, and inline callbacks.
Analyze these components for unnecessary re-renders. Recommend where React.memo, useMemo, useCallback, or StyleSheet.create would help.
Review this Zustand usage for selector problems. Suggest focused selectors, shallow comparison, and safer component boundaries.
Create a prioritized performance plan for this React Native feature. Include profiling steps, list changes, image handling, memoization, and JS thread risks.
Best Practices
- Profile first, then optimize the component or list that actually causes delay.
- Use stable props and selectors before adding broad memoization.
- Validate improvements on real devices, especially lower-end Android hardware.
Avoid
- Do not memoize every simple value without measuring the cost.
- Do not pass inline objects or callbacks into memoized child components.
- Do not select an entire Zustand store when a component needs only one value.