Skip to main content

react-best-practices

Client-side React performance optimization patterns.

Datos de origen

Repositorio
redpanda-data/console
Última actividad en el origen
28 de agosto de 2026 a las 20:27
Idioma detectado de SKILL.md
inglés
Estrellas
4336
Forks
431

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
31 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
react-best-practices
description
Client-side React performance optimization patterns.
# React Best Practices Client-side React optimization patterns for Cloud UI. 29 rules organized by category and impact. ## Activation Conditions - Performance optimization tasks - Component re-render issues - Bundle size concerns - useEffect/useMemo patterns ## Rules by Category ### Bundle Optimization (CRITICAL) | Rule | Key Point | |------|-----------| | `bundle-barrel-imports` | Import from source files, not barrel `index.ts` | | `bundle-code-splitting` | `React.lazy` + `Suspense` for heavy components, conditional loads, deferred 3rd-party | | `bundle-preload` | Preload critical resources | ### Re-render Prevention (HIGH) | Rule | Key Point | |------|-----------| | `rerender-memo` | Memoize expensive computations | | `rerender-dependencies` | Minimize hook dependency arrays | | `rerender-derived-state` | Compute during render, not in effects | | `rerender-functional-setstate` | `setState(prev => ...)` to avoid stale closures | | `rerender-lazy-state-init` | `useState(() => expensive())` not `useState(expensive())` | | `rerender-simple-expression-in-memo` | Don't memoize trivial expressions | | `rerender-transitions` | `useTransition` for non-urgent updates | | `rerender-defer-reads` | Read URL params / storage inside callbacks, not at render | ### Rendering (MEDIUM) | Rule | Key Point | |------|-----------| | `rendering-conditional-render` | Short-circuit with `&&` / ternary, avoid render in effects | | `rendering-hoist-jsx` | Move static JSX outside components | | `rendering-content-visibility` | CSS `content-visibility: auto` for off-screen | | `rendering-activity` | React `<Activity>` for hidden UI | | `rendering-animate-svg-wrapper` | Wrap animated SVGs to isolate re-renders | | `rendering-svg-precision` | Limit SVG coordinate precision | ### Async (MEDIUM) | Rule | Key Point | |------|-----------| | `async-suspense-boundaries` | Granular `<Suspense>` boundaries | | `async-defer-await` | Don't await non-blocking work | | `async-dependencies` | Load deps in parallel, not sequentially | ### JavaScript (MEDIUM) | Rule | Key Point | |------|-----------| | `js-caching-patterns` | Module-level Map caches for repeated calls + storage reads | | `js-batch-dom-css` | Batch DOM reads/writes to avoid layout thrashing | | `js-index-maps` | Pre-index arrays into Maps for O(1) lookups | | `js-length-check-first` | Check `.length` before expensive operations | | `js-tosorted-immutable` | Use `.toSorted()` / `.toReversed()` for immutable transforms | RegExp hoisting is enforced by Biome (`useTopLevelRegex`). ### Browser (MEDIUM) | Rule | Key Point | |------|-----------| | `client-event-listeners` | Clean up event listeners in useEffect return | | `client-passive-event-listeners` | `{ passive: true }` for scroll/touch handlers | ### Advanced (LOW) | Rule | Key Point | |------|-----------| | `advanced-event-handler-refs` | Stable callback refs to avoid child re-renders | | `advanced-use-latest` | `useLatest` pattern for always-current values in callbacks |
Ver en GitHub