Skip to main content

react-rerender-mental-models

Correct mental models for React re-renders and memoization. Use this skill when writing, reviewing, or optimizing React components to avoid common misconceptions about performance. Debunks the myth that "props cause re-renders" and teaches when memoization actually helps.

معلومات المصدر

المستودع
stellar/laboratory
آخر نشاط في المصدر
٢٢ أبريل ٢٠٢٦ في ١٩:١٨
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١١٢
التفرعات
١٢٢

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
9 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
react-rerender-mental-models
description
Correct mental models for React re-renders and memoization. Use this skill when writing, reviewing, or optimizing React components to avoid common misconceptions about performance. Debunks the myth that "props cause re-renders" and teaches when memoization actually helps.
license
MIT
metadata
{"author":"freighter","version":"1.0.0"}
# React Re-render Mental Models A practical guide to understanding how React re-renders actually work, debunking common misconceptions, and knowing when optimization is truly needed. ## Core Philosophy > "Trust React to be fast. Write simple code. Measure when something actually feels slow. Optimize based on data, not fear." ## When to Apply Reference these guidelines when: - Writing new React components - Reviewing code for performance issues - Deciding whether to add React.memo, useCallback, or useMemo - Debugging perceived "slowness" in React apps - Refactoring component architecture ## Rule Categories | Category | Prefix | Description | |----------|--------|-------------| | Mental Models | `mental-model-` | Correct understanding of how React works | | Anti-Patterns | `anti-pattern-` | Common mistakes to avoid | | When to Memoize | `when-to-memo-` | Profile-driven optimization guidance | | Architecture | `architecture-` | Component structure patterns | ## Quick Reference ### Mental Models (Foundational) - `mental-model-parent-triggers` - Props don't trigger re-renders; parent re-renders do - `mental-model-render-vs-commit` - Render ≠ Commit; renders are cheap, commits touch DOM ### Anti-Patterns (Avoid These) - `anti-pattern-premature-memo` - Don't memoize without profiling first - `anti-pattern-memoization-trap` - Real bottlenecks are often not re-renders ### When to Memoize (Use Sparingly) - `when-to-memo-context-values` - Stabilize context object references - `when-to-usecallback` - Only needed when child is already memoized ### Architecture (Prefer These) - `architecture-local-state` - Keep state close to where it's used - `architecture-composition` - Component structure prevents re-renders naturally ## What Actually Triggers Re-renders 1. **Component's own state changes** (useState, useReducer) 2. **Parent component re-renders** (cascades to all children) 3. **Context value changes** (for consumers of that context) **Props are NOT on this list.** Props are inputs to a render that's already happening—they don't schedule one. ## The Performance Debugging Flow ``` 1. Something feels slow 2. Open React DevTools Profiler 3. Record the interaction 4. Look for components with 50ms+ render times 5. If found → consider memoization 6. If not found → the problem is elsewhere: - API calls firing too often - Unoptimized images - Too many DOM nodes - CSS animations triggering layout ``` ## React 19 Compiler This project runs React 19. The **React Compiler** (formerly React Forget) is an opt-in build-time tool that statically analyzes components and automatically inserts the equivalent of `useMemo`, `useCallback`, and `React.memo`. It is **not enabled by default** — it requires `babel-plugin-react-compiler` (or the SWC equivalent) to be installed and configured. - If the compiler is **enabled in this project**: skip manual memoization. The compiler tracks data flow within each component and caches results at a more granular level than hand-written hooks. If the compiler opts out a specific component (e.g. due to side effects during render), fix the component rather than adding manual memo. - If the compiler is **not enabled** (current default): follow the rules below, but prefer architecture fixes (local state, composition) over adding memo/useCallback. Regardless of compiler status, the mental models and architecture rules in this skill still apply — composition and local state are always better than relying on memoization (auto or manual). Re-render triggers remain the same either way. ## How to Use Read individual rule files for detailed explanations and code examples: ``` rules/mental-model-parent-triggers.md rules/anti-pattern-premature-memo.md rules/architecture-local-state.md ``` Each rule file contains: - Brief explanation of why it matters - Incorrect code example with explanation - Correct code example with explanation
عرض على GitHub