mirror of
https://github.com/github/awesome-copilot.git
synced 2026-04-11 18:55:55 +00:00
- Adds React 18 and 19 migration orchestration plugins - Introduces comprehensive upgrade toolkits for migrating legacy React 16/17 and 18 codebases to React 18.3.1 and 19, respectively. Each plugin bundles specialized agents and skills for exhaustive audit, dependency management, class/component API migration, test suite transformation, and batching regression fixes. - The React 18 toolkit targets class-component-heavy apps, ensures safe lifecycle and context transitions, resolves dependency blockers, and fully automates test migrations including Enzyme removal. The React 19 toolkit addresses breaking changes such as removal of legacy APIs, defaultProps on function components, and forwardRef, while enforcing a gated, memory-resumable migration pipeline. - Both plugins update documentation, plugin registries, and skill references to support reliable, repeatable enterprise-scale React migrations.
142 lines
5.5 KiB
Markdown
142 lines
5.5 KiB
Markdown
# React 19 Audit - Complete Scan Commands
|
|
|
|
Run in this order. Each section maps to a phase in the react19-auditor.
|
|
|
|
---
|
|
|
|
## Phase 1 - Removed APIs (Breaking - Must Fix)
|
|
|
|
```bash
|
|
# 1. ReactDOM.render - REMOVED
|
|
grep -rn "ReactDOM\.render\s*(" \
|
|
src/ --include="*.js" --include="*.jsx" 2>/dev/null
|
|
|
|
# 2. ReactDOM.hydrate - REMOVED
|
|
grep -rn "ReactDOM\.hydrate\s*(" \
|
|
src/ --include="*.js" --include="*.jsx" 2>/dev/null
|
|
|
|
# 3. unmountComponentAtNode - REMOVED
|
|
grep -rn "unmountComponentAtNode" \
|
|
src/ --include="*.js" --include="*.jsx" 2>/dev/null
|
|
|
|
# 4. findDOMNode - REMOVED
|
|
grep -rn "findDOMNode\|ReactDOM\.findDOMNode" \
|
|
src/ --include="*.js" --include="*.jsx" 2>/dev/null
|
|
|
|
# 5. createFactory - REMOVED
|
|
grep -rn "createFactory\|React\.createFactory" \
|
|
src/ --include="*.js" --include="*.jsx" 2>/dev/null
|
|
|
|
# 6. react-dom/test-utils imports - most exports REMOVED
|
|
grep -rn "from 'react-dom/test-utils'\|from \"react-dom/test-utils\"\|require.*react-dom/test-utils" \
|
|
src/ --include="*.js" --include="*.jsx" 2>/dev/null
|
|
|
|
# 7. Legacy Context API - REMOVED
|
|
grep -rn "contextTypes\|childContextTypes\|getChildContext" \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." 2>/dev/null
|
|
|
|
# 8. String refs - REMOVED
|
|
grep -rn "this\.refs\." \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." 2>/dev/null
|
|
```
|
|
|
|
---
|
|
|
|
## Phase 2 - Deprecated APIs (Should Migrate)
|
|
|
|
```bash
|
|
# 9. forwardRef - deprecated (ref now direct prop)
|
|
grep -rn "forwardRef\|React\.forwardRef" \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." 2>/dev/null
|
|
|
|
# 10. defaultProps on function components - REMOVED for function components
|
|
grep -rn "\.defaultProps\s*=" \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." 2>/dev/null
|
|
|
|
# 11. useRef() without initial value
|
|
grep -rn "useRef()\|useRef( )" \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." 2>/dev/null
|
|
|
|
# 12. propTypes (runtime validation silently dropped)
|
|
grep -rn "\.propTypes\s*=" \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." | wc -l
|
|
|
|
# 13. react-test-renderer - deprecated
|
|
grep -rn "react-test-renderer\|TestRenderer" \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." 2>/dev/null
|
|
|
|
# 14. Unnecessary React default imports (new JSX transform)
|
|
grep -rn "^import React from 'react'" \
|
|
src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." 2>/dev/null
|
|
```
|
|
|
|
---
|
|
|
|
## Phase 3 - Test File Scans
|
|
|
|
```bash
|
|
# act() from wrong location
|
|
grep -rn "from 'react-dom/test-utils'" \
|
|
src/ --include="*.test.js" --include="*.test.jsx" \
|
|
--include="*.spec.js" --include="*.spec.jsx" 2>/dev/null
|
|
|
|
# Simulate usage - REMOVED
|
|
grep -rn "Simulate\." \
|
|
src/ --include="*.test.*" --include="*.spec.*" 2>/dev/null
|
|
|
|
# react-test-renderer in tests
|
|
grep -rn "from 'react-test-renderer'" \
|
|
src/ --include="*.test.*" --include="*.spec.*" 2>/dev/null
|
|
|
|
# Spy call count assertions (may need StrictMode delta updates)
|
|
grep -rn "toHaveBeenCalledTimes" \
|
|
src/ --include="*.test.*" --include="*.spec.*" | head -20 2>/dev/null
|
|
|
|
# console.error call count assertions (React 19 error reporting change)
|
|
grep -rn "console\.error.*toHaveBeenCalledTimes\|toHaveBeenCalledTimes.*console\.error" \
|
|
src/ --include="*.test.*" --include="*.spec.*" 2>/dev/null
|
|
```
|
|
|
|
---
|
|
|
|
## Phase 4 - StrictMode Behavioral Changes
|
|
|
|
```bash
|
|
# StrictMode usage
|
|
grep -rn "StrictMode\|React\.StrictMode" \
|
|
src/ --include="*.js" --include="*.jsx" 2>/dev/null
|
|
|
|
# Spy assertions that may be affected by StrictMode double-invoke change
|
|
grep -rn "toHaveBeenCalledTimes\|\.mock\.calls\.length" \
|
|
src/ --include="*.test.*" --include="*.spec.*" 2>/dev/null
|
|
```
|
|
|
|
---
|
|
|
|
## Full Summary Script
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
echo "=============================="
|
|
echo "React 19 Migration Audit Summary"
|
|
echo "=============================="
|
|
echo ""
|
|
echo "REMOVED APIs (Critical):"
|
|
echo " ReactDOM.render: $(grep -rn "ReactDOM\.render\s*(" src/ --include="*.js" --include="*.jsx" | wc -l | tr -d ' ') hits"
|
|
echo " ReactDOM.hydrate: $(grep -rn "ReactDOM\.hydrate\s*(" src/ --include="*.js" --include="*.jsx" | wc -l | tr -d ' ') hits"
|
|
echo " unmountComponentAtNode: $(grep -rn "unmountComponentAtNode" src/ --include="*.js" --include="*.jsx" | wc -l | tr -d ' ') hits"
|
|
echo " findDOMNode: $(grep -rn "findDOMNode" src/ --include="*.js" --include="*.jsx" | wc -l | tr -d ' ') hits"
|
|
echo " react-dom/test-utils: $(grep -rn "from 'react-dom/test-utils'" src/ --include="*.js" --include="*.jsx" | wc -l | tr -d ' ') hits"
|
|
echo " Legacy context: $(grep -rn "contextTypes\|childContextTypes\|getChildContext" src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." | wc -l | tr -d ' ') hits"
|
|
echo " String refs: $(grep -rn "this\.refs\." src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." | wc -l | tr -d ' ') hits"
|
|
echo ""
|
|
echo "DEPRECATED APIs:"
|
|
echo " forwardRef: $(grep -rn "forwardRef" src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." | wc -l | tr -d ' ') hits"
|
|
echo " defaultProps (fn comps): $(grep -rn "\.defaultProps\s*=" src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." | wc -l | tr -d ' ') hits"
|
|
echo " useRef() no arg: $(grep -rn "useRef()" src/ --include="*.js" --include="*.jsx" | grep -v "\.test\." | wc -l | tr -d ' ') hits"
|
|
echo ""
|
|
echo "TEST FILE ISSUES:"
|
|
echo " react-dom/test-utils: $(grep -rn "from 'react-dom/test-utils'" src/ --include="*.test.*" --include="*.spec.*" | wc -l | tr -d ' ') hits"
|
|
echo " Simulate usage: $(grep -rn "Simulate\." src/ --include="*.test.*" | wc -l | tr -d ' ') hits"
|
|
```
|