expo
Expo React Native performance optimization guidelines. This skill should be used when writing, reviewing, or refactoring Expo React Native code to ensure optimal performance patterns. Triggers on tasks involving React Native components, navigation, lists, images, animations, bundle optimization, or
By pproenca · 527 installs
npx skills add pproenca/dot-skills --skill expo
Source repository · Upstream listing
Community Expo React Native Best Practices
Comprehensive performance optimization guide for Expo React Native applications. Contains 54 rules across 9 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
Writing new Expo React Native components
Optimizing app startup and Time to Interactive
Implementing lists, images, or animations
Reducing bundle size and memory usage
Reviewing code for mobile performance issues
Rule Categories by Priority
Priority Category Impact Prefix
1 Launch Time Optimization CRITICAL launch
2 Bundle Size Optimization CRITICAL bundle
3 List Virtualization HIGH list
4 Image Optimization HIGH image
5 Data Fetching Patterns HIGH data
6 Navigation Performance MEDIUM HIGH nav
7 Re render Prevention MEDIUM rerender
8 Animation Performance MEDIUM anim
9 Memory Management LOW MEDIUM mem
Quick Reference
1. Launch Time Optimization (CRITICAL)
launch splash screen control Control splash screen visibility during asset loading
launch preload critical assets Preload fonts and images during splash
launch hermes engine Use Hermes engine for faster startup
launch defer non critical Defer non critical initialization
launch new architecture Enable New Architecture for synchronous native communication
launch minimize root imports Minimize imports in root App component
2. Bundle Size Optimization (CRITICAL)
bundle avoid barrel files Avoid barrel file imports
bundle analyze size Analyze bundle size before release
bundle remove unused dependencies Remove unused dependencies
bundle split by architecture Generate architecture specific APKs
bundle enable proguard Enable ProGuard for Android release builds
bundle optimize fonts Subset custom fonts to used characters
bundle use lightweight alternatives Use lightweight library alternatives
3. List Virtualization (HIGH)
list use flashlist Use FlashList instead of FlatList
list provide estimated size Provide accurate estimatedItemSize
list avoid inline functions Avoid inline functions in renderItem
list provide getitemlayout Provide getItemLayout for fixed height items
list avoid key prop Avoid key prop inside FlashList items
list batch rendering Configure list batch rendering
list memoize item components Memoize list item components
4. Image Optimization (HIGH)
image use expo image Use expo image instead of React Native Image
image resize to display size Resize images to display size
image use webp format Use WebP format for smaller file sizes
image use placeholders Use BlurHash or ThumbHash placeholders
image preload critical Preload critical above the fold images
image lazy load offscreen Lazy load off screen images
5. Data Fetching Patterns (HIGH)
data parallel fetching Fetch independent data in parallel
data request deduplication Deduplicate concurrent requests
data abort requests Abort requests on component unmount
data pagination Implement efficient pagination strategies
data cache strategies Use appropriate caching strategies
data optimistic updates Apply optimistic updates for responsiveness
6. Navigation Performance (MEDIUM HIGH)
nav use native stack Use native stack navigator
nav unmount inactive screens Unmount inactive tab screens
nav prefetch screen data Prefetch data before navigation
nav optimize screen options Optimize screen options
nav avoid deep nesting Avoid deeply nested navigators
7. Re render Prevention (MEDIUM)
rerender use memo components Memoize expensive components with React.memo
rerender use callback Stabilize callbacks with useCallback
rerender use memo values Memoize expensive computations with useMemo
rerender avoid context overuse Avoid overusing Context for frequent updates
rerender split component state Split components to isolate updating state
rerender use react compiler Enable React Compiler for automatic memoization
rerender avoid anonymous components Avoid anonymous components in JSX
8. Animation Performance (MEDIUM)
anim use reanimated Use Reanimated for UI thread animations
anim use native driver Enable useNativeDriver for Animated API
anim avoid layout animation Prefer transform over layout animations
anim gesture handler integration Use Gesture Handler with Reanimated
anim interaction manager Defer heavy work during animations
9. Memory Management (LOW MEDIUM)
mem cleanup useeffect Clean up subscriptions and timers
mem abort fetch requests Abort fetch requests on unmount
mem avoid closure leaks Avoid closure based memory leaks
mem release heavy resources Release heavy resources when not needed
mem profile with tools Profile memory usage with development tools
How to Use
Read individual reference files for detailed explanations and code examples:
[Section definitions](references/ sections.md) Category structure and impact levels
[Rule template](assets/templates/ template.md) Template for adding new rules
Example rules: [launch splash screen control](references/launch splash screen control.md), [list use flashlist](references/list use flashlist.md)
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md