Skip to content
Skillpedia
Websites & UI (frontend)280k · #113

react-performance

Helps your agent speed up websites built with React and Next.js. It follows rules to improve loading and performance.

What it does

This agent helps optimize the performance of websites built with React and Next.js. It organizes over 70 rules to make your code faster and more efficient.

When to use it

  • ✓When writing or reviewing React/Next.js code.
  • ✓When a website is slow to load or respond.
  • ✓To reduce the size of files downloaded by the browser.

Example of what to ask your AI

“How can I optimize image loading on my React website?”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/react-performance/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/react-performance/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

It analyzes your code and suggests improvements based on high-performance engineering patterns. The rules are divided by importance, from critical to advanced.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add affaan-m/ECC --skill react-performance

Or download just the file:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/react-performance/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

React Performance

Performance optimization patterns for React 18/19 and Next.js, adapted from Vercel Labs react-best-practices (MIT, v1.0.0). This skill organizes rules by priority and provides decision-tree guidance for active code review and refactoring.

When to Activate

  • Writing or reviewing React/Next.js code for performance
  • Diagnosing slow page loads, slow interactions, or high CPU on the client
  • Auditing bundle size or Lighthouse Core Web Vitals regressions
  • Removing waterfalls in Server Components / API routes
  • Reducing client-side re-renders
  • Optimizing long lists, animations, or hydration
  • Auditing optimization choices in PRs touching app/, pages/, components/, or data layers

Priority Index

Priority Category Prefix When it matters
1 — CRITICAL Eliminating Waterfalls async- Anytime await is followed by independent await
2 — CRITICAL Bundle Size Optimization bundle- First-load JS, route-level imports, third-party libs
3 — HIGH Server-Side Performance server- RSC, Server Actions, API routes, SSR
4 — MEDIUM-HIGH Client-Side Data Fetching client- SWR / TanStack Query / raw fetch in hooks
5 — MEDIUM Re-render Optimization rerender- High-frequency state updates, parent-child fan-out
6 — MEDIUM Rendering Performance rendering- Long lists, animations, hydration
7 — LOW-MEDIUM JavaScript Performance js- Hot loops, frequent allocations
8 — LOW Advanced Patterns advanced- Effect-event integration, stable refs

1. Eliminating Waterfalls (CRITICAL)

"Waterfalls are the #1 performance killer" — every sequential await adds full network latency.

Cheap conditions before await

Check sync conditions (props, env, hardcoded flags) before awaiting remote data.

// INCORRECT
async function Page({ id }: { id: string }) {
  const flag = await getFlag("show-page");
  if (!flag || !id) return null;
  const data = await getData(id);
  // ...
}

// CORRECT — short-circuit on cheap sync condition first
async function Page({ id }: { id: string }) {
  if (!id) return null;
  const flag = await getFlag("show-page");
  if (!flag) return null;
  const data = await getData(id);
}

Defer awaits until used

Move await into the branch that uses it.

// INCORRECT — awaits before deciding it needs the data
const user = await getUser(id);
if (mode === "guest") return renderGuest();
return renderUser(user);

// CORRECT
if (mode === "guest") return renderGuest();
const user = await getUser(id);
return renderUser(user);

Promise.all for independent work

// INCORRECT — sequential
const user = await getUser(id);
const posts = await getPosts(id);
const followers = await getFollowers(id);

// CORRECT — parallel
const [user, posts, followers] = await Promise.all([
  getUser(id),
  getPosts(id),
  getFollowers(id),
]);

Partial dependencies — start early, await late

// CORRECT — kick off all promises, await only when each result is needed
const userP = getUser(id);
const postsP = getPosts(id);
const profile = await getProfile(id);
if (profile.private) return null;
const [user, posts] = await Promise.all([userP, postsP]);

Suspense for streaming

Push <Suspense> boundaries close to the data so the page paints what it can while slower sub-trees stream in. The trade-off: layout shift when content arrives — reserve space (skeleton or min-height).

Server Components: parallel through composition

// INCORRECT — sibling awaits run sequentially inside one component
export default async function Page() {
  const user = await getUser();
  const cart = await getCart();
  return <View user={user} cart={cart} />;
}

// CORRECT — split into children, React runs them in parallel
export default async function Page() {
  return (
    <View>
      <UserSection />
      <CartSection />
    </View>
  );
}

2. Bundle Size Optimization (CRITICAL)

Direct imports, not barrels

Barrel index.ts files force the bundler to walk the entire module graph even when tree-shaking removes most of it. Direct imports save 200-800ms of first-load JS in many real-world apps.

// INCORRECT
import { Button, Card, Modal } from "@/components";

// CORRECT
import { Button } from "@/components/Button";
import { Card } from "@/components/Card";

…
FAQ

What are 'waterfalls'?

These are sequential calls that delay loading. The agent helps make these calls in parallel to speed things up.

What is 'bundle size'?

It's the total size of JavaScript files the browser needs to download. Reducing this makes the website faster, especially on slow connections.

Do I need to know a lot about React to use this?

No, the agent explains concepts simply and focuses on applying best practices to improve performance.

Details

Original description by the author

React and Next.js performance optimization patterns adapted from Vercel Engineering's React Best Practices (https://github.com/vercel-labs/agent-skills). Organizes 70+ rules across 8 priority categories — waterfalls, bundle size, server-side, client fetching, re-render, rendering, JS micro-perf, advanced. Use when writing, reviewing, or refactoring React/Next.js code for performance.

repo: affaan-m/ECC

Popularity

GitHub stars
280k
Ranking position
#113
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills