@zimezone/z-command 1.1.1 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/README.md +13 -1
  2. package/dist/cli.js +1 -1
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +42 -10
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/platforms.d.ts.map +1 -1
  7. package/dist/platforms.js +11 -1
  8. package/dist/platforms.js.map +1 -1
  9. package/dist/types.d.ts +2 -0
  10. package/dist/types.d.ts.map +1 -1
  11. package/package.json +8 -3
  12. package/templates.zip +0 -0
  13. package/templates/agents/accessibility-expert.agent.md +0 -56
  14. package/templates/agents/ai-engineer.agent.md +0 -61
  15. package/templates/agents/angular-architect.agent.md +0 -49
  16. package/templates/agents/api-designer.agent.md +0 -40
  17. package/templates/agents/api-documenter.agent.md +0 -161
  18. package/templates/agents/architect-review.agent.md +0 -146
  19. package/templates/agents/arm-cortex-expert.agent.md +0 -288
  20. package/templates/agents/azure-infra-engineer.agent.md +0 -57
  21. package/templates/agents/backend-architect.agent.md +0 -309
  22. package/templates/agents/backend-developer.agent.md +0 -61
  23. package/templates/agents/backend-security-coder.agent.md +0 -152
  24. package/templates/agents/bash-pro.agent.md +0 -285
  25. package/templates/agents/blockchain-developer.agent.md +0 -57
  26. package/templates/agents/build-engineer.agent.md +0 -56
  27. package/templates/agents/business-analyst.agent.md +0 -47
  28. package/templates/agents/c-pro.agent.md +0 -35
  29. package/templates/agents/c4-code.agent.md +0 -320
  30. package/templates/agents/c4-component.agent.md +0 -227
  31. package/templates/agents/c4-container.agent.md +0 -248
  32. package/templates/agents/c4-context.agent.md +0 -235
  33. package/templates/agents/cli-developer.agent.md +0 -57
  34. package/templates/agents/cloud-architect.agent.md +0 -56
  35. package/templates/agents/code-architect.agent.md +0 -63
  36. package/templates/agents/code-reviewer.agent.md +0 -49
  37. package/templates/agents/competitive-analyst.agent.md +0 -48
  38. package/templates/agents/conductor-validator.agent.md +0 -245
  39. package/templates/agents/context-manager.agent.md +0 -55
  40. package/templates/agents/cpp-pro.agent.md +0 -59
  41. package/templates/agents/csharp-developer.agent.md +0 -57
  42. package/templates/agents/csharp-pro.agent.md +0 -38
  43. package/templates/agents/customer-support.agent.md +0 -148
  44. package/templates/agents/data-engineer.agent.md +0 -55
  45. package/templates/agents/data-researcher.agent.md +0 -55
  46. package/templates/agents/data-scientist.agent.md +0 -56
  47. package/templates/agents/database-admin.agent.md +0 -142
  48. package/templates/agents/database-administrator.agent.md +0 -50
  49. package/templates/agents/database-architect.agent.md +0 -238
  50. package/templates/agents/database-optimizer.agent.md +0 -144
  51. package/templates/agents/debugger.agent.md +0 -30
  52. package/templates/agents/deployment-engineer.agent.md +0 -0
  53. package/templates/agents/devops-engineer.agent.md +0 -59
  54. package/templates/agents/devops-troubleshooter.agent.md +0 -138
  55. package/templates/agents/django-developer.agent.md +0 -50
  56. package/templates/agents/django-pro.agent.md +0 -159
  57. package/templates/agents/docs-architect.agent.md +0 -77
  58. package/templates/agents/documentation-engineer.agent.md +0 -57
  59. package/templates/agents/dotnet-architect.agent.md +0 -175
  60. package/templates/agents/dx-optimizer.agent.md +0 -63
  61. package/templates/agents/electron-pro.agent.md +0 -56
  62. package/templates/agents/elixir-pro.agent.md +0 -38
  63. package/templates/agents/embedded-systems.agent.md +0 -55
  64. package/templates/agents/error-detective.agent.md +0 -32
  65. package/templates/agents/event-sourcing-architect.agent.md +0 -42
  66. package/templates/agents/fastapi-pro.agent.md +0 -171
  67. package/templates/agents/fintech-engineer.agent.md +0 -57
  68. package/templates/agents/firmware-analyst.agent.md +0 -330
  69. package/templates/agents/flutter-expert.agent.md +0 -50
  70. package/templates/agents/frontend-developer.agent.md +0 -59
  71. package/templates/agents/frontend-security-coder.agent.md +0 -149
  72. package/templates/agents/fullstack-developer.agent.md +0 -46
  73. package/templates/agents/git-workflow-manager.agent.md +0 -57
  74. package/templates/agents/golang-pro.agent.md +0 -50
  75. package/templates/agents/graphql-architect.agent.md +0 -48
  76. package/templates/agents/haskell-pro.agent.md +0 -37
  77. package/templates/agents/hr-pro.agent.md +0 -105
  78. package/templates/agents/incident-responder.agent.md +0 -190
  79. package/templates/agents/ios-developer.agent.md +0 -198
  80. package/templates/agents/iot-engineer.agent.md +0 -56
  81. package/templates/agents/java-architect.agent.md +0 -48
  82. package/templates/agents/java-pro.agent.md +0 -156
  83. package/templates/agents/javascript-pro.agent.md +0 -35
  84. package/templates/agents/julia-pro.agent.md +0 -187
  85. package/templates/agents/kotlin-specialist.agent.md +0 -50
  86. package/templates/agents/laravel-specialist.agent.md +0 -50
  87. package/templates/agents/legacy-modernizer.agent.md +0 -56
  88. package/templates/agents/legal-advisor.agent.md +0 -49
  89. package/templates/agents/llm-architect.agent.md +0 -58
  90. package/templates/agents/malware-analyst.agent.md +0 -272
  91. package/templates/agents/mcp-developer.agent.md +0 -54
  92. package/templates/agents/mermaid-expert.agent.md +0 -39
  93. package/templates/agents/microservices-architect.agent.md +0 -47
  94. package/templates/agents/minecraft-bukkit-pro.agent.md +0 -104
  95. package/templates/agents/ml-engineer.agent.md +0 -56
  96. package/templates/agents/mlops-engineer.agent.md +0 -56
  97. package/templates/agents/mobile-developer.agent.md +0 -45
  98. package/templates/agents/mobile-security-coder.agent.md +0 -163
  99. package/templates/agents/monorepo-architect.agent.md +0 -44
  100. package/templates/agents/multi-agent-coordinator.agent.md +0 -55
  101. package/templates/agents/network-engineer.agent.md +0 -57
  102. package/templates/agents/nextjs-developer.agent.md +0 -48
  103. package/templates/agents/nlp-engineer.agent.md +0 -58
  104. package/templates/agents/observability-engineer.agent.md +0 -228
  105. package/templates/agents/payment-integration.agent.md +0 -56
  106. package/templates/agents/performance-engineer.agent.md +0 -167
  107. package/templates/agents/performance-optimizer.agent.md +0 -57
  108. package/templates/agents/php-pro.agent.md +0 -43
  109. package/templates/agents/platform-engineer.agent.md +0 -57
  110. package/templates/agents/posix-shell-pro.agent.md +0 -284
  111. package/templates/agents/postgres-pro.agent.md +0 -58
  112. package/templates/agents/product-manager.agent.md +0 -55
  113. package/templates/agents/project-manager.agent.md +0 -57
  114. package/templates/agents/prompt-engineer.agent.md +0 -58
  115. package/templates/agents/python-pro.agent.md +0 -48
  116. package/templates/agents/quant-analyst.agent.md +0 -32
  117. package/templates/agents/rails-expert.agent.md +0 -50
  118. package/templates/agents/react-specialist.agent.md +0 -49
  119. package/templates/agents/refactoring-specialist.agent.md +0 -56
  120. package/templates/agents/reference-builder.agent.md +0 -167
  121. package/templates/agents/research-analyst.agent.md +0 -63
  122. package/templates/agents/reverse-engineer.agent.md +0 -202
  123. package/templates/agents/risk-manager.agent.md +0 -41
  124. package/templates/agents/ruby-pro.agent.md +0 -35
  125. package/templates/agents/rust-pro.agent.md +0 -156
  126. package/templates/agents/sales-automator.agent.md +0 -35
  127. package/templates/agents/scala-pro.agent.md +0 -60
  128. package/templates/agents/scrum-master.agent.md +0 -54
  129. package/templates/agents/search-specialist.agent.md +0 -59
  130. package/templates/agents/security-analyst.agent.md +0 -57
  131. package/templates/agents/security-auditor.agent.md +0 -138
  132. package/templates/agents/security-engineer.agent.md +0 -57
  133. package/templates/agents/seo-authority-builder.agent.md +0 -116
  134. package/templates/agents/seo-cannibalization-detector.agent.md +0 -103
  135. package/templates/agents/seo-content-auditor.agent.md +0 -63
  136. package/templates/agents/seo-content-planner.agent.md +0 -88
  137. package/templates/agents/seo-content-refresher.agent.md +0 -98
  138. package/templates/agents/seo-content-writer.agent.md +0 -76
  139. package/templates/agents/seo-keyword-strategist.agent.md +0 -75
  140. package/templates/agents/seo-meta-optimizer.agent.md +0 -72
  141. package/templates/agents/seo-snippet-hunter.agent.md +0 -94
  142. package/templates/agents/seo-specialist.agent.md +0 -57
  143. package/templates/agents/seo-structure-architect.agent.md +0 -88
  144. package/templates/agents/service-mesh-expert.agent.md +0 -41
  145. package/templates/agents/sql-pro.agent.md +0 -146
  146. package/templates/agents/sre-engineer.agent.md +0 -58
  147. package/templates/agents/swift-expert.agent.md +0 -49
  148. package/templates/agents/task-distributor.agent.md +0 -47
  149. package/templates/agents/tdd-orchestrator.agent.md +0 -183
  150. package/templates/agents/technical-writer.agent.md +0 -48
  151. package/templates/agents/temporal-python-pro.agent.md +0 -349
  152. package/templates/agents/terraform-engineer.agent.md +0 -57
  153. package/templates/agents/terraform-specialist.agent.md +0 -137
  154. package/templates/agents/test-automator.agent.md +0 -203
  155. package/templates/agents/test-engineer.agent.md +0 -55
  156. package/templates/agents/threat-modeling-expert.agent.md +0 -44
  157. package/templates/agents/trend-analyst.agent.md +0 -47
  158. package/templates/agents/tutorial-engineer.agent.md +0 -118
  159. package/templates/agents/typescript-pro.agent.md +0 -48
  160. package/templates/agents/ui-designer.agent.md +0 -48
  161. package/templates/agents/ui-ux-designer.agent.md +0 -188
  162. package/templates/agents/ui-visual-validator.agent.md +0 -192
  163. package/templates/agents/ux-researcher.agent.md +0 -48
  164. package/templates/agents/vector-database-engineer.agent.md +0 -43
  165. package/templates/agents/vue-expert.agent.md +0 -48
  166. package/templates/agents/websocket-engineer.agent.md +0 -49
  167. package/templates/agents/workflow-orchestrator.agent.md +0 -48
  168. package/templates/skills/angular-migration/SKILL.md +0 -410
  169. package/templates/skills/api-design-principles/SKILL.md +0 -528
  170. package/templates/skills/api-design-principles/assets/api-design-checklist.md +0 -155
  171. package/templates/skills/api-design-principles/assets/rest-api-template.py +0 -182
  172. package/templates/skills/api-design-principles/references/graphql-schema-design.md +0 -583
  173. package/templates/skills/api-design-principles/references/rest-best-practices.md +0 -408
  174. package/templates/skills/architecture-decision-records/SKILL.md +0 -428
  175. package/templates/skills/architecture-patterns/SKILL.md +0 -494
  176. package/templates/skills/async-python-patterns/SKILL.md +0 -694
  177. package/templates/skills/auth-implementation-patterns/SKILL.md +0 -634
  178. package/templates/skills/changelog-automation/SKILL.md +0 -552
  179. package/templates/skills/code-review/SKILL.md +0 -62
  180. package/templates/skills/code-review-excellence/SKILL.md +0 -520
  181. package/templates/skills/competitive-landscape/SKILL.md +0 -479
  182. package/templates/skills/context-driven-development/SKILL.md +0 -385
  183. package/templates/skills/cost-optimization/SKILL.md +0 -274
  184. package/templates/skills/cqrs-implementation/SKILL.md +0 -554
  185. package/templates/skills/data-quality-frameworks/SKILL.md +0 -587
  186. package/templates/skills/data-storytelling/SKILL.md +0 -453
  187. package/templates/skills/database-migration/SKILL.md +0 -424
  188. package/templates/skills/dbt-transformation-patterns/SKILL.md +0 -561
  189. package/templates/skills/debugging-strategies/SKILL.md +0 -527
  190. package/templates/skills/defi-protocol-templates/SKILL.md +0 -454
  191. package/templates/skills/dependency-upgrade/SKILL.md +0 -409
  192. package/templates/skills/deployment-pipeline-design/SKILL.md +0 -359
  193. package/templates/skills/distributed-tracing/SKILL.md +0 -438
  194. package/templates/skills/dotnet-backend-patterns/SKILL.md +0 -815
  195. package/templates/skills/dotnet-backend-patterns/assets/repository-template.cs +0 -523
  196. package/templates/skills/dotnet-backend-patterns/assets/service-template.cs +0 -336
  197. package/templates/skills/dotnet-backend-patterns/references/dapper-patterns.md +0 -544
  198. package/templates/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +0 -355
  199. package/templates/skills/e2e-testing-patterns/SKILL.md +0 -547
  200. package/templates/skills/employment-contract-templates/SKILL.md +0 -507
  201. package/templates/skills/error-handling-patterns/SKILL.md +0 -636
  202. package/templates/skills/event-store-design/SKILL.md +0 -437
  203. package/templates/skills/fastapi-templates/SKILL.md +0 -567
  204. package/templates/skills/git-advanced-workflows/SKILL.md +0 -400
  205. package/templates/skills/github-actions-templates/SKILL.md +0 -333
  206. package/templates/skills/go-concurrency-patterns/SKILL.md +0 -655
  207. package/templates/skills/grafana-dashboards/SKILL.md +0 -369
  208. package/templates/skills/helm-chart-scaffolding/SKILL.md +0 -544
  209. package/templates/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -42
  210. package/templates/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -185
  211. package/templates/skills/helm-chart-scaffolding/references/chart-structure.md +0 -500
  212. package/templates/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -244
  213. package/templates/skills/javascript-testing-patterns/SKILL.md +0 -1025
  214. package/templates/skills/langchain-architecture/SKILL.md +0 -338
  215. package/templates/skills/llm-evaluation/SKILL.md +0 -471
  216. package/templates/skills/microservices-patterns/SKILL.md +0 -595
  217. package/templates/skills/modern-javascript-patterns/SKILL.md +0 -911
  218. package/templates/skills/monorepo-management/SKILL.md +0 -622
  219. package/templates/skills/nextjs-app-router-patterns/SKILL.md +0 -544
  220. package/templates/skills/nodejs-backend-patterns/SKILL.md +0 -1020
  221. package/templates/skills/nx-workspace-patterns/SKILL.md +0 -452
  222. package/templates/skills/openapi-spec-generation/SKILL.md +0 -1028
  223. package/templates/skills/paypal-integration/SKILL.md +0 -467
  224. package/templates/skills/pci-compliance/SKILL.md +0 -466
  225. package/templates/skills/postgresql/SKILL.md +0 -204
  226. package/templates/skills/projection-patterns/SKILL.md +0 -490
  227. package/templates/skills/prometheus-configuration/SKILL.md +0 -392
  228. package/templates/skills/prompt-engineering-patterns/SKILL.md +0 -201
  229. package/templates/skills/prompt-engineering-patterns/assets/few-shot-examples.json +0 -106
  230. package/templates/skills/prompt-engineering-patterns/assets/prompt-template-library.md +0 -246
  231. package/templates/skills/prompt-engineering-patterns/references/chain-of-thought.md +0 -399
  232. package/templates/skills/prompt-engineering-patterns/references/few-shot-learning.md +0 -369
  233. package/templates/skills/prompt-engineering-patterns/references/prompt-optimization.md +0 -414
  234. package/templates/skills/prompt-engineering-patterns/references/prompt-templates.md +0 -470
  235. package/templates/skills/prompt-engineering-patterns/references/system-prompts.md +0 -189
  236. package/templates/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +0 -279
  237. package/templates/skills/python-packaging/SKILL.md +0 -870
  238. package/templates/skills/python-performance-optimization/SKILL.md +0 -869
  239. package/templates/skills/python-testing-patterns/SKILL.md +0 -907
  240. package/templates/skills/rag-implementation/SKILL.md +0 -403
  241. package/templates/skills/react-modernization/SKILL.md +0 -513
  242. package/templates/skills/react-native-architecture/SKILL.md +0 -671
  243. package/templates/skills/react-state-management/SKILL.md +0 -429
  244. package/templates/skills/risk-metrics-calculation/SKILL.md +0 -555
  245. package/templates/skills/rust-async-patterns/SKILL.md +0 -517
  246. package/templates/skills/secrets-management/SKILL.md +0 -346
  247. package/templates/skills/security-requirement-extraction/SKILL.md +0 -677
  248. package/templates/skills/security-review/SKILL.md +0 -78
  249. package/templates/skills/shellcheck-configuration/SKILL.md +0 -454
  250. package/templates/skills/similarity-search-patterns/SKILL.md +0 -558
  251. package/templates/skills/slo-implementation/SKILL.md +0 -329
  252. package/templates/skills/sql-optimization-patterns/SKILL.md +0 -493
  253. package/templates/skills/stripe-integration/SKILL.md +0 -442
  254. package/templates/skills/systematic-debugging/SKILL.md +0 -57
  255. package/templates/skills/tailwind-design-system/SKILL.md +0 -666
  256. package/templates/skills/temporal-python-testing/SKILL.md +0 -158
  257. package/templates/skills/temporal-python-testing/resources/integration-testing.md +0 -455
  258. package/templates/skills/temporal-python-testing/resources/local-setup.md +0 -553
  259. package/templates/skills/temporal-python-testing/resources/replay-testing.md +0 -462
  260. package/templates/skills/temporal-python-testing/resources/unit-testing.md +0 -328
  261. package/templates/skills/terraform-module-library/SKILL.md +0 -249
  262. package/templates/skills/terraform-module-library/references/aws-modules.md +0 -63
  263. package/templates/skills/test-driven-development/SKILL.md +0 -46
  264. package/templates/skills/threat-mitigation-mapping/SKILL.md +0 -745
  265. package/templates/skills/track-management/SKILL.md +0 -593
  266. package/templates/skills/typescript-advanced-types/SKILL.md +0 -717
  267. package/templates/skills/ui-ux-pro-max/SKILL.md +0 -352
  268. package/templates/skills/ui-ux-pro-max/data/charts.csv +0 -26
  269. package/templates/skills/ui-ux-pro-max/data/colors.csv +0 -97
  270. package/templates/skills/ui-ux-pro-max/data/icons.csv +0 -101
  271. package/templates/skills/ui-ux-pro-max/data/landing.csv +0 -31
  272. package/templates/skills/ui-ux-pro-max/data/products.csv +0 -97
  273. package/templates/skills/ui-ux-pro-max/data/prompts.csv +0 -24
  274. package/templates/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  275. package/templates/skills/ui-ux-pro-max/data/styles.csv +0 -59
  276. package/templates/skills/ui-ux-pro-max/data/typography.csv +0 -58
  277. package/templates/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  278. package/templates/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  279. package/templates/skills/ui-ux-pro-max/data/web-interface.csv +0 -31
  280. package/templates/skills/ui-ux-pro-max/scripts/core.py +0 -258
  281. package/templates/skills/ui-ux-pro-max/scripts/design_system.py +0 -547
  282. package/templates/skills/ui-ux-pro-max/scripts/search.py +0 -76
  283. package/templates/skills/uv-package-manager/SKILL.md +0 -831
  284. package/templates/skills/vector-index-tuning/SKILL.md +0 -521
  285. package/templates/skills/wcag-audit-patterns/SKILL.md +0 -555
  286. package/templates/skills/workflow-orchestration-patterns/SKILL.md +0 -316
  287. package/templates/skills/workflow-patterns/SKILL.md +0 -623
  288. package/templates/skills/writing-plans/SKILL.md +0 -64
