← Back to list

component-refactoring
by first-fluke
Production-ready fullstack monorepo template with Next.js, FastAPI, Flutter, Terraform, and mise
⭐ 141🍴 21📅 Jan 23, 2026
SKILL.md
name: component-refactoring description: Refactor high-complexity React components. Use when complexity metrics are high or to split monolithic UI.
Component Refactoring Skill
Refactor high-complexity React components with proven patterns and workflows.
Complexity Threshold: Components with cyclomatic complexity > 50 or line count > 300 should be candidates for refactoring.
Use When:
pnpm analyze-componentshows high complexity.- Users ask for "code splitting", "hook extraction", or "cleanup".
- A component file exceeds 300 lines of code.
Core Refactoring Patterns
1. Extract Custom Hooks
Goal: Separate UI from State/Logic.
Before:
function UserList() {
const [users, setUsers] = useState([]);
const [loading, setLoading] = useState(false);
useEffect(() => {
setLoading(true);
fetch('/api/users').then(data => {
setUsers(data);
setLoading(false);
});
}, []);
if (loading) return <Spinner />;
return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}
After:
// hooks/useUsers.ts
function useUsers() {
return useQuery({ queryKey: ['users'], queryFn: fetchUsers });
}
// UserList.tsx
function UserList() {
const { data: users, isLoading } = useUsers();
if (isLoading) return <Spinner />;
return <UserListView users={users} />;
}
2. Extract Sub-Components
Goal: Break down monolithic JSX.
Before:
function Dashboard() {
return (
<div>
<header>...</header>
<aside>...</aside>
<main>
<section className="stats">...</section>
<section className="feed">...</section>
</main>
</div>
);
}
After:
function Dashboard() {
return (
<Layout>
<DashboardHeader />
<DashboardSidebar />
<DashboardContent>
<StatsWidget />
<ActivityFeed />
</DashboardContent>
</Layout>
);
}
3. Simplify Conditional Logic
Goal: Reduce nesting and if/else checks implementation details.
- Use Lookup Tables (Maps/Objects) instead of Switch/If-Else chains.
- Use Guard Clauses (Early Returns) to avoid deep nesting.
4. Extract Modal Management
Goal: Centralize modal state and logic.
- Move modal definitions to a generic
<ModalManager />or context if reused globally. - Keep the
isOpenstate locally if specific to a single component, but extract the Modal content to a separate file.
Workflow
- Analyze: Run complexity analysis or review the file manually.
- Plan: Identify seam lines (Logic vs UI, Section vs Section).
- Extract: Create new files for hooks or components.
- Integrate: Replace original code with imports.
- Verify: Ensure functionality remains identical and tests pass.
Score
Total Score
75/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
✓人気
GitHub Stars 100以上
+5
✓最近の活動
1ヶ月以内に更新
+10
✓フォーク
10回以上フォークされている
+5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon

