mcpField
B
bulletproof-react-components

bulletproof-react-components

github.com/codewithshreyansDevelopment043 installsUpdated 6w ago
Repository

About bulletproof-react-components

A skill for building and reviewing reusable React components against nine patterns covering SSR, hydration, rendering, portals, and stable state. It includes quick rules, a checklist, and detailed examples for component authors.

Key features

  1. 01Nine resilience patterns for React
  2. 02Quick rules and shipping checklist
  3. 03Detailed examples in patterns.md
  4. 04Review results in a fixed table format

Use cases

  1. 01Reviewing a reusable component before release
  2. 02Avoiding browser API use during server rendering
  3. 03Checking IDs and state across component instances

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/codewithshreyans/skills --skill bulletproof-react-components

After installing, type/bulletproof-react-componentsin Claude Code to confirm it loaded.

Bundled filesreferences/patterns.md

Details

From the project README

Bulletproof React Components

Nine patterns that ensure React components survive real-world conditions beyond the happy path — SSR, hydration, concurrent rendering, portals, and more.

Source: shud.in/thoughts/build-bulletproof-react-components

How It Works

  1. When writing or reviewing a reusable React component, consult the Quick Rules below
  2. For code examples and deeper explanation, read ./references/patterns.md
  3. Run through the Checklist before shipping

Quick Rules

#PatternRule
1Server-ProofNever call browser APIs (localStorage, window, document) during render. Use useEffect.
2Hydration-ProofInject a synchronous inline <script> to set client-dependent values before React hydration.
3Instance-ProofUse useId() for all generated IDs. Never hardcode IDs in reusable components.
4Concurrent-ProofWrap server data-fetching in React.cache() to deduplicate calls per request.
5Composition-ProofUse Context instead of React.cloneElement() — cloneElement breaks with Server Components, lazy, and memo.
6Portal-ProofUse ref.current?.ownerDocument.defaultView || window for event listeners, not the global window.
7Transition-ProofWrap state updates in startTransition() to enable View Transition API animations.
8Activity-ProofUse useLayoutEffect to disable DOM side effects (e.g., <style> tags) when hidden by <Activity>.
9Future-ProofUse useState(() => value) for stable identity. useMemo is only a performance hint — React may discard it.

Checklist

When building a reusable React component, verify:

  • No browser APIs called during render (server-proof)
  • No hydration flash for client-storage values (hydration-proof)
  • No hardcoded IDs; uses useId() (instance-proof)
  • Server data fetches wrapped in cache() (concurrent-proof)
  • Uses Context instead of cloneElement (composition-proof)
  • Event listeners use ownerDocument.defaultView (portal-proof)
  • State updates wrapped in startTransition() where needed (transition-proof)
  • DOM side effects respect <Activity> visibility (activity-proof)
  • Stable values use useState initializer, not useMemo (future-proof)

Present Results to User

When reviewing a component against these patterns, format as:

**Bulletproof Check: `<ComponentName>`**

| Pattern | Status | Notes |
|---------|--------|-------|
| Server-Proof | PASS/FAIL | ... |
| ... | ... | ... |

**Suggested fixes:**
1. ...

References

  • ./references/patterns.md — Detailed code examples (bad/good) for all nine patterns

Comments

Markdown supported