@@ -1,513 +0,0 @@
1
- ---
2
- name: react-modernization
3
- description: Upgrade React applications to latest versions, migrate from class components to hooks, and adopt concurrent features. Use when modernizing React codebases, migrating to React Hooks, or upgrading to latest React versions.
4
- ---
5
-
6
- # React Modernization
7
-
8
- Master React version upgrades, class to hooks migration, concurrent features adoption, and codemods for automated transformation.
9
-
10
- ## When to Use This Skill
11
-
12
- - Upgrading React applications to latest versions
13
- - Migrating class components to functional components with hooks
14
- - Adopting concurrent React features (Suspense, transitions)
15
- - Applying codemods for automated refactoring
16
- - Modernizing state management patterns
17
- - Updating to TypeScript
18
- - Improving performance with React 18+ features
19
-
20
- ## Version Upgrade Path
21
-
22
- ### React 16 → 17 → 18
23
-
24
- **Breaking Changes by Version:**
25
-
26
- **React 17:**
27
- - Event delegation changes
28
- - No event pooling
29
- - Effect cleanup timing
30
- - JSX transform (no React import needed)
31
-
32
- **React 18:**
33
- - Automatic batching
34
- - Concurrent rendering
35
- - Strict Mode changes (double invocation)
36
- - New root API
37
- - Suspense on server
38
-
39
- ## Class to Hooks Migration
40
-
41
- ### State Management
42
- ```javascript
43
- // Before: Class component
44
- class Counter extends React.Component {
45
- constructor(props) {
46
- super(props);
47
- this.state = {
48
- count: 0,
49
- name: ''
50
- };
51
- }
52
-
53
- increment = () => {
54
- this.setState({ count: this.state.count + 1 });
55
- }
56
-
57
- render() {
58
- return (
59
- <div>
60
- <p>Count: {this.state.count}</p>
61
- <button onClick={this.increment}>Increment</button>
62
- </div>
63
- );
64
- }
65
- }
66
-
67
- // After: Functional component with hooks
68
- function Counter() {
69
- const [count, setCount] = useState(0);
70
- const [name, setName] = useState('');
71
-
72
- const increment = () => {
73
- setCount(count + 1);
74
- };
75
-
76
- return (
77
- <div>
78
- <p>Count: {count}</p>
79
- <button onClick={increment}>Increment</button>
80
- </div>
81
- );
82
- }
83
- ```
84
-
85
- ### Lifecycle Methods to Hooks
86
- ```javascript
87
- // Before: Lifecycle methods
88
- class DataFetcher extends React.Component {
89
- state = { data: null, loading: true };
90
-
91
- componentDidMount() {
92
- this.fetchData();
93
- }
94
-
95
- componentDidUpdate(prevProps) {
96
- if (prevProps.id !== this.props.id) {
97
- this.fetchData();
98
- }
99
- }
100
-
101
- componentWillUnmount() {
102
- this.cancelRequest();
103
- }
104
-
105
- fetchData = async () => {
106
- const data = await fetch(`/api/${this.props.id}`);
107
- this.setState({ data, loading: false });
108
- };
109
-
110
- cancelRequest = () => {
111
- // Cleanup
112
- };
113
-
114
- render() {
115
- if (this.state.loading) return <div>Loading...</div>;
116
- return <div>{this.state.data}</div>;
117
- }
118
- }
119
-
120
- // After: useEffect hook
121
- function DataFetcher({ id }) {
122
- const [data, setData] = useState(null);
123
- const [loading, setLoading] = useState(true);
124
-
125
- useEffect(() => {
126
- let cancelled = false;
127
-
128
- const fetchData = async () => {
129
- try {
130
- const response = await fetch(`/api/${id}`);
131
- const result = await response.json();
132
-
133
- if (!cancelled) {
134
- setData(result);
135
- setLoading(false);
136
- }
137
- } catch (error) {
138
- if (!cancelled) {
139
- console.error(error);
140
- }
141
- }
142
- };
143
-
144
- fetchData();
145
-
146
- // Cleanup function
147
- return () => {
148
- cancelled = true;
149
- };
150
- }, [id]); // Re-run when id changes
151
-
152
- if (loading) return <div>Loading...</div>;
153
- return <div>{data}</div>;
154
- }
155
- ```
156
-
157
- ### Context and HOCs to Hooks
158
- ```javascript
159
- // Before: Context consumer and HOC
160
- const ThemeContext = React.createContext();
161
-
162
- class ThemedButton extends React.Component {
163
- static contextType = ThemeContext;
164
-
165
- render() {
166
- return (
167
- <button style={{ background: this.context.theme }}>
168
- {this.props.children}
169
- </button>
170
- );
171
- }
172
- }
173
-
174
- // After: useContext hook
175
- function ThemedButton({ children }) {
176
- const { theme } = useContext(ThemeContext);
177
-
178
- return (
179
- <button style={{ background: theme }}>
180
- {children}
181
- </button>
182
- );
183
- }
184
-
185
- // Before: HOC for data fetching
186
- function withUser(Component) {
187
- return class extends React.Component {
188
- state = { user: null };
189
-
190
- componentDidMount() {
191
- fetchUser().then(user => this.setState({ user }));
192
- }
193
-
194
- render() {
195
- return <Component {...this.props} user={this.state.user} />;
196
- }
197
- };
198
- }
199
-
200
- // After: Custom hook
201
- function useUser() {
202
- const [user, setUser] = useState(null);
203
-
204
- useEffect(() => {
205
- fetchUser().then(setUser);
206
- }, []);
207
-
208
- return user;
209
- }
210
-
211
- function UserProfile() {
212
- const user = useUser();
213
- if (!user) return <div>Loading...</div>;
214
- return <div>{user.name}</div>;
215
- }
216
- ```
217
-
218
- ## React 18 Concurrent Features
219
-
220
- ### New Root API
221
- ```javascript
222
- // Before: React 17
223
- import ReactDOM from 'react-dom';
224
-
225
- ReactDOM.render(<App />, document.getElementById('root'));
226
-
227
- // After: React 18
228
- import { createRoot } from 'react-dom/client';
229
-
230
- const root = createRoot(document.getElementById('root'));
231
- root.render(<App />);
232
- ```
233
-
234
- ### Automatic Batching
235
- ```javascript
236
- // React 18: All updates are batched
237
- function handleClick() {
238
- setCount(c => c + 1);
239
- setFlag(f => !f);
240
- // Only one re-render (batched)
241
- }
242
-
243
- // Even in async:
244
- setTimeout(() => {
245
- setCount(c => c + 1);
246
- setFlag(f => !f);
247
- // Still batched in React 18!
248
- }, 1000);
249
-
250
- // Opt out if needed
251
- import { flushSync } from 'react-dom';
252
-
253
- flushSync(() => {
254
- setCount(c => c + 1);
255
- });
256
- // Re-render happens here
257
- setFlag(f => !f);
258
- // Another re-render
259
- ```
260
-
261
- ### Transitions
262
- ```javascript
263
- import { useState, useTransition } from 'react';
264
-
265
- function SearchResults() {
266
- const [query, setQuery] = useState('');
267
- const [results, setResults] = useState([]);
268
- const [isPending, startTransition] = useTransition();
269
-
270
- const handleChange = (e) => {
271
- // Urgent: Update input immediately
272
- setQuery(e.target.value);
273
-
274
- // Non-urgent: Update results (can be interrupted)
275
- startTransition(() => {
276
- setResults(searchResults(e.target.value));
277
- });
278
- };
279
-
280
- return (
281
- <>
282
- <input value={query} onChange={handleChange} />
283
- {isPending && <Spinner />}
284
- <Results data={results} />
285
- </>
286
- );
287
- }
288
- ```
289
-
290
- ### Suspense for Data Fetching
291
- ```javascript
292
- import { Suspense } from 'react';
293
-
294
- // Resource-based data fetching (with React 18)
295
- const resource = fetchProfileData();
296
-
297
- function ProfilePage() {
298
- return (
299
- <Suspense fallback={<Loading />}>
300
- <ProfileDetails />
301
- <Suspense fallback={<Loading />}>
302
- <ProfileTimeline />
303
- </Suspense>
304
- </Suspense>
305
- );
306
- }
307
-
308
- function ProfileDetails() {
309
- // This will suspend if data not ready
310
- const user = resource.user.read();
311
- return <h1>{user.name}</h1>;
312
- }
313
-
314
- function ProfileTimeline() {
315
- const posts = resource.posts.read();
316
- return <Timeline posts={posts} />;
317
- }
318
- ```
319
-
320
- ## Codemods for Automation
321
-
322
- ### Run React Codemods
323
- ```bash
324
- # Install jscodeshift
325
- npm install -g jscodeshift
326
-
327
- # React 16.9 codemod (rename unsafe lifecycle methods)
328
- npx react-codeshift <transform> <path>
329
-
330
- # Example: Rename UNSAFE_ methods
331
- npx react-codeshift --parser=tsx \
332
- --transform=react-codeshift/transforms/rename-unsafe-lifecycles.js \
333
- src/
334
-
335
- # Update to new JSX Transform (React 17+)
336
- npx react-codeshift --parser=tsx \
337
- --transform=react-codeshift/transforms/new-jsx-transform.js \
338
- src/
339
-
340
- # Class to Hooks (third-party)
341
- npx codemod react/hooks/convert-class-to-function src/
342
- ```
343
-
344
- ### Custom Codemod Example
345
- ```javascript
346
- // custom-codemod.js
347
- module.exports = function(file, api) {
348
- const j = api.jscodeshift;
349
- const root = j(file.source);
350
-
351
- // Find setState calls
352
- root.find(j.CallExpression, {
353
- callee: {
354
- type: 'MemberExpression',
355
- property: { name: 'setState' }
356
- }
357
- }).forEach(path => {
358
- // Transform to useState
359
- // ... transformation logic
360
- });
361
-
362
- return root.toSource();
363
- };
364
-
365
- // Run: jscodeshift -t custom-codemod.js src/
366
- ```
367
-
368
- ## Performance Optimization
369
-
370
- ### useMemo and useCallback
371
- ```javascript
372
- function ExpensiveComponent({ items, filter }) {
373
- // Memoize expensive calculation
374
- const filteredItems = useMemo(() => {
375
- return items.filter(item => item.category === filter);
376
- }, [items, filter]);
377
-
378
- // Memoize callback to prevent child re-renders
379
- const handleClick = useCallback((id) => {
380
- console.log('Clicked:', id);
381
- }, []); // No dependencies, never changes
382
-
383
- return (
384
- <List items={filteredItems} onClick={handleClick} />
385
- );
386
- }
387
-
388
- // Child component with memo
389
- const List = React.memo(({ items, onClick }) => {
390
- return items.map(item => (
391
- <Item key={item.id} item={item} onClick={onClick} />
392
- ));
393
- });
394
- ```
395
-
396
- ### Code Splitting
397
- ```javascript
398
- import { lazy, Suspense } from 'react';
399
-
400
- // Lazy load components
401
- const Dashboard = lazy(() => import('./Dashboard'));
402
- const Settings = lazy(() => import('./Settings'));
403
-
404
- function App() {
405
- return (
406
- <Suspense fallback={<Loading />}>
407
- <Routes>
408
- <Route path="/dashboard" element={<Dashboard />} />
409
- <Route path="/settings" element={<Settings />} />
410
- </Routes>
411
- </Suspense>
412
- );
413
- }
414
- ```
415
-
416
- ## TypeScript Migration
417
-
418
- ```typescript
419
- // Before: JavaScript
420
- function Button({ onClick, children }) {
421
- return <button onClick={onClick}>{children}</button>;
422
- }
423
-
424
- // After: TypeScript
425
- interface ButtonProps {
426
- onClick: () => void;
427
- children: React.ReactNode;
428
- }
429
-
430
- function Button({ onClick, children }: ButtonProps) {
431
- return <button onClick={onClick}>{children}</button>;
432
- }
433
-
434
- // Generic components
435
- interface ListProps<T> {
436
- items: T[];
437
- renderItem: (item: T) => React.ReactNode;
438
- }
439
-
440
- function List<T>({ items, renderItem }: ListProps<T>) {
441
- return <>{items.map(renderItem)}</>;
442
- }
443
- ```
444
-
445
- ## Migration Checklist
446
-
447
- ```markdown
448
- ### Pre-Migration
449
- - [ ] Update dependencies incrementally (not all at once)
450
- - [ ] Review breaking changes in release notes
451
- - [ ] Set up testing suite
452
- - [ ] Create feature branch
453
-
454
- ### Class → Hooks Migration
455
- - [ ] Identify class components to migrate
456
- - [ ] Start with leaf components (no children)
457
- - [ ] Convert state to useState
458
- - [ ] Convert lifecycle to useEffect
459
- - [ ] Convert context to useContext
460
- - [ ] Extract custom hooks
461
- - [ ] Test thoroughly
462
-
463
- ### React 18 Upgrade
464
- - [ ] Update to React 17 first (if needed)
465
- - [ ] Update react and react-dom to 18
466
- - [ ] Update @types/react if using TypeScript
467
- - [ ] Change to createRoot API
468
- - [ ] Test with StrictMode (double invocation)
469
- - [ ] Address concurrent rendering issues
470
- - [ ] Adopt Suspense/Transitions where beneficial
471
-
472
- ### Performance
473
- - [ ] Identify performance bottlenecks
474
- - [ ] Add React.memo where appropriate
475
- - [ ] Use useMemo/useCallback for expensive operations
476
- - [ ] Implement code splitting
477
- - [ ] Optimize re-renders
478
-
479
- ### Testing
480
- - [ ] Update test utilities (React Testing Library)
481
- - [ ] Test with React 18 features
482
- - [ ] Check for warnings in console
483
- - [ ] Performance testing
484
- ```
485
-
486
- ## Resources
487
-
488
- - **references/breaking-changes.md**: Version-specific breaking changes
489
- - **references/codemods.md**: Codemod usage guide
490
- - **references/hooks-migration.md**: Comprehensive hooks patterns
491
- - **references/concurrent-features.md**: React 18 concurrent features
492
- - **assets/codemod-config.json**: Codemod configurations
493
- - **assets/migration-checklist.md**: Step-by-step checklist
494
- - **scripts/apply-codemods.sh**: Automated codemod script
495
-
496
- ## Best Practices
497
-
498
- 1. **Incremental Migration**: Don't migrate everything at once
499
- 2. **Test Thoroughly**: Comprehensive testing at each step
500
- 3. **Use Codemods**: Automate repetitive transformations
501
- 4. **Start Simple**: Begin with leaf components
502
- 5. **Leverage StrictMode**: Catch issues early
503
- 6. **Monitor Performance**: Measure before and after
504
- 7. **Document Changes**: Keep migration log
505
-
506
- ## Common Pitfalls
507
-
508
- - Forgetting useEffect dependencies
509
- - Over-using useMemo/useCallback
510
- - Not handling cleanup in useEffect
511
- - Mixing class and functional patterns
512
- - Ignoring StrictMode warnings
513
- - Breaking change assumptions