File contents Expo React Native Performance Best Practices
Comprehensive performance optimization guide for Expo React Native applications. Contains 42 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
Writing new React Native components or screens
Implementing lists with FlatList or FlashList
Adding animations or transitions
Optimizing images and asset loading
Reviewing code for performance issues
Rule Categories by Priority
Priority
Category
Impact
Prefix
1
App Startup & Bundle Size
CRITICAL
startup-
2
List Virtualization
CRITICAL
list-
3
Re-render Optimization
HIGH
rerender-
4
Animation Performance
HIGH
anim-
5
Image & Asset Loading
MEDIUM-HIGH
asset-
6
Memory Management
MEDIUM
mem-
7
Async & Data Fetching
MEDIUM
async-
8
Platform Optimizations
LOW-MEDIUM
platform-
Quick Reference
1. App Startup & Bundle Size (CRITICAL)
startup-enable-hermes - Enable Hermes JavaScript engine
startup-remove-console-logs - Remove console logs in production
startup-splash-screen-control - Control splash screen visibility
startup-preload-assets - Preload critical assets during splash
startup-async-routes - Use async routes for code splitting
startup-cherry-pick-imports - Use direct imports instead of barrel files
2. List Virtualization (CRITICAL)
list-use-flashlist - Use FlashList instead of FlatList
list-estimated-item-size - Provide accurate estimatedItemSize
list-get-item-type - Use getItemType for mixed lists
list-stable-render-item - Stabilize renderItem with useCallback
list-get-item-layout - Provide getItemLayout for fixed heights
list-memoize-items - Memoize list item components
3. Re-render Optimization (HIGH)
rerender-use-memo-expensive - Memoize expensive computations
rerender-use-callback-handlers - Stabilize callbacks with useCallback
rerender-functional-setstate - Use functional setState updates
rerender-lazy-state-init - Use lazy state initialization
rerender-split-context - Split context by update frequency
rerender-derive-state - Derive state instead of syncing
4. Animation Performance (HIGH)
anim-use-native-driver - Enable native driver for animations
anim-use-reanimated - Use Reanimated for complex animations
anim-layout-animation - Use LayoutAnimation for simple transitions
anim-transform-not-dimensions - Animate transform instead of dimensions
anim-interaction-manager - Defer heavy work during animations
5. Image & Asset Loading (MEDIUM-HIGH)
asset-use-expo-image - Use expo-image for image loading
asset-prefetch-images - Prefetch images before display
asset-optimize-image-size - Request appropriately sized images
asset-use-webp-format - Use WebP format for images
asset-recycling-key - Use recyclingKey in FlashList images
6. Memory Management (MEDIUM)
mem-cleanup-subscriptions - Clean up subscriptions in useEffect
mem-clear-timers - Clear timers on unmount
mem-abort-fetch - Abort fetch requests on unmount
mem-avoid-inline-objects - Avoid inline objects in props
mem-limit-list-data - Limit list data in memory
7. Async & Data Fetching (MEDIUM)
async-parallel-fetching - Fetch independent data in parallel
async-defer-await - Defer await until value needed
async-batch-api-calls - Batch related API calls
async-cache-responses - Cache API responses locally
async-refetch-on-focus - Refetch data on screen focus
8. Platform Optimizations (LOW-MEDIUM)
platform-android-overdraw - Reduce Android overdraw
platform-ios-text-rendering - Optimize iOS text rendering
platform-android-proguard - Enable ProGuard for Android release
platform-conditional-render - Platform-specific optimizations
How to Use
Read individual reference files for detailed explanations and code examples:
Section definitions - Category structure and impact levels
Rule template - Template for adding new rules
Full Compiled Document
For the complete guide with all rules expanded, see AGENTS.md.
Reference Files
File
Description
AGENTS.md
Complete compiled guide with all rules
references/_sections.md
Category definitions and ordering
assets/templates/_template.md
Template for new rules
metadata.json
Version and reference information
1 --- 2 name: expo-react-native-performance 3 description: Expo React Native Performance Best Practices 4 --- 5 # Expo React Native Performance Best Practices 6 7 Comprehensive performance optimization guide for Expo React Native applications. Contains 42 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation. 8 9 ## When to Apply 10 11 Reference these guidelines when: 12 - Writing new React Native components or screens 13 - Implementing lists with FlatList or FlashList 14 - Adding animations or transitions 15 - Optimizing images and asset loading 16 - Reviewing code for performance issues 17 18 ## Rule Categories by Priority 19 20 | Priority | Category | Impact | Prefix | 21 |----------|----------|--------|--------| 22 | 1 | App Startup & Bundle Size | CRITICAL | `startup-` | 23 | 2 | List Virtualization | CRITICAL | `list-` | 24 | 3 | Re-render Optimization | HIGH | `rerender-` | 25 | 4 | Animation Performance | HIGH | `anim-` | 26 | 5 | Image & Asset Loading | MEDIUM-HIGH | `asset-` | 27 | 6 | Memory Management | MEDIUM | `mem-` | 28 | 7 | Async & Data Fetching | MEDIUM | `async-` | 29 | 8 | Platform Optimizations | LOW-MEDIUM | `platform-` | 30 31 ## Quick Reference 32 33 ### 1. App Startup & Bundle Size (CRITICAL) 34 35 - [`startup-enable-hermes`](references/startup-enable-hermes.md) - Enable Hermes JavaScript engine 36 - [`startup-remove-console-logs`](references/startup-remove-console-logs.md) - Remove console logs in production 37 - [`startup-splash-screen-control`](references/startup-splash-screen-control.md) - Control splash screen visibility 38 - [`startup-preload-assets`](references/startup-preload-assets.md) - Preload critical assets during splash 39 - [`startup-async-routes`](references/startup-async-routes.md) - Use async routes for code splitting 40 - [`startup-cherry-pick-imports`](references/startup-cherry-pick-imports.md) - Use direct imports instead of barrel files 41 42 ### 2. List Virtualization (CRITICAL) 43 44 - [`list-use-flashlist`](references/list-use-flashlist.md) - Use FlashList instead of FlatList 45 - [`list-estimated-item-size`](references/list-estimated-item-size.md) - Provide accurate estimatedItemSize 46 - [`list-get-item-type`](references/list-get-item-type.md) - Use getItemType for mixed lists 47 - [`list-stable-render-item`](references/list-stable-render-item.md) - Stabilize renderItem with useCallback 48 - [`list-get-item-layout`](references/list-get-item-layout.md) - Provide getItemLayout for fixed heights 49 - [`list-memoize-items`](references/list-memoize-items.md) - Memoize list item components 50 51 ### 3. Re-render Optimization (HIGH) 52 53 - [`rerender-use-memo-expensive`](references/rerender-use-memo-expensive.md) - Memoize expensive computations 54 - [`rerender-use-callback-handlers`](references/rerender-use-callback-handlers.md) - Stabilize callbacks with useCallback 55 - [`rerender-functional-setstate`](references/rerender-functional-setstate.md) - Use functional setState updates 56 - [`rerender-lazy-state-init`](references/rerender-lazy-state-init.md) - Use lazy state initialization 57 - [`rerender-split-context`](references/rerender-split-context.md) - Split context by update frequency 58 - [`rerender-derive-state`](references/rerender-derive-state.md) - Derive state instead of syncing 59 60 ### 4. Animation Performance (HIGH) 61 62 - [`anim-use-native-driver`](references/anim-use-native-driver.md) - Enable native driver for animations 63 - [`anim-use-reanimated`](references/anim-use-reanimated.md) - Use Reanimated for complex animations 64 - [`anim-layout-animation`](references/anim-layout-animation.md) - Use LayoutAnimation for simple transitions 65 - [`anim-transform-not-dimensions`](references/anim-transform-not-dimensions.md) - Animate transform instead of dimensions 66 - [`anim-interaction-manager`](references/anim-interaction-manager.md) - Defer heavy work during animations 67 68 ### 5. Image & Asset Loading (MEDIUM-HIGH) 69 70 - [`asset-use-expo-image`](references/asset-use-expo-image.md) - Use expo-image for image loading 71 - [`asset-prefetch-images`](references/asset-prefetch-images.md) - Prefetch images before display 72 - [`asset-optimize-image-size`](references/asset-optimize-image-size.md) - Request appropriately sized images 73 - [`asset-use-webp-format`](references/asset-use-webp-format.md) - Use WebP format for images 74 - [`asset-recycling-key`](references/asset-recycling-key.md) - Use recyclingKey in FlashList images 75 76 ### 6. Memory Management (MEDIUM) 77 78 - [`mem-cleanup-subscriptions`](references/mem-cleanup-subscriptions.md) - Clean up subscriptions in useEffect 79 - [`mem-clear-timers`](references/mem-clear-timers.md) - Clear timers on unmount 80 - [`mem-abort-fetch`](references/mem-abort-fetch.md) - Abort fetch requests on unmount 81 - [`mem-avoid-inline-objects`](references/mem-avoid-inline-objects.md) - Avoid inline objects in props 82 - [`mem-limit-list-data`](references/mem-limit-list-data.md) - Limit list data in memory 83 84 ### 7. Async & Data Fetching (MEDIUM) 85 86 - [`async-parallel-fetching`](references/async-parallel-fetching.md) - Fetch independent data in parallel 87 - [`async-defer-await`](references/async-defer-await.md) - Defer await until value needed 88 - [`async-batch-api-calls`](references/async-batch-api-calls.md) - Batch related API calls 89 - [`async-cache-responses`](references/async-cache-responses.md) - Cache API responses locally 90 - [`async-refetch-on-focus`](references/async-refetch-on-focus.md) - Refetch data on screen focus 91 92 ### 8. Platform Optimizations (LOW-MEDIUM) 93 94 - [`platform-android-overdraw`](references/platform-android-overdraw.md) - Reduce Android overdraw 95 - [`platform-ios-text-rendering`](references/platform-ios-text-rendering.md) - Optimize iOS text rendering 96 - [`platform-android-proguard`](references/platform-android-proguard.md) - Enable ProGuard for Android release 97 - [`platform-conditional-render`](references/platform-conditional-render.md) - Platform-specific optimizations 98 99 ## How to Use 100 101 Read individual reference files for detailed explanations and code examples: 102 103 - [Section definitions](references/_sections.md) - Category structure and impact levels 104 - [Rule template](assets/templates/_template.md) - Template for adding new rules 105 106 ## Full Compiled Document 107 108 For the complete guide with all rules expanded, see [AGENTS.md](AGENTS.md). 109 110 ## Reference Files 111 112 | File | Description | 113 |------|-------------| 114 | [AGENTS.md](AGENTS.md) | Complete compiled guide with all rules | 115 | [references/_sections.md](references/_sections.md) | Category definitions and ordering | 116 | [assets/templates/_template.md](assets/templates/_template.md) | Template for new rules | 117 | [metadata.json](metadata.json) | Version and reference information |
ComeOnOliver/skillshub/tree/main/skills/pproenca/dot-skills/expo-react-native-performance commit 4927b19a80
Frequently asked questions How do I install the Expo React Native Performance skill? Run npx skillmds@latest add comeonoliver/expo-react-native-performance in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Expo React Native Performance skill do? Expo React Native Performance Best Practices It is listed under Web & Frontend on SkillMD.
Is Expo React Native Performance safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Expo React Native Performance? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Expo React Native Performance free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Expo React Native Performance? ComeOnOliver (@comeonoliver) published this skill. Their other Agent Skills are listed on their SkillMD profile.